[应用相关] 485总线的收发切换时间(转载)

[复制链接]
 楼主| heimaojingzhang 发表于 2019-6-18 13:26 | 显示全部楼层 |阅读模式
使用STM32进行485程序设计时,采用中断进行发数,这就意味着在发数的同时还需考虑收发切换时间。先看下程序:

        while (1)
        {       
                Target.HAL.CommonUart.SetWorkingMode(2);
                Target.HAL.CommonUart.SendData(Target.HAL.CommonUart.Buffer, 1);
                Target.Delayms(4);
                Target.HAL.CommonUart.SetWorkingMode(1);
                Target.HAL.WorkingLed.Turn();       
                Target.Delayms(100);
        }


 楼主| heimaojingzhang 发表于 2019-6-18 13:26 | 显示全部楼层
程序执行完SendData后,会立刻执行后续的语句,如果没有4ms的延时,此时程序就会把485的状态切换到接收状态,则刚才要发送的数据是发送不出去的。

为了能将数据正常发送出去,执行SendData后,需延时1定的时间才可以,到底需要延时多长时间呢?这就要计算执行完SendData后,数据多长时间发送完毕。

我现在设置的串口波特率是2400bps,发送1字节的时间=1/2400*8=3.3ms。这是延时的最短时间,再加上其它的时耗,进行4ms延时比较稳妥。

如果是多个数据,则需用4ms*数据长度,这样就能保证发送的可靠性了。


643757107 发表于 2019-6-18 20:30 | 显示全部楼层
多谢分享。
 楼主| heimaojingzhang 发表于 2019-7-4 15:50 | 显示全部楼层
非常感谢支持
wowu 发表于 2019-7-8 11:55 | 显示全部楼层

非常感谢楼主分享
木木guainv 发表于 2019-7-8 11:58 | 显示全部楼层

非常感谢楼主分享
51xlf 发表于 2019-7-8 21:23 | 显示全部楼层
收发过程不能同时进行。  
i1mcu 发表于 2019-7-8 21:23 | 显示全部楼层
RS-485收发的零延时转换电路  
pmp 发表于 2019-7-8 21:24 | 显示全部楼层
发送和接收切换开关需要控制  
mmbs 发表于 2019-7-8 21:25 | 显示全部楼层
买到的485转换器的收发切换是硬件自动完成的  
1988020566 发表于 2019-7-8 21:25 | 显示全部楼层
自动收发转换电路常用于RS232转RS485模块上
lzbf 发表于 2019-7-8 21:25 | 显示全部楼层
RS485传输距离随着波特率越高,其传输距离越短  
youtome 发表于 2019-7-8 21:26 | 显示全部楼层
谢谢楼主分享的资料了。      
cemaj 发表于 2019-7-8 21:26 | 显示全部楼层
heimaojingzhang 发表于 2019-6-18 13:26
程序执行完SendData后,会立刻执行后续的语句,如果没有4ms的延时,此时程序就会把485的状态切换到接收状态 ...

发送的可靠性很高吗?  
biechedan 发表于 2019-7-8 21:26 | 显示全部楼层
heimaojingzhang 发表于 2019-6-18 13:26
程序执行完SendData后,会立刻执行后续的语句,如果没有4ms的延时,此时程序就会把485的状态切换到接收状态 ...

据多长时间发送完毕?      
sanfuzi 发表于 2019-7-8 21:27 | 显示全部楼层
谢谢您的资料。     
lzbf 发表于 2019-7-8 21:27 | 显示全部楼层
实现UART 转RS485功能了吗?  
51xlf 发表于 2019-7-8 21:27 | 显示全部楼层
收发转换需要一定的时间   
1988020566 发表于 2019-7-8 21:27 | 显示全部楼层
485可以支持多个设备轮询   
i1mcu 发表于 2019-7-8 21:27 | 显示全部楼层
送完毕后需要延时至少4个字节时间  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

106

主题

4333

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部