8457|9

40

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32的485通信问题 [复制链接]

请教各位大侠,RS485接口进行收发数据时就最后一位无法接收这是为什么呀,串口助手上显示接收数和发送数是一样的,我用十六进制查看,最后一位也确实接收到了,不过不是我发的数,而是FD或者FF,有人碰到过这情况么
此帖出自stm32/stm8论坛

最新回复

呵呵,问题解决了就好。  详情 回复 发表于 2011-4-2 18:34
点赞 关注(1)
 

回复
举报

2131

帖子

0

TA的资源

至上芯片

沙发
 

回复 楼主 霜天 的帖子

调试一下,看看发送的数据与长度 是否正确,串口中收到的是什么内容
是否是发送长度有问题
此帖出自stm32/stm8论坛
 
个人签名处处留心皆学问!
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
长度没有问题,收发的数据长度是相同的,如果我发的是123,RX=TX=3,可是显示的时候就只有12。我用16进制查看,是31 32 FF。我是用数组去接收数据的,然后用for循环通过usart_sendbyte函数一个个的发出来的。可就是最后一位发的数据不对。我想中断那肯定没什么问题,因为我的接收数组长度是与发过去的数据相同的。那应该是最后一位USART->DR里面的数据不是我发的值,而是FF。这情况我没遇到过,做232通信的时候这程序收发还很好的
此帖出自stm32/stm8论坛
 
 

回复

1万

帖子

139

TA的资源

版主

4
 
注意485接口片的收发使能切换要在最后一个字节发送完成后适当延时,一般至少取数百微秒,同样,收发状态切换后也要留取时间,通常总间隔时间的小值不要低于1毫秒。
此帖出自stm32/stm8论坛
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

5
 
这是485常见问题,原因是你使用的485模块或电路设计缺陷。造成此问题的原因是485收发端切换时会有高阻态转换,造成电路震荡。解决此问题的办法有两种。一种是延时,不同的电路延时不同,一般延时上百毫秒可以错过此震荡。另一种方式是协商一个结束字节。在一串数发送结束时多补两到三个结束字节判断结束。
此帖出自stm32/stm8论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

6
 
我是用数组先接收数据的,然后加入一个延时函数我都Delay(0xFFFF)了,再切换到发送状态进行发送的。应该已经满足你说的条件了的,就这样最后一个字节接收到了,但16进制显示最后一个字节是FF
此帖出自stm32/stm8论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 5楼 leang521 的帖子

你说的协商一个结束字节我试过了是可以的,但是我这要求是RX=TX;而且是发什么要收什么。至于延时,我现在基本到处都试过加延时函数了。就是最后一个字节上很搞的,我单步调试的时候可以接收的,可烧写后就是无法接收。
此帖出自stm32/stm8论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

8
 

问题貌似出在这里

void UART3_SendByte(u16 Data)
{  
   Delay(0xFFFF);                                         
   GPIO_SetBits(GPIOD, GPIO_Pin_7);
   while (!(USART3->SR & USART_FLAG_TC));
   USART3->DR = (Data & (uint16_t)0x01FF);         
}
我发送的数据已经全部存到数组里了,就是接收数组里的数据时,数组里的最后一位数一直是FF或FD或FE。这程序哪有问题么
此帖出自stm32/stm8论坛
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

9
 

问题已解决,谢谢各位大侠!

我发送状态到接收状态加了延时函数,但从接收状态再到发送状态忘了加延时函数了,SB了...高手就是高手呀,一语见地!
此帖出自stm32/stm8论坛
 
 
 

回复

1万

帖子

139

TA的资源

版主

10
 
呵呵,问题解决了就好。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表