OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 半双工RS485总线收发切换延时问题

共5条 1/1 1 跳转至

半双工RS485总线收发切换延时问题

工程师
2020-08-09 23:18:06    评分

这几天在调试STM32F407的485总线,有个问题没弄明白,问一下,可能我的问题有问题,不要见怪我用的波特率是57600,发送一个字节是10波特,发送1波特17点几微秒,发送一个字节10波特不到180微秒。


我的部分程序如下:
delay_us(20);
USART1->DR=u2;
delay_us(180);
USART1->CR1&=~(1<<3);            //关发送rxd;


接收数据,延时20微秒,再发送u2,u2=2,rxd是切换485芯片至接收模式,现在的问题是:监控线上数据,如果延时180微秒,第一次监控到的数据是2,然后是0xFF,延时至260微秒,监控到的数据是0xE2,延时360微秒,监控到的数据才是2,我搞不明白,发送一个字节用不到180微秒,为什么要延时360微秒才能正确接受呢?





关键词: RS485     总线     485     RS-485     STM32    

专家
2020-08-10 10:04:03    评分
2楼

硬件接收命令,处理命令,执行操作,操作完成等几步是需要时间的。

所以……


助工
2020-08-10 23:09:28    评分
3楼

第一读寄存器判断数据是否发送完成比延时来的靠谱。第二切换收发无需关闭发送控制485芯片的收发即可。最重要的485要用主从模式。


工程师
2020-08-10 23:14:14    评分
4楼

你这种用delay延时太特么对不起你用的407了,辣莫快的速度被你浪费不说,还会招来收发数据丢失的BUG。

使用发送完中断,在最后一个字节发完之后,立即切换到接收状态,包你高枕无忧,否则你毛估估的发送延时,如果遇上对方快速响应,485总线就会争抢了。


助工
2020-08-10 23:23:47    评分
5楼

示波器接上直接看看485方向控制信号以及收发信号


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]