有关stm32f407 使用 SD卡 + FATS文件新系统 + DMA 有关注意点

由于我有向sd卡写入imu数据(速度很快)的要求,所以要使用DMA。

在Cube中,f4系列的单片机配置FATS中可以使用DMA模板,

在研究这个过程中出了点玄学问题:

FATS dma template enabled

SDIO RX TX dma enable --- DMA2

SPI RX TX dma enable --- DMA1

NVIC 优先级 SD>SPI_DMA>SD_DMA>EXTI

IMU 通过EXTI外部中断,进入采集程序,使用SPI_DMA采集数据,写入IMU buffer中

main函数,处理IMU buffer,使用SD_DMA写入数据到SD卡

问题1:使用dma template 如果插拔sd卡(自己写的mount与unmount函数),如果unmount后,立即mount,stm32会卡住,如果过一会儿在mount,就能mount成功

解决方法: 不要立即mount

问题2:采集数据错乱,是优先级设置不正确

解决方法:按照上图设置优先级 SD>SPI_DMA>SD_DMA>EXTI

山和山不相遇,人与人要相逢