在STM32F4上使用SDRAM时,若启用D-Cache(如LTDC或DMA访问),必须配置MPU将SDRAM区域设为非cacheable或write-through,否则会因Cache与DMA/外设数据不一致导致显示撕裂或数据错误。实操建议:1) 在SystemInit后、启用Cache前,调用HAL_MPU_ConfigRegion(),设置Region为SDRAM起始地址(如0xC0000000),大小匹配(如16MB用MPU_REGION_SIZE_16MB),属性选MPU_REGION_NO_CACHE(或WRITE_THROUGH,视实时性需求);2) 若使用RTOS,确保MPU配置在任务调度前完成;3) 对CPU频繁读写的缓冲(如帧缓冲),可单独划分一个cacheable区域,但需用SCB_CleanDCache/InvalidateDCache手动维护;4) 测试时用逻辑分析仪或对比CRC验证一致性。注意:F4的MPU不支持按页粒度,需按2的幂次对齐。
mcuku 阿沐 · 2026-08-27