亿年回响 发表于 2025-5-31 09:31

RS485方向转换引脚大家都怎么实现的?串口完成中断不好使

RS485方向转换引脚大家都怎么实现的?串口完成中断不好使APM32F103芯片是的Uart外设没有实现RS485方向引脚的硬件控制,所以要使用软件控制的方式。我在使用串口发送完成中断触发后,在中断处理函数里面做方向切换,我发现存在一定的概率RS485数据发送不完全,即丢失最后一个字节的数据。但如果我在发送完成中断后延迟1ms,则RS485的数据发送正常,而且稳定。这1ms的延迟对我的项目的影响几乎没有,所以项目现在正常推进,但我想了解一下大家如何处理?我本身不希望添加这种延迟在系统里面。先谢谢各位了


星云避风港 发表于 2025-5-31 14:39

要添加延迟。
中断完成只得是MCU已完成,并不是指得数据发送完成。

OceanGaze 发表于 2025-6-3 19:16

我是通过状态机的方式来处理。
不让两次发送背靠背就行了。

chenjun89 发表于 2025-6-4 08:15

可以由软件控制,也可以靠硬件自动实现。

HeartbeatEcho 发表于 2025-6-4 16:23

使用自动切换的电路来设计。
在低速率下面效果不错的。

座机呀 发表于 2025-6-4 22:32

最理想的是用硬件定时器延时3.5T
定时器不富裕的话就用软件定时器,适合9600这种慢速的
我一般都用TC中断执行IO口置低的回调,38400波特率没什么问题

weifeng90 发表于 2025-6-5 08:01

可以直接利用收发信号实现硬件方向的收发控制,不一定需要MCU专门的硬件控制IO的。

SpiritSong 发表于 2025-6-5 09:52

座机呀 发表于 2025-6-4 22:32
最理想的是用硬件定时器延时3.5T
定时器不富裕的话就用软件定时器,适合9600这种慢速的
我一般都用TC中断执 ...

没有必要延时这么久吧

SpiritSong 发表于 2025-6-5 09:54

发送前检查总线状态。
即在发送完成后,人为添加延时标志位。

座机呀 发表于 2025-6-5 16:15

SpiritSong 发表于 2025-6-5 09:52
没有必要延时这么久吧

搞混了,搞成断包了

幻影书记 发表于 2025-6-5 16:34

对于F103这种没有RS485驱动引脚控制的MCU,还是尽量使用自动收发切换电路。
做隔离设计时,也省一个隔离引脚

latera 发表于 2025-6-7 23:23

发送结束,先延时一下
页: [1]
查看完整版本: RS485方向转换引脚大家都怎么实现的?串口完成中断不好使