[STM32F1] 485方向脚导致卡死

[复制链接]
 楼主| huangchui 发表于 2022-12-4 13:11 | 显示全部楼层 |阅读模式
MAX485+STM32F103。

主机设备数据量偶尔会很大且无间隔。当从机设备回复的时候方向脚置为发送使能,然后启动发送,发送完成进入中断函数将方向脚改为接收使能。但是由于主机设备数据很大,会发生数据碰撞,从而导致从机无法进入发送完成中断,从而导致方向脚无法翻转为接收,从而导致接收中断无法再触发。
supernan 发表于 2022-12-4 13:15 | 显示全部楼层

还有什么现象?能再详细描述下吗?
 楼主| huangchui 发表于 2022-12-4 13:17 | 显示全部楼层
我目前在应用层加了很多判断条件,能够降低触发的概率,但是仍会有极低的概率触发。
llljh 发表于 2022-12-4 13:19 | 显示全部楼层
请教应该怎样处理方向脚的编程,从而从根本上解决这个问题。
llljh 发表于 2022-12-4 13:21 | 显示全部楼层
再就是为什么485总线的数据碰撞会导致uart发送时无法进入中断。
xxrs 发表于 2022-12-4 13:25 | 显示全部楼层
我猜测大概率是一直在串口中断里面
happy_10 发表于 2022-12-4 13:27 | 显示全部楼层
应该是没有用modbus
chenho 发表于 2022-12-4 13:29 | 显示全部楼层
只是单纯的双方收发数据
lizye 发表于 2022-12-4 13:33 | 显示全部楼层
上modbus就好了。
jiaxw 发表于 2022-12-4 13:34 | 显示全部楼层
你的意思是在发一串数据的中间使能了接收且收到了数据?
jiajs 发表于 2022-12-4 13:37 | 显示全部楼层
接收数据时清除了发送完成中断标志?那就是接收程序的问题了.
chuxh 发表于 2022-12-4 13:39 | 显示全部楼层
一般也不能这样搞啊,要发完一帧之后再使能接收啊.
pengf 发表于 2022-12-4 13:44 | 显示全部楼层
或者用硬件:
219638c33bc43706.png
supernan 发表于 2022-12-4 13:46 | 显示全部楼层
电容整小一点
zhenykun 发表于 2022-12-4 13:48 | 显示全部楼层
就是modbus 但是各家程序对于时序处理不严谨导致的  目前主机没办法改  让我的从机改。
SantaBunny 发表于 2022-12-6 13:10 | 显示全部楼层
大概率是一直在串口中断里面
tpgf 发表于 2023-1-4 14:41 | 显示全部楼层
为什么会无间隔呢 这样会导致数据卡死
wowu 发表于 2023-1-4 14:49 | 显示全部楼层
及时数据的波特率比较慢 也需要在数据包之间加延时
xiaoqizi 发表于 2023-1-4 14:59 | 显示全部楼层
如果不能改主机程序的话  那么对从机的压力就太大了
木木guainv 发表于 2023-1-4 15:10 | 显示全部楼层
huangchui 发表于 2022-12-4 13:17
我目前在应用层加了很多判断条件,能够降低触发的概率,但是仍会有极低的概率触发。
...

判定条件越是负责  执行效率就越低啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

918

主题

12323

帖子

4

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