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存储卡的命令上是有差异的,里面的寄存器也是有差异的。所以具体命令需要查看官方文档,对于初始化流程,哪条命令对应哪个应答等都有详细的描述。