SD卡,支持SPI/SDIO驱动,而且有多种体积的尺寸可以选择。
STM32F4自带的SDIO接口驱动,4位模式,最高通信速度可以达到48MHZ,最高每秒可以传输24M字节。

SDIO主要功能与框图

  1. 支持三种不同的数据总线模式:1位(默认)、4位和8位。
  2. STM32F4的SDIO控制器包含2个部分:SDIO适配器模块和APB2总线接口。

image.png

SDIO的时钟

SDIO共有3个时钟:

  • 卡时钟SDIO_CK:
  • SDIO适配器时钟SDIOCLK:用于驱动SDIO适配器,来自PLL48CL,一般为48MHZ,并用于产生SDIO_CK时钟
  • APB2总线接口时钟(PCLK2):该时钟用于驱动SDIO的APB2总线接口,其频率为HCLK/2,一般为84MHZ

注:在SD卡刚刚开始初始化的时候,其时钟频率是不能超过400khz的,否则可能无法完成初始化,在初始化以后,就可以设置时钟频率到最大了。

读写数据

SDIO的数据FIFO寄存器(SDIO_FIFO),数据FIFO寄存器包括接收和发送FIFO,由一组连续的32个地址上的32个寄存器组成,CPU可以使用FIFO读写多个操作数。SDIO将这32个地址分为16个一组,发送接收各占一半。而我们每次读写的时候,最多就是读取发送FIFO或者写入接收FIFO的一般大小的数据,也就是8个字。
注:操作SDIO_FIFO(不论读出还是写入)必须以4字节对齐的内存进行操作,否则将导致出错。
image.png