打印
[STM32H7]

串口空闲中断加DMA接收异常说明

[复制链接]
669|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tdh03z|  楼主 | 2023-12-17 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    记录下,在调试串口空闲中断加DMA接收串口数据时,前期接收都没问题。后来想测试接收可靠性,将1帧串口数据加大到400个字节,发现串口无法收到数据,后续即使发送正常的数据帧,也收不到数据了。
    上网查找相关信息结合调试发现,应该是DMA接收初始化时,设定的DMA接收缓存大小为300,一旦一帧数据量大于300,就会停止传输数据到DMA,导致串口溢出ORE位置位,一旦ORE置位后续就不会再传输数据到DMA,导致串口后续一直无法接收数据,但还是能激活串口空闲中断。
    知道原因后,只要在串口空闲中断中查询是否接收溢出,有就清除ORE位,即可实现异常的修复。
    另外,查询到H7系列中,串口配置寄存器中有一个专门的ORE位屏蔽设置,也就是使能后,不管ORE是否置位,都不会影响串口数据传送到DMA中,好像是专门针对此问题的哈。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

202

帖子

4

粉丝