ch592 uart 接收丢数据

uart 配置如下

 image.pngimage.png

出现问题:

与传感器通过uart通讯时,如果传感器发送数据间隔260ms左右,mcu会出现数据丢失,每次丢失字符串末尾1到2个字符。


判断产生问题的原因:

目前怀疑是接收缓冲区溢出了,还请指点如何确定是缓冲区溢出导致的还是其他原因?能否改缓冲区长度?是中断处理能力不足还是其他?十分感谢


判断依据:

用逻辑分析仪抓数据,确定发送的数据没问题,同时通过串口打印收到的数据,数据出现丢失。





image.png

查了下文档,串口输出的overflow,这样能确定是fifo溢出了吧,有什么办法解决这个问题?


溢出一般是MCU繁忙,不能及时收取串口FIFO中缓存的数据所致。

排查建议:

①计算该UART波特率下收发包所需时长,加上数据转存、计算、转发等功能的时间开销,查看是否在理论上可以在第二次发包前处理完第一包数据。

在中断服务函数中增加IO翻转的方式,通过逻辑分析抓波形,监测UART中断进入的频次是否正常、是否有其他中断占用了过长的时间。可以通过配置抢占优先级的方式提高串口中断的优先级。

中断服务函数中的串口打印信息全都删去,串口打印需要占用比较长的时间。中断服务函数中只做数据拷贝,快进快出。

④是否有操作flash的代码块,注意操作flash期间会自动关闭总中断。


只有登录才能回复,可以选择微信账号登录