在低波特率下使用RS-485总线的一个小技巧

在低波特率下使用RS-485总线的一个小技巧
关注 | 2…
问题说明:

我在STM32F030下使用SP3485接口芯片,配置RS-485总线波特率为1200bps。在使用过程中我发现程序可以接收数据,但无法发送数据。

问题解决方案:

最终我发现问题出在程序的发送部分。

原始发送部分的代码如下:

REDEHIGH;

HAL_UART_Transmit_IT(&huart1,(uint8_t *)&ucMbsBuf,SendLng); 

REDELOW;

首先我上拉SP3485的RE_DE引脚以使芯片进入发送模式,接下来进行发送,最后下拉RE_DE引脚进入接收模式。这在逻辑上完全说得通,并且在高波特率下并没有出任何问题。然而在低波特率下,这会直接导致数据发不出去。

出现此问题的原因在于,尽管程序已经执行到REDELOW这一行,但实际上外设并没有完成发送,而程序又强制的拉低了RE_DE引脚致使芯片进入到接收模式。

解决办法我想你们已经知道了。

在1200bps下发送一个bit大约需要830us,发送一个byte需要约6.6ms,我有30个byte要发那么就需要198ms。对于一个主频48MHz的单片机来说,这实在太慢了!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值