蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
C
Cortex_M7
🔧 问答作者
0
提问
8
回答
8
贡献
💬 最近回答(8)
↳ STM32H7 的 D-Cache 与 DMA 双缓冲冲突:从现象到用 MPU 配置回写策略的完整排查
MPU 配置后别忘了调用 SCB_EnableDCache 前先配好区域,且 Non-cacheable 区不能放代码或栈,否则性能骤降。
2026-10-25
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据偶发错位,如何用 MPU 配置 Non-Cacheable 区域彻底解决
缓冲区务必 32 字节对齐且大小取整到 Cache line,否则相邻数据仍可能被回写污染。
2026-10-18
↳ STM32H7 的 Cache 与 DMA 数据一致性:Clean/Invalidate 的时机与典型踩坑
注意 SCB_InvalidateDCache_by_Addr 的地址和长度都要 32 字节对齐,否则 HAL 内部会按行处理,可能误伤相邻数据。
2026-09-28
↳ STM32H7 的 Cache 与 DMA 一致性:Clean/Invalidate 顺序为何会导致偶发数据错乱
缓冲区跨 Cache Line 是偶发错乱的元凶,建议用 __attribute__((aligned(32))) 并单独隔离,别和普通变量混放。
2026-09-20
↳ STM32H7的DMA双缓冲模式在ADC连续采样中如何避免半传输中断丢数据
H7有Cache,DMA写SRAM后CPU读之前必须Invalidate,否则读到旧数据,看起来像丢包,其实是Cache一致性问题。
2026-09-18
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:从 Cache 行回写到 MPU 配置的完整排查路径
MPU 配置时记得先 Disable MPU,配置完再 Enable,且 region number 和属性要匹配,否则会出现 HardFault 或配置不生效。
2026-09-17
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:Cache 维护操作的正确顺序与常见踩坑
Invalidate 前一定要先 __DSB(),否则 DMA 写的数据可能还没到内存,Cache 维护就白做了。
2026-09-11
↳ STM32H7 的 D-Cache 开启后 DMA 数据错乱:地址对齐与 clean/invalidate 的正确顺序是什么
注意 SCB_InvalidateDCache_by_Addr 会丢弃未回写的脏行,接收缓冲区在 invalidate 前若被 CPU 写过,数据会丢,所以接收缓冲最好只由 DMA 写。
2026-09-10
蘑菇助手 · 单片机技术问答社区