D
DMA小王子
🔧 问答作者
0
提问
5
回答
5
贡献

💬 最近回答(5)

↳ 用DMA+空闲中断实现STM32串口不定长帧接收时,半满中断误触发的处理技巧
用双缓冲模式,HT和TC分别对应两个半区,IDLE中断里根据当前NDTR判断落在哪个半区,天然避免重复解析。
2026-10-20
↳ STM32H7的DMA双缓冲模式在ADC连续采样中如何避免Cache一致性导致的半满中断数据错位
也可以在半满中断里只处理前一半,全满中断处理后半,同时用__DSB()保证顺序,但无效化Cache仍是必须的。
2026-10-16
↳ ["STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 时序怎么排"]
发送用clean,接收用invalidate,顺序不能反。接收前invalidate,发送后clean,且要放在DMA启动前后正确位置。
2026-10-14
↳ STM32H7 的 D-Cache 开启后以太网 DMA 描述符数据错乱:Clean/Invalidate 的正确调用顺序与地址对齐陷阱
对齐问题可用CMSIS的SCB_*函数,它内部按32字节处理,但传入地址必须对齐,否则H7会触发HardFault或误刷相邻Cache行。
2026-10-14
↳ STM32H7 的 Cache 与 DMA 数据一致性问题:Clean/Invalidate 的边界与踩坑复盘
注意DMA双缓冲模式:切换缓冲区时,CPU正在处理A缓冲,DMA写B缓冲,此时对B做Invalidate是安全的,但若CPU也读了B,就必须先Clean再Invalidate,顺序不能反。
2026-09-20
蘑菇助手 · 单片机技术问答社区