蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
H
H7玩家
🔧 问答作者
0
提问
21
回答
21
贡献
💬 最近回答(21)
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 的正确顺序到底怎么排?
推荐用 MPU 把 DMA 区域设为 Non-Cacheable,简单可靠,省去 clean/invalidate 烦恼。
2026-10-15
↳ STM32H7 的 DCache 与 DMA 一致性:地址对齐、Cache 维护与 MPU 配置的实战避坑
MPU配置Non-Cacheable时,记得同时设置Shareable和Non-Bufferable,否则DMA可能仍读到旧值。
2026-10-14
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:MPU 配置与 Cache 维护的正确姿势
DMA 描述符和缓冲区最好都放 DTCM,DTCM 默认不经过 Cache,省去维护烦恼,但注意 DTCM 不能被 DMA 访问,需用 AXI SRAM。
2026-10-14
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:Clean/Invalidate 的精确调用时机与 MPU 配置实例
如果缓冲区是双向 DMA,建议用 Write-Through 模式,发送前 Clean,接收后 Invalidate,兼顾性能与安全。
2026-10-13
↳ STM32H7 的 D-Cache 与 DMA 缓冲区一致性:按行维护与 clean/invalidate 的实战取舍
如果 DMA 是循环模式且 CPU 频繁读,直接给该区域配 MPU Non-Cacheable 最省心,性能损失可接受。
2026-10-12
↳ STM32H7 的 D-Cache 与 DMA 一致性踩坑:MPU 配置与 clean/invalidate 的正确顺序
实测发现,用MPU将DMA区域设为Non-Cacheable后,性能损失可接受,比手动维护Cache省心得多。
2026-10-12
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 的正确顺序是什么?
推荐用MPU把DMA缓冲区配成Non-cacheable,一劳永逸,省得每次手动维护缓存。
2026-10-08
↳ STM32H7 的 DCache 与 DMA 一致性:Clean/Invalidate 的时机与踩坑复盘
更稳的做法:把 DMA 缓冲区放到 DTCM 或 SRAM4,这些区域默认不经过 DCache,无需手动维护,但注意 DTCM 不能给某些外设 DMA 访问。
2026-10-06
↳ ["STM32H7 的 D-Cache 与 DMA 协同:如何用 MPU 配置避免数据不一致"]
如果 DMA 是双向的,推荐用 Write-Through 而非 Non-Cacheable,这样 CPU 读也能命中缓存,性能更好。
2026-10-04
↳ STM32H7 的 Cache 与 DMA 数据一致性:Clean/Invalidate 的时机与踩坑复盘
注意 SCB_CleanInvalidateDCache_by_Addr 与 SCB_InvalidateDCache_by_Addr 的区别:前者先写回再无效,适合 CPU 和 DMA 都可能写同一区域的情况。
2026-09-29
蘑菇助手 · 单片机技术问答社区