RS485调试踩坑:使能延迟与传输延迟

文章讲述了在STM32F103RBT6平台上使用485芯片时遇到的问题,通过排查发现由于半工通讯模式下的使能延迟和不正确的波特率设置导致接收数据失败。解决方法是调整传输前后添加适当的延迟以适应芯片特性。
摘要由CSDN通过智能技术生成

背景:

平台:STM32F103RBT6,带隔离的485芯片,一个脚为使能脚,高电平发送数据,低电平接收数据,软件通讯层无任何通讯协议,硬件层TTL转485。

1.第一次程序是使用轮询的方式,调用485程序,发现接收或者发送均有问题。

2.第二次使用的时候,使用中断,发送,接收,两个功能不能同时存在。

使用usb转TTL模块查看原因发现,串口可以正常使用,因此基础程序没用配错。查找了一切硬件因数发现无任何问题。                                                 

为此查看了芯片和485逻辑电平信号

原因排查

485为半工通讯和平常我们使用的全工协议不一样,通过查阅芯片手册后发现,RS485内部逻辑切换需要一定时间。

芯片从接收模式,切换到发送模式,需要经过3.5uS才能有驱动能力输出。如果换向后总线马上送出数据而不延迟,有3.5uS时间总线AB是没有驱动能力的,还是处于高阻状态串口协议起始标志是TX由高到低跳变,如果不考虑改值,将会损失该占空比。

原因分析

主要原因是因为我切换管脚太早了,忽略芯片的使能延迟,所以接收不到数据。从而导致波特率误差变大,波特率越大损失越明显。

后续测试,波特率越小,我的软件延迟时间就可以越小

PS:补充,解决方案,就是在传输之前,传输之前提前切换,传输之后延长后切换,即前后传输数据前后都要加延迟

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值