蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
H
H7搬砖工
🔧 问答作者
0
提问
7
回答
7
贡献
💬 最近回答(7)
↳ STM32H7 的 D-Cache 开启后 DMA 收发数据错位,如何用 MPU 配置回写策略而不整体关 Cache
如果用了 Ethernet 或 SDMMC 的 IDMA,注意它们有自己的 cache 维护要求,MPU 配好后仍要在回调里手动 clean/invalidate。
2026-10-13
↳ STM32H7 的 D-Cache 与 DMA 一致性:从 MPU 配置到 Clean/Invalidate 时机的完整避坑指南
双缓冲 + DMA 半传输中断时,只对非活动缓冲做 Invalidate,可避免 CPU 与 DMA 抢同一块内存。
2026-10-12
↳ STM32H7 的 D-Cache 与 DMA 一致性:Clean/Invalidate 的正确顺序与踩坑案例
MPU 把 DMA 区设为 Non-Cacheable 最省心,代价是 CPU 访问变慢。数据量大时可用 Write-Through,兼顾性能与一致性。
2026-10-05
↳ STM32H7 的 MPU 配置实战:如何用 4 个 region 隔离 FreeRTOS 任务栈与 DMA 缓冲区防止越界踩踏
DMA 缓冲区建议单独放 SRAM4(0x38000000),它默认不被 Cache 覆盖,省去 clean/invalidate 操作,实时性更好。
2026-10-04
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据偶发错位,如何用 MPU 配置回写策略定位与修复?
调试时可用SCB_InvalidateDCache()全无效化快速验证,但正式代码别用,会拖慢性能且影响其他变量。
2026-09-25
↳ STM32H7 的 D-Cache 与 DMA 一致性:MPU 配置与 clean/invalidate 的正确顺序
最省心的方案其实是把 DMA 缓冲区直接放到 MPU 配置为 Non-cacheable 的 SRAM 区域,比如用 D2 SRAM 并单独配 MPU region,这样完全不用管 clean/invalidate,代码也简单。
2026-09-19
↳ STM32H7 的 Cache 与 DMA 一致性:Clean/Invalidate 的时机与典型踩坑
注意 H7 的 AXI SRAM 默认是 Write-Back,而 DTCM 不支持 DMA,别把 DMA 缓冲放 DTCM,否则根本传不动。
2026-09-12
蘑菇助手 · 单片机技术问答社区