[STM32H7] 使用DMA传输ADC数据时出现随机偏差,怀疑缓存同步问题

[复制链接]
161|10
帛灿灿 发表于 2025-11-7 07:18 | 显示全部楼层 |阅读模式
DMA方式采集ADC数据,部分通道读出来的值偏低一点,像被截断。关掉cache后正常。查资料说可能是DCache没同步,但我flush过啊,还是偶尔出。
Clyde011 发表于 2025-11-7 07:24 | 显示全部楼层
也可能是ADC触发DMA太频繁,cache写回来不及。
公羊子丹 发表于 2025-11-7 07:25 | 显示全部楼层
H7系列这个问题老生常谈了,cache同步真得小心。
周半梅 发表于 2025-11-7 07:26 | 显示全部楼层
你用的是AXI SRAM吗?那部分要用DCache_CleanInvalidateRange。
 楼主| 帛灿灿 发表于 2025-11-7 07:27 | 显示全部楼层
我一般在DMA回调里再强制flush一次。
童雨竹 发表于 2025-11-7 07:28 | 显示全部楼层
你确定地址在DTCM里?DTCM不受cache影响。
万图 发表于 2025-11-7 07:29 | 显示全部楼层
这个现象我也遇过,最后是因为结构体没对齐。
Wordsworth 发表于 2025-11-7 07:30 | 显示全部楼层
建议用__attribute__((aligned(32)))包一下缓冲区。
Bblythe 发表于 2025-11-7 07:31 | 显示全部楼层
CubeMX有个坑,它默认放在D1域,cache影响大。
Pulitzer 发表于 2025-11-7 07:32 | 显示全部楼层
关cache虽然能解决,但性能会掉很多。
Uriah 发表于 2025-11-7 07:33 | 显示全部楼层
你试试放在DMA专用内存区,看能不能稳。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

197

主题

6576

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部