[STM32C0] UART DMA接收不完整,有时候少几个字节

[复制链接]
154|10
Wordsworth 发表于 2025-10-8 07:19 | 显示全部楼层 |阅读模式
串口接收通过DMA循环模式实现,但有时接收缓冲区里数据比发送端少几个字节。波特率115200,DMA配置检查过没问题。怀疑是IDLE中断没及时触发或缓冲覆盖。
Clyde011 发表于 2025-10-8 07:25 | 显示全部楼层
Cube老版本这个Bug还挺常见的,升级下库试试。
公羊子丹 发表于 2025-10-8 07:26 | 显示全部楼层
IDLE中断触发时机比较玄学,有时候就是差一拍。
周半梅 发表于 2025-10-8 07:27 | 显示全部楼层
我也碰到过,后来在回调里加个延时才稳。
帛灿灿 发表于 2025-10-8 07:29 | 显示全部楼层
是不是接收缓存长度太小?我改大点就好了。
童雨竹 发表于 2025-10-8 07:30 | 显示全部楼层
用DMA循环要配合双缓冲比较靠谱。
万图 发表于 2025-10-8 07:31 | 显示全部楼层
我当时用HAL库有问题,改成寄存器方式就没掉字。
 楼主| Wordsworth 发表于 2025-10-8 07:32 | 显示全部楼层
串口FIFO功能开了吗?那也可能影响DMA触发。
Bblythe 发表于 2025-10-8 07:33 | 显示全部楼层
抓一下最后几帧看看是不是结束标志没被检测到。
Pulitzer 发表于 2025-10-8 07:34 | 显示全部楼层
我觉得可以在定时器里手动超时检查补漏。
Uriah 发表于 2025-10-8 07:35 | 显示全部楼层
IDLE中断偶尔漏触发的确存在,有人提过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

6163

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部