嵌入式接口通识知识之SDIO接口
1.1 基础概念
SDIO的全称是Secure Digital Input/Output,译为安全数字输入输出,它是一种基于SD卡物理接口的扩展,允许设备在SD卡的基础上进行输入和输出操作。
SDIO接口建立在SD卡物理接口之上,利用SD卡的标准物理接口和通信协议,使得设备能够通过一个共同的接口实现数据传输和设备控制。这意味着SDIO设备可以插入标准的SD卡插槽中,并且可以与支持SDIO的主机设备通信。
与传统的SD卡仅能存储数据不同,SDIO接口不仅保留了存储功能,还可以实现多种输入和输出功能。这些功能可以包括Wi-Fi、蓝牙、GPS、音频、摄像头等,使得SD卡不仅作为存储介质,还能实现更多的应用。
SDIO本身只是一种接口技术,类似于SPI接口,通过I/O引脚来连接外部设备,并且与外围设备之间传输数据,所以这些外围设备又被称为SDI/O卡。
1.2 工作原理
SDIO接口建立在SD卡物理接口之上,所以引脚信息也是相对应的。
SDIO总线有两端,一端是主机(HOST)端,另一端是设备(DEVICE)端,采用HOST- DEVICE的设计为主机和设备之间提供了一个高效、灵活的通信机制,使得各种外部设备能够通过统一的接口与主机进行交互。所有的通信都是由HOST端发出命令开始的,在DEVICE端只要能解析HOST的命令,就可以同HOST进行通信,SDIO的HOST可以连接多个DEVICE。
SDIO的信号传输模式有SPI、1-bit、4-bit三种。在SPI模式中,第8脚位被当成中断信号。其它脚位的功能和通信协定与SD记忆卡的标准规范一样。在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线。
针对不同的引脚定义,如下图所示:
引脚 | 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 |
上图引脚定义如下:
SD卡:1-data3,2-cmd,3-vss,4-vdd,5-clk,-6-vss,7-data0,8-data1,9-data2
TF卡(SD模式):1-data2,2-data3,3-cmd,4-vdd,5-clk,-6-vss,7-data0,8-data0,9-data1
TF卡(SPI模式):1-rsv2,2-cs3,3-di,4-vdd,5-sclk,-6-vss,7-do,8-rsv
SDIO总线上的设置和控制都是通过命令来实现的,由HOST端发起请求,DEVICE端回应请求,其中请求和应答中会包含下列数据信息:
Command:用于开始传输的命令,是由HOST端发往DEVICE端的,其中命令是通过CMD信号线发送的,包括命令索引、参数以及命令特性等。
Response:DEVICE返回的应答。也是通过CMD线传送的,设备会返回状态字,以指示命令是否成功执行以及其他相关信息,如错误代码、状态等;
Data:数据的传输是双向的。数据可以再SDIO总线上以1线模式或4线模式进行传输。1线模式使用单数据线(DAT0)进行单向或双向数据传输。4线模式使用四个数据线(DAT0-DAT3)进行并行数据传输,这种方式可以提高数据传输速率。
所有命令都有一个固定的48位代码长度:
位置 | 47 | 46 | [45:40] | [39:8] | [7:1] | 0 |
长度(bit) | 1 | 1 | 6 | 32 | 7 | 1 |
值 | '0' | '1' | x | x | x | '1' |
描述 | 起始位 | 传输方向位 | 命令索引 | 附带参数 | CRC校验 | 结束位 |
起始位:占1位,值固定为0。起始位用于表明命令的开始,指示接下来的数据是一个命令。
传输方向位:占1位,值为1表示host发出, 值为0则表示device发出。
命令索引:通常是一个6位二进制数,这意味着它可以表示的数值范围是从000000(0)到111111(63),即0-63。例如CMD0 这项值为0,表示这是SDIO总线的第一个命令;CMD5这项值为5,表示这是第六个命令。
附带参数:占32位,CMD所附带的一些参数,不同的CMD,这32bit的每一位所代表的含义是不一样的。
CRC校验:7位CRC校验值,用于检测传输错误,通过对命令内容进行CRC计算饼附加到命令中,接收方可以验证命令的完整性和正确性。
结束位:占1位,值固定为1。结束位标志着命令的结束,告知接收方该命令的传输已经完成。