[STM32F4] DMA传输过程中数据丢一半,好像自动停工了

[复制链接]
227|10
周半梅 发表于 2025-10-3 07:16 | 显示全部楼层 |阅读模式
在做串口DMA发送时,发现传输长度比较长的时候,总是传到一半突然停下,像自动下班了一样。DMA中断没有触发,缓冲区数据也没完全发出去。短数据正常,长数据就会出问题,试过关掉FIFO也没改善。
Clyde011 发表于 2025-10-3 07:22 | 显示全部楼层
建议抓个示波器看TX引脚,确认真的是停了还是发错。
公羊子丹 发表于 2025-10-3 07:23 | 显示全部楼层
我觉得你可以检查一下是否有中断优先级冲突。
 楼主| 周半梅 发表于 2025-10-3 07:24 | 显示全部楼层
之前遇到过,结果是DMA缓冲区没对齐,长数据就出错。
帛灿灿 发表于 2025-10-3 07:25 | 显示全部楼层
我建议先在短包里逐步加长,看在哪个长度开始出问题。
童雨竹 发表于 2025-10-3 07:26 | 显示全部楼层
有没有可能是串口硬件FIFO溢出了?
万图 发表于 2025-10-3 07:26 | 显示全部楼层
我以前是因为开了cache,DMA访问不到正确数据。
Wordsworth 发表于 2025-10-3 07:27 | 显示全部楼层
你试试把DMA传输分段,可能比一次搞完稳定。
Bblythe 发表于 2025-10-3 07:28 | 显示全部楼层
不排除是波特率太高,接收端没跟上,导致丢数据。
Pulitzer 发表于 2025-10-3 07:29 | 显示全部楼层
我有次是因为DMA通道被别的外设占了,冲突了。
Uriah 发表于 2025-10-3 07:30 | 显示全部楼层
如果用HAL库,可以换成LL库,可能细节上差异更大。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

166

主题

6117

帖子

1

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