D
DMA不迷路
🔧 问答作者
0
提问
5
回答
5
贡献

💬 最近回答(5)

↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 顺序怎么排查
注意H7的Cache是Write-Back Write-Allocate,写操作可能只进cache不落内存。内存→外设方向漏clean,DMA读到的就是旧数据,表现为发送内容错位。
2026-10-15
↳ ["STM32H7 的 D-Cache 开启后 DMA 收发数据错乱:地址对齐与 clean/invalidate 时序到底怎么排"]
收发顺序记牢:发=clean 后启动;收=启动后等完成再 invalidate。顺序反了就是随机错乱,调几天都找不到。
2026-10-14
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 顺序怎么排
DMA接收时如果CPU在DMA期间碰过缓冲区,invalidate会丢数据,所以要么别碰,要么先clean再invalidate。
2026-10-06
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:Clean/Invalidate 的误用场景与排查方法
调试技巧:在 DMA 完成中断里先 Invalidate 再读,若数据仍错,多半是缓冲区跨 cache line 或 DMA 描述符本身在 cache 里没同步。
2026-09-12
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 顺序怎么排
接收场景建议用双缓冲+半满/全满中断,invalidate只对刚写完的那半块做,避免和CPU读冲突。
2026-09-10
蘑菇助手 · 单片机技术问答社区