[STM32F4] RS485运行一段时间后挂了

[复制链接]
 楼主| pangb 发表于 2020-6-21 20:22 | 显示全部楼层 |阅读模式
本帖最后由 pangb 于 2020-6-21 20:28 编辑

现有主机和从机两个。主机单独运行485去读取两个从机的数据是完全没有问题的。(代码是量产产品上用的)
现在我加入了几个定时器在定时器中采集spi的数据。
运行一段时间后485就挂了

liuzaiy 发表于 2020-6-21 20:28 | 显示全部楼层
多长时间
 楼主| pangb 发表于 2020-6-21 20:31 | 显示全部楼层
10几分钟左右
kangzj 发表于 2020-6-21 20:34 | 显示全部楼层
网上查
 楼主| pangb 发表于 2020-6-21 20:42 | 显示全部楼层
利用其方法修改后确实运行时间长了一些 大概在半个小时到1个小时左右。还是会挂了
yufe 发表于 2020-6-21 20:46 | 显示全部楼层
主程序和spi采集都没有挂
wangzsa 发表于 2020-6-21 20:52 | 显示全部楼层
有没有出现互相竞争的情况
stly 发表于 2020-6-21 20:55 | 显示全部楼层
估计是中断中spi采集数据时间过长,导致串口接收溢出错误。
1, 清理溢出错误。
2.   把中断中耗时的操作放到主循环中
wenfen 发表于 2020-6-21 20:58 | 显示全部楼层
我怀疑是spi程序那块的问题
chenho 发表于 2020-6-21 21:02 | 显示全部楼层
想办法记录日志,
mmuuss586 发表于 2020-6-22 09:34 | 显示全部楼层
加新的功能不行了,那就是程序逻辑哪里问题
taobaofarmer 发表于 2020-6-22 13:12 | 显示全部楼层
这个问题我N年前就遇到了,你是用IO口控制485的吧,这个问题是无正解的,明明IO控制485方向的逻辑是很简单清晰的,但就是运行一段儿时间之后方向控制引脚被莫名置为了输出状态,我的解决办法是在主程序里加一个状态查询,每隔100ms查询一下串口发送缓冲区中有没有数据,如果没有数据,则强制置485方向控制引脚为输入状态
東南博士 发表于 2020-6-23 16:10 | 显示全部楼层
taobaofarmer 发表于 2020-6-22 13:12
这个问题我N年前就遇到了,你是用IO口控制485的吧,这个问题是无正解的,明明IO控制485方向的逻辑是很简单 ...

还有这种骚操作啊?

这个想法倒是很好!

不过我一向用的都是 自动控制收发引脚的隔离模块!效果会更好!
taobaofarmer 发表于 2020-6-24 10:38 | 显示全部楼层
你是某宝买的吧
llljh 发表于 2020-6-26 09:37 | 显示全部楼层
你的接收的数据太快太多,导致接收出错,过载了,可以加个查询错误,然后清理接收缓存看看
renyaq 发表于 2020-6-26 09:40 | 显示全部楼层
硬件挂了?
 楼主| pangb 发表于 2020-6-26 09:43 | 显示全部楼层
通讯的可靠性 也还是一个头痛的问题, 比如硬件有干扰啥的  考虑的问题点就多了,  没传过去,得再传.
kangzj 发表于 2020-6-26 09:46 | 显示全部楼层
你首先看串口 是不是还有数据出来 其次再是看RS485差分信号 有没有
langgq 发表于 2020-6-26 09:51 | 显示全部楼层
程序不严谨吧
 楼主| pangb 发表于 2020-6-26 09:54 | 显示全部楼层
调试发现是485上数据一直有的,只是接收到的错误帧,不知道为什么没有进入判断的条件重新接收数据,加了几个判断条件,现在可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

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