SD/SDIO通信详解

一、简介

SDIO(Secure Digital Input and Output): 安全数字输入输出。是基于 SD(Secure Digital)卡标准 扩展的 通用输入输出接口协议。不仅兼容之前的SD卡协议,还增加了数据传输和外设控制能力。广泛运用在WIFI模块、蓝牙模块、GPS等嵌入式系统中。

二、硬件接口

SDIO有SPI、1-bit、4-bit三种工作模式,4-bit

信号名称

SPI模式

1-bit 模式

4-bit 模式

CLK

时钟信号(主控输出)

时钟信号(主控输出)

时钟信号(主控输出)

CMD

MOSI(主控输出数据)

双向命令/响应通道

双向命令/响应通道

DAT0

MISO(设备输出数据)

双向数据通道(单线传输)

双向数据通道

DAT1

未使用或NC

未使用(保留)

双向数据通道

DAT2

未使用或NC

未使用(保留)

双向数据通道

DAT3

片选(CS,主控输出)

未使用或设备检测(CD)

双向数据通道

VCC

电源(3.3V或1.8V)

电源(3.3V或1.8V)

电源(3.3V或1.8V)

GND

最大速度

<25 MHz(低速模式)

≤ 50 MHz(默认模式)

≤ 208 MHz(UHS-I SDR模式)

硬件设计关键点:

  1. CLK长度 ≤ 50mm,远离高频噪声源(如USB、RF天线);源端串联 22Ω电阻 并联6~10pF电容抑制反射提高信号完整性(尤其UHS模式)。
  2. CMD、DAT0-DAT3以CLK为基准做等长,长度误差控制在3mil以内.
  3. 使用插拔设备时,DATA3需要上拉用于插入检测,非可插拔设备可不加上拉。在SPI和1-bit模式下未使用的引脚可以悬空也可以上拉(10kΩ)CLK 通常不需要上拉
三、SDIO上电初始化流程

上电后,SDIO默认是1-bit模式,频率为400KHz,初始化时,Host先查询卡是否支持4线制,如果支持,则通 过CMD命令将总线切换至4线制。

SDIO支持3.3V和1.8V两种电平状态,由于不管是那种电平工作状态,在上电时都默认为3.3V电平状态,所以在使用1.8V时相对3.3V会有电平切换。两种电平工作状态下的初始化具体流程如下:

A:3.3V设备具体初始化流程:

上电→ 复位→ 检查电压兼容性→初始化设备→设置工作模式→进入数据传输模式。

1. 初始上电(3.3V)主机提供3.3V电源(VDD)。时钟(CLK)初始频率设为 ≤400kHz(低速模式)。主机检测DAT3(Card Detect, CD)引脚,判断设备是否插入。

2. 发送复位命令(CMD0)主机发送 CMD0(GO_IDLE_STATE),使设备进入Idle状态。注意:CMD0必须在3.3V下发送,即使设备后续支持1.8V。

3. 检查电压兼容性(CMD8)查询设备是否支持SDIO协议及电压范围。设备返回 OCR(Operating Conditions Register),指示支持的电压(如3.3V)。

4. 初始化设备(ACMD41)协商工作电压和容量类型。

5. 配置总线宽度(ACMD6)切换至 4-bit模式(DAT0-DAT3)。默认情况下,SDIO仅使用 DAT0(1-bit模式)。

6. 进入数据传输模式主机提高时钟频率(如 25MHz 标准模式或 50MHz 高速模式)。

B:1.8V设备的初始化流程(UHS模式)

上电→ 检查电压兼容性→电压切换→ 主机切换至1.8V供电→初始化设备→ 进入数据传输模式。

1. 初始上电(3.3V)必须 先以 3.3V 供电,时钟频率 ≤400kHz。

2. 检查电压兼容性(CMD8 + ACMD41)主机发送 CMD8,设备返回支持的电压范围(如 3.3V & 1.8V)。主机发送 ACMD41,设备在OCR寄存器中设置 Bit24(1.8V支持标志)。

3. 发送电压切换命令(CMD11)请求切换至1.8V。设备返回 R1响应,确认准备切换。

4. 主机切换至1.8V供电主机调整PMIC/LDO,将VDD从 3.3V降至1.8V。关键点:切换期间,CLK必须保持 ≤400kHz。DAT[3:0] 必须保持 低电平(协议要求)。

5. 重新初始化设备主机重新发送 CMD0,确保设备进入正确状态。提高时钟频率至 UHS-I模式(如208MHz DDR)。

6. 进入高速数据传输设备以 1.8V LVCMOS电平 运行,支持更高速度(如SDR104模式)。

四、命令与响应数据包
1、命令

SDIO命令由48位(6字节)组成,结构如下:

位域

长度(bit)

描述

Start

1

固定为0,表示命令开始。

Trans

1

传输方向:1(主机设备),固定为1

CMD

6

命令编号(如CMD0=0x00CMD5=0x05CMD52=0x34等)。

Arg

32

命令参数(具体含义由CMD决定,如地址、数据、控制位等)。

CRC7

7

循环冗余校验(覆盖CMD+Arg),用于检测传输错误。

End

1

固定为1,表示命令结束。

2、响应

响应分为多种类型(R1、R2、R3等),具体由命令决定。常见响应格式如下:

1R1响应(普通命令响应,48位)

位域

长度

描述

Start

1

固定为0

Trans

1

传输方向:0(设备→主机)。

CMD

6

响应对应的原命令编号(如CMD5的响应中CMD=0x05)。

Status

32

状态寄存器(包含设备状态、错误标志等,详见下表)。

CRC7

7

校验位(覆盖CMD+Status)。

End

1

固定为1

R1Status字段解析(关键位):

名称

说明

31

READY_FOR_DATA

设备是否准备好传输数据(1=就绪)。

19

APP_CMD

下一条命令是否为应用特定命令(ACMD)。

15

ILLEGAL_CMD

上一条命令是否非法(1=错误)。

8

IDLE_STATE

设备是否处于Idle状态(1=Idle)。

0

OUT_OF_RANGE

地址或块长度是否超限(1=错误)。

2R2响应(CID/CSD寄存器读取,136位)

用于返回设备的CID(Card ID)或CSD(Card Specific Data)寄存器内容:

  • 格式:R1响应(48位) + 额外数据(88位)
  • CRC校验,依赖前导R1的CRC7。

3R3响应(OCR寄存器读取,48位)

与R1格式相同,但Status字段替换为OCROperating Conditions Register

  • Bit24:1表示设备支持1.8V电压(关键UHS模式标志)。
五、 数据传输时序

1)命令阶段

  • 主机在CLK上升沿发送48位命令(MSB优先)。
  • 设备在CLK下降沿采样命令。

2)响应阶段

  • 设备在收到命令后,延迟1-8个CLK周期返回响应。
  • 主机在CLK上升沿采样响应(MSB优先)。

3)数据阶段

  • 读操作:设备在CLK下降沿输出数据,主机在上升沿采样。
  • 写操作:主机在上升沿输出数据,设备在下降沿采样。
六、SDIO特点

多功能接口:SDIO接口不仅支持存储卡功能,还可以连接其他外设,如无线网络模块、摄像头、GPS模块等。

高速数据传输:SDIO接口支持高速数据传输,具有快速读写速度和低延迟特性。

可靠性和安全性:SDIO接口通过校验和错误检测等机制来保证数据传输的可靠性,并支持数据保护和加密功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值