SDIO协商,枚举,CMD等概念

发布于:2025-07-19 ⋅ 阅读:(10) ⋅ 点赞:(0)

SDIO 枚举协商的详细流程

SDIO(Secure Digital Input Output)枚举是主机识别并配置连接的 SDIO 设备(如 Wi-Fi 模块或存储卡)的核心过程,通过协议协商确定通信模式、总线参数等。完整流程基于主从架构,由主机主导,具体步骤如下:

1. ‌初始化阶段‌
主机通电后,向 SDIO 设备提供基础电源(默认 3.3V)和时钟信号(CLK),确保设备进入待机状态;同时通过 CMD 线发送初始化命令(如 CMD0 复位设备),使设备准备好后续交互 ‌1。此阶段重点建立物理层同步,时钟频率通常从低速开始(如 400kHz)以兼容老旧设备 ‌8。

2. ‌识别设备阶段‌
主机广播 "识别命令"(如 CMD5,专用于 SDIO 设备),询问设备类型和能力;设备通过 DAT 线响应,返回其身份信息(如 Vendor ID、设备类别——Wi-Fi 模块或 SD 卡)。主机据此验证设备合法性及支持的模式(如 1-bit 或 4-bit 总线)‌12。

3. ‌分配地址阶段‌
主机为已验证设备分配唯一地址(Relative Address,RCA),通过 CMD3 命令发送地址值;设备保存该地址并确认响应,后续所有通信均基于此地址定位设备 ‌1。此步骤避免总线上的多设备冲突 ‌2。

4. ‌配置阶段‌
主机根据设备能力发起参数协商:

‌总线模式切换‌:通过 ACMD6 命令切换数据线宽度(例如从 1-bit 升级至 4-bit 并行传输)‌。
‌电压与速率协商‌:主机发送 CMD11 请求切换到 1.8V 低电压(若设备支持 UHS-I),并基于 CMD6 选择最优速度模式(如 SDR25 或 DDR50),设备返回支持的频率列表 ‌。
‌功能寄存器配置‌:主机写入设备的功能寄存器(如中断使能、块大小设置),定制化设备行为 ‌。

5. ‌功能探测阶段‌
主机执行实际测试以确认设备功能:

发送读写命令(如 CMD53)验证数据传输路径;
触发中断测试(DAT1 线),检查设备能否主动通知事件(如数据就绪);
对于存储卡,读取特定扇区;对于 Wi-Fi 模块,发送测试报文 ‌。
设备响应操作结果,主机据此判断是否正常 ‌。

6. ‌枚举完成阶段‌
主机确认所有测试通过后,设备进入工作状态。此时,SDIO 设备可执行正常任务(如传输数据或处理中断),主机停止枚举流程并释放控制权 ‌。

SDIO的工作电平探测和协商 

1. 协议规范与初始化机制
‌CMD8的电压强制要求‌
根据SD协议规范,设备初始化阶段(含CMD8)‌必须使用3.3V电平‌,原因包括:

‌默认供电状态‌:SD卡上电后,I/O引脚默认仅支持3.3V输入,尚未激活1.8V模式‌
‌电气兼容性‌:所有SD2.0及以上版本设备必须兼容3.3V初始通信(即使后续切至1.8V)‌

‌CMD8的功能设计‌
‌电压协商探测‌:主机通过CMD8参数声明支持的电压范围(如0x1AA表示2.7-3.6V),子卡响应包含其电压支持标志‌
‌协议版本检测‌:无CMD8响应表明子卡仅支持SD1.0协议(仅3.3V);有响应则支持SD2.0+协议(可切1.8V)‌

2. 1.8V子卡的安全机制
即便子卡仅支持1.8V工作电压,在接收3.3V CMD8时仍通过以下设计保障安全:

‌电气层保护‌
‌钳位二极管‌:子卡I/O引脚内置保护电路,将输入信号电压钳制在安全范围(通常≤VDD+0.3V)‌
‌低速模式容差‌:CMD8阶段时钟频率仅为400kHz,信号畸变风险低‌13。

‌协议层响应策略‌
子卡在3.3V信号下解析CMD8参数
若发现主机‌不支持1.8V‌(如参数未包含1.8V标志):返回电压不匹配响应(如Voltage Field = 0),触发主机放弃初始化‌
若主机‌支持1.8V‌:子卡响应电压匹配标志,后续通过CMD11切换至1.8V模式‌

3. 如不巧主机不支持sdio接口的1.8V切换,从设备的sdio接口又是1.8V的
那么主机的dts的shci主机节点就要设置no-1-8-v属性来声明不支持1.8V切换,该属性会禁用SD规范中的电压切换流程(CMD11命令),避免设备协商切换到1.8V模式,因为主机不支持1.8V,应该这样来避免流程出错
但是需要通过电平转换模块,来将3.3V的主机信号,转换成1.8V的信号到从机

SDIO 模式可分为 ‌传输协议‌ 和 ‌电气规范

 

命令体系

SDIO(Secure Digital Input Output)协议的命令体系包含多种类型,按功能和用途可分为以下四类,各类型的核心命令及作用如下表所示

🔍 ‌一、标准命令(Standard Commands)

命令 功能描述 典型应用场景 响应类型
CMD0 复位设备至空闲状态(Idle) 初始化流程起点 无响应
CMD2 获取设备的CID(Card Identification Register) 设备身份识别 R2
CMD3 获取设备的RCA(Relative Card Address) 分配唯一设备地址 R6
CMD7 通过RCA选择/取消选择设备 激活设备通信 R1/R1b
CMD8 检查设备支持的电压范围(如2.7–3.6V) SDHC/SDXC卡初始化兼容性校验 R7
CMD13 查询设备状态寄存器内容 实时监控设备异常状态 R1

二、应用命令(Application Commands, ACMD)

命令 功能描述 依赖的前置命令 响应类型
ACMD41 初始化设备并协商操作条件(OCR寄存器,含电压范围及高速支持标志HCS位) CMD55 R3
ACMD6 配置总线宽度(1-bit或4-bit模式,如参数0x00000202表示4-bit总线) CMD55 R1
ACMD51 读取设备的SCR(SD配置寄存器),获取安全特性信息 CMD55 R1

 

📡 ‌三、SDIO专属命令

命令 功能描述 响应类型 适用设备
CMD5 检测SDIO设备并获取其支持电压范围(响应包含OCR字段) R4/R5 仅SDIO设备
CMD52 单字节读写I/O设备寄存器(如配置Wi-Fi模块中断使能位) R5 仅SDIO设备
CMD53 多字节/块数据传输(如批量读写Wi-Fi模块数据缓冲区) R5 仅SDIO设备

🧩 ‌四、响应类型

SDIO协议定义了多种响应格式,与命令类型强关联:

响应类型 长度 用途 对应命令示例
R1 32-bit 返回通用状态(含错误标志) CMD7、CMD13
R1b 32-bit+ R1扩展,含忙状态指示(DAT线持续低电平) CMD12(停止传输)
R2 136-bit 返回长数据(CID/CSD寄存器内容) CMD2、CMD9
R3 32-bit 返回OCR寄存器值(电压范围) ACMD41
R6 32-bit 返回分配的RCA地址 CMD3
R7 32-bit 返回电气特性(电压支持及检查模式) CMD8
R4/R5 32-bit SDIO专用响应(含中断状态或I/O错误信息) CMD5、CMD52、CMD53

网站公告

今日签到

点亮在社区的每一天
去签到