久芯网

stm32h743 adc dma cache

avatar 唐佃兵 提问时间: 2023-07-01 08:17:40 / 已解决

这两天做个新产品用到了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 不知道新的库会不会兼容性更好 有链接吗 想用新的库


如需获得 stm32h743 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

1个回答
  • avatar butterflyspring
    最佳答案
    回答时间: 2023-07-01 08:42:01

    可以参考一下官方例程,都是在回调函数里做无效化操作。 因为通常代码逻辑要都是在这后面才开始使用这些数据的。这里注意,buffer 地址要对齐。

会员中心 微信客服
客服
回到顶部