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

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.xdnf.cn/news/15874.html

相关文章:

  • [特殊字符] Spring Boot 常用注解全解析:20 个高频注解 + 使用场景实例
  • 前端篇——番外篇 Bootstrap框架
  • (笔记+作业)第五期书生大模型实战营---L2G2000 GraphGen:训练数据合成实践
  • 前端之CSS
  • LP-MSPM0G3507学习--04GPIO控制
  • 磁悬浮转子不平衡质量的高精度控制:从原理到实战
  • 一文讲清楚React的render优化,包括shouldComponentUpdate、PureComponent和memo
  • Android音视频探索之旅 | Webrtc 1对1音视频通话核心流程分析
  • 借助AI学习开源代码git0.7之三git-init-db
  • YOLO演变史(一)
  • CSS样式中的布局、字体、响应式布局
  • CMakeLists.txt 配置文件
  • 非线性优化相关库笔记
  • 【面试题】大厂高压面经实录丨第二期
  • @Qualifier(“beanName“) 详解
  • 一个逻辑问题
  • 《设计模式之禅》笔记摘录 - 8.命令模式
  • Day06_C语言网络编程20250718mobus重点
  • gin数据解析和绑定
  • 门控线性单元GLU (Gated Linear Unit)
  • Go语言流程控制(if / for)
  • 一小时学习Redis
  • websocket案例 599足球比分
  • 海森矩阵(Hessian Matrix)在SLAM图优化和点云配准中的应用介绍
  • 实战指南|智慧无人机安防系统搭建全流程解析
  • 深入理解Linux文件操作:stdin/stdout/stderr与C语言文件函数全解析
  • PDF 拆分合并PDFSam:开源免费 多文件合并 + 按页码拆分 本地处理
  • 突破性量子芯片问世:电子与光子首次集成,开启量子技术规模化应用新篇章
  • 暑期自学嵌入式——Day05补充(C语言阶段)
  • 二分答案之第 K 小/大