在刚使用STM32H743时使用DMA接收数据,接收到的数据一直是上一次的数据,DMA更新的数据无法获取,在手册中有如下描述:
DMA 更新了某段物理内存(DMA 和 cache 直接没有直接通道),而这个时候 Core 再读
取这段内存的时候,由于相对应地址的 cache-line 没有被 invalidate,导致 Core 读到的是 cache-line
中的数据,而非被 DMA 更新过的实际物理内存的数据
在主函数中开启强制D-Cache透写,可解决问题:
SCB->CACR|=1<<2;
STM32F7 MPU Cache浅析.pdf
(530.93 KB)
|