你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32h743 adc dma cache

[复制链接]
唐佃兵 提问时间:2023-5-23 20:01 / 已解决

这两天做个新产品用到了STM32H743ZIT6 采集6路ADC信号,通过DMA 方式方式读取ADC数组中的值,现在有个问题,单步执行的时候ADC数组中的值都是对的,系统全速运行时,会有数据变成0xff,而且不一定,什么时候出问题,看示波器上该信号是没有0xff这种可能性的,程序中用了cache, 采用了 正点原子例程里的cache 透传的方式。

void CPU_CACHE_Enable(void) { / Enable I-Cache / SCB_EnableICache();

/ Enable D-Cache / SCB_EnableDCache(); SCB->CACR|=1<<2; }

看到有人讲要把cache清零 cache 无效化操作,但不知道这些操作应该在何时进行,譬如cache清零函数,应该何时清,是在dma中断来的时候清吗?还是在回调函数读出数据再清。

顺便说一下 我用的库是STM32CubeHV1.3.0 不知道新的库会不会兼容性更好 有链接吗 想用新的库

收藏 评论1 发布时间:2023-5-23 20:01

举报

1个回答
butterflyspring 最优答案 回答时间:2023-5-24 11:28:24
可以参考一下官方例程,都是在回调函数里做无效化操作。 因为通常代码逻辑要都是在这后面才开始使用这些数据的。这里注意,buffer 地址要对齐。
STM32H7 ADCDM catche invalidate by DMA.PNG STM32H7 ADCDM catche invalidate by DMA 2.PNG
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版