SDIO总线简介
SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。
什么是SDIO卡
SDIO卡,是使用SD总线以及SD指令的IO设备。SDIO卡的外形和接口和SD卡是兼容的,但是实现的不只是存储功能,还能实现其它的功能,如蓝牙、WIFI等。比如下面的就是一个实现了WIFI功能,而且外形和接口与SD卡兼容的SDIO卡。
什么是组合卡
组合卡指带有memory(存储器)的SDIO卡(memory+SDIO)。
SDIO卡类型
- 全速卡: 传输速率超过100Mbps,时钟范围0-25MHz。
- 低速卡:时钟范围0-400KHz。
低速卡支持类似调制解调器, 条形码扫描仪和GPS接收器等应用。高速卡支持网卡,组合卡等。
SDIO卡模式
SDIO卡有三种总线模式:
- SPI模式
- 1-bit SD传输模式
- 4-bit SD传输模式
SDIO接口定义
- CLK: HOST给DEVICE的时钟信号
- CMD: 双向的信号,用于传送命令和应答
- DAT0-DAT3: 用于传输的数据线
不同模式下的引脚定义:
引脚 |
4bit模式 |
1bit模式 |
SPI模式 |
|||
1 |
DAT3 |
数据线3 |
CD |
卡侦测 |
CS |
片选 |
2 |
CMD |
命令/应答 |
CMD |
命令/应答 |
DI |
串行输入(MOSI) |
3 |
VSS1 |
地线 |
VSS1 |
地线 |
VSS |
地线 |
4 |
VDD |
电源线 |
VDD |
电源线 |
VDD |
电源线 |
5 |
CLK |
时钟线 |
CLK |
时钟线 |
CLK |
SPI时钟 |
6 |
VSS2 |
地线 |
VSS2 |
地线 |
VSS |
地线 |
7 |
DAT0 |
数据线0 |
DAT0 |
数据线0 |
DO |
串行输出(MISO) |
8 |
DAT1 |
数据线1/中断 |
NC/IRQ |
中断 |
NC/IRQ |
中断 |
9 |
DAT2 |
数据线2 |
NC |
NC |
SDIO命令
SDIO总线上的设置和控制都是通过命令来实现,SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求,其中请求和应答中会包含数据信息
- Command: 用于开始传输的命令,是由HOST端发往DEVICE端的,其中命令是通过CMD信号线传送的。
- Response: DEVICE返回的应答。也是通过CMD线传送的;
- Data: 数据是双向传送的。可以设置为1线模式,也可以设置为4线模式。数据是通过DAT0-DAT3信号线传输的。
命令格式:
- Start: 起始位,值固定为0。
- Transmission:传输方向,值为1表示host发出, 0则表示device发出。
- Command Index: 代表命令索引,例如CMD0 这项值为0 ,CMD5则这项值为5,它的范围是0-63。
- Argument:CMD所附带的一些参数,不同的CMD,这32bit每一位所代表的含义是不一样的。
- CRC7:7位CRC校验值
- End:结束位,值固定为1
应答格式:
SD内存卡支持五种response type:R1,R1b,R2,R3,R6
SDIO卡额外支持2种response type:R4,R5
- R1(正常应答命令)
- R2(CID,CSD寄存器)
- R3(OCR寄存器)
- R6(Published RCA应答)
- R7(卡接口条件)
- R4
用来回复CMD5,该CMD是给SDIO card专用的,用来查询card中支持的电压域。
- R5
用来回复CMD52,该CMD是给SDIO card专用的。
不同的外设使用的命令会有差异,具体命令要查看Spec。
更多详细命令介绍请参考:
《Physical Layer Simplified Specification Version8.00》
《SDIO_Simplified_Specification_Ver3.00》
总结
SDIO卡和SD存储卡的命令上是有差异的,里面的寄存器也是有差异的。所以具体命令需要查看官方文档,对于初始化流程,哪条命令对应哪个应答等都有详细的描述。