1.串口过载逻辑及可能导致问题
GD32及STM32中USART大部分具有过载判断逻辑(ORE),且部分芯片内无法关闭,读取或者写入缓冲器Data后也无法清除该标志。在使能串口接收或者发送中断的情况下,这种工况下会一直进入串口中断。
2.处理对策
根据芯片手册,过载标志可通过读取对应状态寄存器清除;所以在中断处理代码,增加读取状态寄存器,清除此标志;
2023-4-8更新:
3.进一步优化:可以使用DMA传输数据
a)如果不校验帧头可以直接使用串口空闲中断,空闲中断内置位标志,主循环内复制缓存数据到处理数据;
b)校验帧头,可以使用接收中断,中断校验完成帧头后开启DMA搬运,主循环内做DMA传输的超时处理;
本文探讨了GD32及STM32等芯片中USART过载问题的原因及其可能导致的问题。介绍了通过读取状态寄存器来清除过载标志的方法,并提出了使用DMA传输数据作为进一步优化方案。
1万+

被折叠的 条评论
为什么被折叠?



