你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

串口通讯偶尔出现故障,不能自行恢复,如何解决

[复制链接]
scfor123456 提问时间:2020-6-22 09:35 /
跟上位机实时跟MCU进行串口通讯,偶尔上位机报通讯数据错误,后续无法恢复一直报故障,上位机重启也是如此,但MCU其他的功能都是正常的,MCU重启就好了,这个现象出现的机率很低,但总是个隐患
收藏 评论6 发布时间:2020-6-22 09:35

举报

6个回答
yklstudent 回答时间:2020-6-22 16:34:57
这个需要确认是串口怪了还是协议处理挂了
两个问题,分别处理,在线模拟故障然后分析原因
scfor123456 回答时间:2020-6-22 17:46:17
yklstudent-1794 发表于 2020-6-22 16:34
这个需要确认是串口怪了还是协议处理挂了
两个问题,分别处理,在线模拟故障然后分析原因 ...

以前也发现过类型问题,状态寄存器中某个错误位出错了,自行复位不了
scfor123456 回答时间:2020-6-22 18:22:32
        if(USART2->ISR&0x07)
        {
                USART2->ICR=0x07;
               
                scicommflg.all=0;
                scidata.SciRxcnt=0;
                scidata.SciTxcnt=0;
                scidata.SciRxrecord=0;
//                USART2_Init_Config();//键盘通讯
                temp = USART2->RDR;
                return;               
        }
yklstudent 回答时间:2020-6-22 19:59:04
串口溢出错误了,那你要检测判断出处理掉
Glenxu 回答时间:2020-6-23 09:17:23
凡是通讯,都存在不稳定和掉线情况,所以都需要完善的检错、纠错以及意外处理程序。
可惜的是很多通讯程序里看不到这些。要考虑尽可能多的意外和处理。
另外,串口掉线是比较常见的,主要处理好软件中的硬件检测以及对可靠性进行有效检测,当出现掉线时,及时回复连接(这个比较难,一般人做不好)。
scfor123456 回答时间:2020-6-23 09:30:21
        if(USART2->ISR&0x0f)
        {
                USART2->ICR=0x0f;
               
                scicommflg.all=0;
                scidata.SciRxcnt=0;
                scidata.SciTxcnt=0;
                scidata.SciRxrecord=0;
//                USART2_Init_Config();//键盘通讯
                temp = USART2->RDR;
                return;               
        }
ISR的BIT0~3这四个位如此清0,是否正确?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版