SDIO配置
4bit,其他参数均默认即可。
配置DMA
注意:memory 数据宽度最好配置为byte。如果配置为word,那么定义读写buff时需要相应的按四字节对齐,否则可能会出现数据偏移错误。
配置中断
SDIO global 中断必须开启。sdio使用dma时必须开启全局中断,否则无法判断dma发送完成。
SDIO global中断优先级高于dma中断优先级。
FATFS配置
勾选sd,注意配置sd检测引脚:
勾选使用DMA:
代码修改
修改sdio.c的MX_SDIO_SD_Init,将总线宽度改为1bit。
这是因为实测直接初始化为4bit测试不通,修改后其实还是使用4bit的,因为在bsp_driver_sd.c文件中BSP_SD_Init函数中,在HAL_SD_Init之后有切换为4bit:
/* Configure SD Bus width (4 bits mode selected) */
if (sd_state == MSD_OK)
{
/* Enable wide operation */
if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK)
{
sd_state = MSD_ERROR;
}
}
之所以这么操作,疑似原因:SD手册规定初始只能是1 bit。
参考原子写法: