有关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