stm32h7系列的sd卡内置了dma部分,所以需要考虑字节对齐的问题.当我们再使用stm32cubemx生成代码时,没有字节对齐的选项.这时,就需要我们手动打开两个宏定义
/* USER CODE BEGIN enableSDDmaCacheMaintenance */
#define ENABLE_SD_DMA_CACHE_MAINTENANCE 1
/* USER CODE END enableSDDmaCacheMaintenance */
/*
* Some DMA requires 4-Byte aligned address buffer to correctly read/write data,
* in FatFs some accesses aren't thus we need a 4-byte aligned scratch buffer to correctly
* transfer data
*/
/* USER CODE BEGIN enableScratchBuffer */
#define ENABLE_SCRATCH_BUFFER
/* USER CODE END enableScratchBuffer */
这两个宏定义都位于 FATFS/Target/sd_diskio.c文件中.手动去掉这两个宏定义的注释即可.
这个问题困了我一个星期,最后没法了看了源码才知道是这里的问题,记录一下.