stm32的串口5接485,115200波特率导致死机,9600却没事,求助!!

2019-12-27 18:59发布

本帖最后由 guxingganyue 于 2012-11-22 09:34 编辑

如题,我用stm32f103VET6的串口5和485通信,串口每次向485发送150字节,上位机每个1秒发一条命令,串口收到后就向485发送150字节

目前的现象是115200波特率的话,单片机会死机(lcd屏幕不刷新了),但是定时器中断还能触发(led灯在闪烁),26秒后内部狗复位,一切恢复正常

上位机继续发命令,不到3分钟的时间单片机死了

但是我用9600的波特率通信,1秒发一次命令,测试了1个晚上机器也没有死机

1、单片机和上位机间的连线不是很长,就2米左右,485芯片为:max3485,贵的那种
2、stm32外接8M晶振,系统跑72M

下面是485的连接图:请高手指教

注:把那个120欧姆的电阻去掉与否现象一样

111.png (38.89 KB, 下载次数: 0) 下载附件 2012-11-22 09:32 上传

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
37条回答
heky
1楼-- · 2019-12-31 06:37
典型性问题
串口优先级低于定时中断,造成115200波特率时候,2个数据塞死串口,这是stm32的bug。

办法有很多,1.串口优先级最高 2.用dma接收,你管他数据是啥。收回来了再分析,看你的串口接收部分,蛋疼。
xjjiang
2楼-- · 2019-12-31 12:21
楼主电路设计不合理哦,接多个设备每个设备都有4.7K的上下拉电阻吗?是否考虑过最远端设备是否能得到足够的电压呢?
guxingganyue
3楼-- · 2019-12-31 12:58
 精彩回答 2  元偷偷看……
guxingganyue
4楼-- · 2019-12-31 17:46
xjjiang 发表于 2012-11-23 11:35
楼主电路设计不合理哦,接多个设备每个设备都有4.7K的上下拉电阻吗?是否考虑过最远端设备是否能得到足够的 ...

嗯,最多接32个设备,,每个上面都有上、下拉电阻,但120欧姆不是每个都有
TigerRay
5楼-- · 2019-12-31 22:12
看到你的发送函数,还有接收函数来的,里的工作那么多,这样怎么会不慢的,要是上一个数据还没有发完的话,你又来数据怎么会不死机的来的,还有一个问题,要是数据在固定的,怎么不用DMA来操作!方便好使,处理器有更多的时间去搞其它的事,不用一直在那里等起1
xjjiang
6楼-- · 2020-01-01 01:15
guxingganyue 发表于 2012-11-23 12:11
嗯,最多接32个设备,,每个上面都有上、下拉电阻,但120欧姆不是每个都有 ...

120ohm电阻,首尾各一个,楼主可能要多看485方面的资料,120ohm电阻用途是什么?485芯片AB线电压范围,接合实际,最多设备(电阻并联)电压是否能达到485芯片的输出,原理上搞明白了,其它就没什么了

一周热门 更多>