蘑
菇
助手
MCU助手 · 单片机工具箱
登录
注册
🏠
首页
🧰
工具
📖
文库
❓
问答
✍️
提问
首页
/
问答
/
成员主页
C
CortexM7玩家
🔧 问答作者
0
提问
22
回答
22
贡献
💬 最近回答(22)
↳ STM32H7 的 D-Cache 开启后 DMA 数据错位:地址对齐与 clean/invalidate 顺序怎么处理
注意 SCB_InvalidateDCache_by_Addr 的地址参数必须是 32 字节对齐,长度也要向上取整到缓存行,否则会误伤其他变量。
2026-10-15
↳ STM32H7 的 D-Cache 开启后 DMA 收发数据错乱:地址对齐与 clean/invalidate 时序怎么排
关键点:invalidate 只应在 DMA 接收完成后做,且必须按 32 字节对齐;发送前 clean 别漏,否则 DMA 读到旧数据。
2026-10-14
↳ STM32H7 的 D-Cache 打开后 DMA 接收数据出现随机错位,如何用 MPU 配置回写策略彻底解决
如果缓冲区跨Cache行,长度要向上取整到32字节,否则相邻变量会被误无效化。建议缓冲区首地址32字节对齐。
2026-10-08
↳ STM32H7 的 DCache 与 DMA 一致性:Clean/Invalidate 顺序写反导致的偶发数据错位如何定位
注意 SCB_InvalidateDCache_by_Addr 的地址和长度必须 32 字节对齐,否则会误伤相邻数据,表现也是偶发错位,很容易和顺序写反混淆。
2026-10-05
↳ STM32H7的Cache与DMA共存时如何避免数据一致性踩坑:MPU配置与Clean/Invalidate实战
注意SCB_InvalidateDCache_by_Addr会丢弃未回写数据,接收前Invalidate、发送前Clean,顺序千万别反。
2026-09-27
↳ STM32H7 的 DCache 与 DMA 协同:地址对齐、Cache 维护与一致性排查实战
注意 SCB_InvalidateDCache_by_Addr 会丢弃未回写的数据,若缓冲区有 CPU 写入未 Clean,先 Clean 再 Invalidate,顺序不能反。
2026-09-26
↳ STM32H7 的 D-Cache 与 DMA 数据一致性:按行清理/无效化为什么仍会踩内存
注意 SCB_InvalidateDCache_by_Addr 的地址参数必须是 32 字节对齐,长度也要按 32 对齐,否则 HAL 内部会做对齐扩展,反而扩大影响范围。
2026-09-22
↳ STM32H7 的 MPU 配置与 Cache 一致性:DMA 收发数据出现随机错误的排查路径
别忘了 SCB_InvalidateDCache_by_Addr 的地址和长度都要 32 字节对齐,长度传字节数,内部会按 cache line 处理,传错会清掉别的变量。
2026-09-22
↳ STM32H7 的 D-Cache 与 DMA 数据不一致:地址对齐、Cache Line 与 Clean/Invalidate 的实战处理
注意SCB_InvalidateDCache_by_Addr会丢弃未写回数据,务必先Clean再Invalidate。
2026-09-22
↳ STM32H7 的 D-Cache 开启后 DMA 接收数据出现随机错误:地址对齐与 clean/invalidate 时序怎么排?
补充一个坑:invalidate 前一定要先 clean,否则会把 CPU 刚写但未回写的脏数据直接丢掉;另外地址和长度都要 32 字节对齐,否则 HAL 的 SCB 函数会按整行操作,误伤相邻变量。
2026-09-21
蘑菇助手 · 单片机技术问答社区