一、什么是SDIO接口?
SDIO,全称:Secure Digital Input and Output,即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并且可以连接SDIO接口设备,比如:蓝牙、WIFI、照相机等。SDIO和SD卡规范间的一个重要区别就是增加了低速标准。低速卡的目标应用是以最小的硬件开支支持低速I/O能力。低速卡支持类似调制解调器、条码扫描仪和GPS接收器等应用。STM32的SDIO控制器支持多媒体卡(MMC卡)、SD存储卡、SD I/O卡和CE-ATA设备。、
二、STM32 SDIO接口特点:
1、与多媒体卡系统规格书版本4.2全兼容。支持三种不同的数据总线模式:1位(默认)、4位和8位。
2、与较早的多媒体卡系统规格版本全兼容(向前兼容)
3、与SD存储卡规格版本2.0全兼容
4、与SD I/O卡规格版本2.0全兼容:支持两种不同的数据总线模式:1位(默认)和4位。
5、完全支持CE-ATA功能(与CE-ATA数字协议版本1.1全兼容)。8位总线模式下数据传输速率可达48MHz
6、数据和命令输出使能信号,用于控制外部双向驱动器。
SDIO框图:
复位后SDIO_D0用于数据传输。初始化后主机可以改变数据总线的宽度(通过ACMD6命令设置)。如果一个多媒体卡接到了总线上,则SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于数据传输。MMC版本3.31和之前版本的协议只支持1位数据线,所以能用SDIO_D0(为了通用性考虑,在程序里面只要检测到是MMC卡就设置为1位总线数据)
三、SDIO时钟
1、卡时钟(SDIO_CK):每个时钟周期在命令和数据线上传输1位命令或数据。对于SD或SD I/O卡,时钟频率可以在0MHz至25MHz之间变化。
2、SDIO适配器时钟(SDIOCLK):该时钟用于驱动SDIO适配器,可用于产生SDIO_CK时钟。对F1来说,SDIOCLK来自HCLK(72MHz);对F4来说,SDIOCLK来自PLL48CK(48MHz)。
3、F1:AHB总线接口时钟(HCLK/2):该时钟用于驱动SDIO的AHB总线接口,其频率为HCLK/2=36MHz。F4:APB2总线接口时钟(PCLK2):该时钟用于驱动SDIO的APB2总线接口,其频率为PCLK2=84MHz。
SD