当前位置: 首页 > news >正文

SDIO协商,枚举,CMD等概念

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位)CMD55R3
ACMD6配置总线宽度(1-bit或4-bit模式,如参数0x00000202表示4-bit总线)CMD55R1
ACMD51读取设备的SCR(SD配置寄存器),获取安全特性信息CMD55R1

 

📡 ‌三、SDIO专属命令

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

🧩 ‌四、响应类型

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

响应类型长度用途对应命令示例
R132-bit返回通用状态(含错误标志)CMD7、CMD13
R1b32-bit+R1扩展,含忙状态指示(DAT线持续低电平)CMD12(停止传输)
R2136-bit返回长数据(CID/CSD寄存器内容)CMD2、CMD9
R332-bit返回OCR寄存器值(电压范围)ACMD41
R632-bit返回分配的RCA地址CMD3
R732-bit返回电气特性(电压支持及检查模式)CMD8
R4/R532-bitSDIO专用响应(含中断状态或I/O错误信息)CMD5、CMD52、CMD53
http://www.dtcms.com/a/287023.html

相关文章:

  • SSM框架——Day4
  • 文件管理-文件控制块和索引节点
  • 深入解析Linux文件描述符:原理、机制与应用实践
  • 光伏系统遮挡分析与设计优化策略
  • 网络基础12--可靠性概述及要求
  • b-up:Enzo_Mi:深度学习基础知识
  • 回归预测 | MATLAB实现SA-BP模拟退火算法优化BP神经网络多输入单输出回归预测
  • 7.19 pq | 并查集模板❗|栈循环|数组转搜索树
  • CCF编程能力等级认证GESP—C++4级—20250628
  • Nestjs框架: 关于controller中的常用装饰器
  • 3.3 参数传递方式
  • 写case杂记
  • Glary Utilities(系统优化工具) v6.20.0.24 专业便携版
  • JavaSE -- 数组详细讲解(数组介绍,Arrays常用方法,二维数组创建)
  • Redis学习其三(订阅发布,主从复制,哨兵模式)
  • 优迅股份IPO隐忧:毛利水平“两连降”,研发费用率不及行业均值
  • decltype是什么,什么作用?
  • 【c++】指针的另一大用途:限制实参必须是变量
  • Fish Speech:开源多语言语音合成的革命性突破
  • Nestjs框架: 基于TypeORM的多租户功能集成和优化
  • LeetCode1047删除字符串中的所有相邻重复项
  • wsl 安装 nvm
  • [QOI] qoi_desc | qoi_encode | qoi_decode
  • 高防IP能够防御CC攻击吗?它具备哪些显著优势?
  • 服务管理智能化:R²AIN SUITE 升级带来的两大功能更新哪些值得关注?
  • T5(Text-to-Text Transfer Transformer) 模型
  • 20250718-5-Kubernetes 调度-Pod对象:重启策略+健康检查_笔记
  • 【Spring WebFlux】什么是响应式编程
  • 前缀和 HASH
  • proxy_cache缓存系统