OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6161|回复: 8

串口4发送和接受的数据不一样,

[复制链接]

138

主题

362

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2012-9-17
在线时间
29 小时
发表于 2015-9-2 11:26:35 | 显示全部楼层 |阅读模式
5金钱
是这样的,我用串口4向PC发送数据,用的是这一条语句:UART4->DR=0x0A;   但是串口调试助手上接受到的数据却是 E6 00,
明显是波特率没对上,但是,请看图:




应该都对应上了,为什么数据接受会错误呢?

顺便让大家看看我的串口4初始化程序:
void uart4_init(u32 pclk1,u32 bound)
{    
float temp;
u16 mantissa;
u16 fraction;   
temp=(float)(pclk1*1000000)/(bound*16);//得到USARTDIV
mantissa=temp; //得到整数部分
fraction=(temp-mantissa)*16; //得到小数部分  
    mantissa<<=4;
mantissa+=fraction; 

RCC->APB2ENR|=1<<3;   //使能PORTB口时钟    B.8输出控制485芯片的读和写。
  GPIOB->CRH&=0XFFFFFFF0; //IO状态设置
GPIOB->CRH|=0X00000003; //IO状态设置  

RCC->APB2ENR|=1<<4;   //使能PORTC口时钟  
GPIOC->CRH&=0XFFFF00FF; //IO状态设置
GPIOC->CRH|=0X00008B00; //IO状态设置  

RCC->APB1ENR|=1<<19;   //使能串口时钟 
 
RCC->APB1RSTR|=1<<19;   //复位串口4
RCC->APB1RSTR&=~(1<<19);//停止复位     
//波特率设置
  UART4->BRR=mantissa; // 波特率设置  
UART4->CR1|=0X200C;   //1位停止,无校验位.
#ifdef EN_UART4_RX   //如果使能了接收
//使能接收中断
UART4->CR1|=1<<8;     //PE中断使能
UART4->CR1|=1<<5;     //接收缓冲区非空中断使能    
MY_NVIC_Init(2,0,UART4_IRQChannel,2);   //组3,抢占优先级2   子优先级0
#endif

}

最佳答案

查看完整内容[请看2#楼]

 现在找到原因了,我跳过485芯片,直接从单片机的引脚上接收TTL电平信号,是正确的,问题出在MAX487芯片上,但是我换过芯片了,还是这样,为什么这个芯片会出问题呢? 下面上图, 这个图有问题么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

138

主题

362

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2012-9-17
在线时间
29 小时
 楼主| 发表于 2015-9-2 11:26:36 | 显示全部楼层
 现在找到原因了,我跳过485芯片,直接从单片机的引脚上接收TTL电平信号,是正确的,问题出在MAX487芯片上,但是我换过芯片了,还是这样,为什么这个芯片会出问题呢? 下面上图,


这个图有问题么?
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2015-9-2 12:02:27 | 显示全部楼层
你要看下串口4的时钟和串口1的在一个总线上吗
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复

使用道具 举报

138

主题

362

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2012-9-17
在线时间
29 小时
 楼主| 发表于 2015-9-2 12:15:43 | 显示全部楼层
回复【2楼】ST-FAE-SALE:
---------------------------------
不在一个总线,串口4用的是pclk1,串口1用的是pclk2.
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-7-20
在线时间
4 小时
发表于 2015-9-2 14:07:39 | 显示全部楼层
用其他串口通信软件也是如此吗
年轻不要吧钱看的太重要。
回复

使用道具 举报

138

主题

362

帖子

0

精华

高级会员

Rank: 4

积分
997
金钱
997
注册时间
2012-9-17
在线时间
29 小时
 楼主| 发表于 2015-9-2 14:10:51 | 显示全部楼层
回复【4楼】啊凯:
---------------------------------
换了软件,也换了串口线,还是不行
回复

使用道具 举报

3

主题

401

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1770
金钱
1770
注册时间
2015-6-11
在线时间
313 小时
发表于 2015-9-2 16:24:38 | 显示全部楼层
RS485 D-和D+之间不能够接电阻,也就是R27不对,应该换成SMBJ或者中间不连接
 你接电阻两个引脚会互相干扰的!
回复

使用道具 举报

2

主题

14

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-7-30
在线时间
0 小时
发表于 2015-9-11 20:47:24 | 显示全部楼层
我也遇到过,ttl和485的就是不一样的,单片机的就是ttl,你想看485的就拿9芯的rs485线接了看,数据就是对的了
回复

使用道具 举报

37

主题

181

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
485
金钱
485
注册时间
2015-5-5
在线时间
34 小时
发表于 2015-10-20 12:20:24 | 显示全部楼层
你的串口4 收发函数是什么?发一个串口4 的工程给我吧
弹起华丽的乐章 撕下最后的伪装
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 20:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表