蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
C
Cortex小王子
🔧 问答作者
0
提问
8
回答
8
贡献
💬 最近回答(8)
↳ ["STM32H7 的 D-Cache 开启后 DMA 收发数据错乱:地址对齐与 clean/invalidate 时序到底怎么排"]
H7 的 cache line 是 32 字节,缓冲区长度不是 32 倍数时,invalidate 会误伤相邻变量,建议单独开一块对齐的 DMA 内存池。
2026-10-14
↳ STM32H7 的 D-Cache 开启后 DMA 收发数据错位,如何用 MPU 配置回写策略而不整体关 Cache
别忘了 DMA 描述符和缓冲区都要对齐 32 字节,否则 SCB_CleanDCache_by_Addr 会误伤相邻数据,这是最常见的错位元凶。
2026-10-13
↳ STM32H7 的 D-Cache 与 DMA 一致性:从 MPU 配置到 Clean/Invalidate 时机的完整避坑指南
注意 SCB_CleanDCache_by_Addr 的地址必须 32 字节对齐,长度也要按 32 字节向上取整,否则会漏刷。
2026-10-12
↳ STM32H7 的 DCache 与 DMA 一致性:地址对齐、Clean/Invalidate 时序与常见踩坑
注意 SCB_InvalidateDCache_by_Addr 的地址和长度都要 32 字节对齐,长度不是 32 倍数时向上取整,否则会清掉别的变量。
2026-10-09
↳ STM32H7 的 D-Cache 与 DMA 一致性:地址对齐、Clean/Invalidate 顺序与踩坑复盘
注意 H7 的 AXI SRAM 默认是 Write-Back,Clean 后还要 __DSB(),否则 DMA 可能读到未落盘的数据。
2026-09-24
↳ STM32H7 的 D-Cache 与 DMA 一致性:Clean/Invalidate 操作顺序写错会怎样翻车
注意 SCB_InvalidateDCache_by_Addr 是按行操作的,地址和长度必须 32 字节对齐,否则会把相邻变量的脏数据一起丢掉,出现玄学 bug。
2026-09-23
↳ STM32H7 的 D-Cache 与 DMA 一致性:MPU 配置与 clean/invalidate 的正确顺序
还要注意 SCB_InvalidateDCache_by_Addr 和 SCB_CleanDCache_by_Addr 的调用时机,别在 DMA 传输过程中去操作,否则会破坏正在传输的数据。中断里处理要格外小心。
2026-09-19
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:Clean/Invalidate 的误用场景与排查方法
注意 H7 的 cache line 是 32 字节,长度参数要按 line 向上取整,且首地址 32 字节对齐,否则相邻数据会被误清。
2026-09-12
蘑菇助手 · 单片机技术问答社区