SDIO WIFI CMD
SDIO WIFI CMD0~CMD55 各自功能介绍
SDIO(Secure Digital Input/Output)协议定义了一系列命令(CMD0~CMD55)用于与设备通信,包括 SD 卡和 SDIO 功能卡(如 WiFi 模块)。以下是 CMD0~CMD55 的核心功能介绍,分为基础命令、SD 卡专用命令、SDIO 专用命令和应用特定命令四部分:
一、基础命令(CMD0~CMD15)
这些命令是 SD 卡和 SDIO 设备的通用命令,用于初始化、识别和基本通信:
| 命令 | 名称 | 功能描述 | 
|---|---|---|
| CMD0 | GO_IDLE_STATE | 重置设备,使其进入空闲状态(所有设备必须支持)。 | 
| CMD1 | SEND_OP_COND | 启动初始化流程,检查设备支持的电压范围和工作条件(SD 卡用)。 | 
| CMD2 | ALL_SEND_CID | 请求所有设备发送其 CID(卡识别号,唯一标识)。 | 
| CMD3 | SEND_RELATIVE_ADDR | 分配相对地址(RCA)给设备,用于后续通信(替代广播地址)。 | 
| CMD4 | SET_DSR | 设置设备的驱动强度(Driver Stage Register)。 | 
| CMD5 | IO_SEND_OP_COND | SDIO 专用命令,初始化 IO 模式并检查工作条件(类似 CMD1,但用于 SDIO 功能)。 | 
| CMD6 | SWITCH_FUNC | 切换 SDIO 设备的功能(如在多功能卡中选择不同功能)或设置总线宽度。 | 
| CMD7 | SELECT_CARD | 选择或取消选择特定设备,使其进入或退出传输状态。 | 
| CMD8 | SEND_IF_COND | 检查设备支持的电压和电气条件(用于 SDHC/SDXC 卡)。 | 
| CMD9 | SEND_CSD | 请求设备发送 CSD(卡规格数据),包含容量、性能等信息。 | 
| CMD10 | SEND_CID | 请求设备发送 CID(卡识别号)。 | 
| CMD11 | STOP_TRANSMISSION | 停止当前数据传输(用于 SD 卡数据块写入)。 | 
| CMD12 | STOP_TRANSMISSION | 强制停止当前数据传输(带响应)。 | 
| CMD13 | SEND_STATUS | 请求设备发送状态寄存器内容。 | 
| CMD15 | GO_INACTIVE_STATE | 使设备进入非活动状态(释放 RCA)。 | 
二、SD 卡专用命令(CMD16~CMD51)
这些命令主要用于 SD 卡的数据存储功能,SDIO 设备可能部分支持:
| 命令 | 名称 | 功能描述 | 
|---|---|---|
| CMD16 | SET_BLOCKLEN | 设置数据块长度(默认 512 字节)。 | 
| CMD17 | READ_SINGLE_BLOCK | 读取单个数据块。 | 
| CMD18 | READ_MULTIPLE_BLOCK | 连续读取多个数据块。 | 
| CMD24 | WRITE_BLOCK | 写入单个数据块。 | 
| CMD25 | WRITE_MULTIPLE_BLOCK | 连续写入多个数据块。 | 
| CMD27 | PROGRAM_CSD | 编程 CSD 寄存器(需解锁)。 | 
| CMD28 | SET_WRITE_PROT | 设置写保护。 | 
| CMD29 | CLR_WRITE_PROT | 清除写保护。 | 
| CMD30 | SEND_WRITE_PROT | 查询写保护状态。 | 
| CMD32 | ERASE_WR_BLK_START | 设置擦除块的起始地址。 | 
| CMD33 | ERASE_WR_BLK_END | 设置擦除块的结束地址。 | 
| CMD38 | ERASE | 擦除已设置的块。 | 
| CMD51 | SEND_SCR | 发送 SD 配置寄存器(SCR)内容,包含 SD 卡版本等信息。 | 
三、SDIO 专用命令(CMD52~CMD55)
这些命令是 SDIO 协议的核心,用于与 SDIO 功能卡(如 WiFi 模块)通信:
| 命令 | 名称 | 功能描述 | 
|---|---|---|
| CMD52 | IO_RW_DIRECT | 核心命令:直接读写单个寄存器,适用于小数据量(≤32 位)的操作。 | 
| - 写操作:通过 ARG字段指定寄存器地址和数据。 | ||
| - 读操作:通过 ARG字段指定寄存器地址,数据从响应中获取。 | ||
| CMD53 | IO_RW_EXTENDED | 核心命令:读写多个寄存器或大块数据,支持块模式(Block Mode)或流模式。 | 
| - 块大小:通常为 512 字节,可配置。 | ||
| - 方向:通过 ARG字段的位 29 指定读写方向。 | ||
| CMD54 | - | 保留,未使用。 | 
| CMD55 | APP_CMD | 重要命令:指示下一个命令是应用特定命令(如 SDIO_WiFi 专用命令)。 | 
四、应用特定命令(ACMDxx)
这些命令需先发送 CMD55,再发送对应的 ACMD:
| 命令 | 名称 | 功能描述 | 
|---|---|---|
| ACMD41 | SD_SEND_OP_COND | SD 卡专用,发送操作条件并初始化 SD 卡(SDHC/SDXC 卡必须使用)。 | 
| ACMD61 | SET_BUS_WIDTH | 设置总线宽度(1 位、4 位或 8 位)。 | 
| ACMD6 | SET_SDIO_BUS_WIDTH | SDIO 专用,设置 SDIO 总线宽度(1 位或 4 位)。 | 
WiFi 模块常用命令流程
- 
初始化阶段:- CMD0 → CMD5 → CMD52(读取制造商 ID、产品 ID) → CMD52(配置基本参数)。
 
- 
数据传输阶段:- CMD53(读):从 WiFi 接收缓冲区读取网络数据包。
- CMD53(写):向 WiFi 发送缓冲区写入待发送的网络数据包。
 
- 
配置阶段:- CMD52:设置 WiFi 工作模式(STA/AP)、SSID、密码等。
 
注意事项
- 响应类型:不同命令需要不同的响应类型(如 R1、R1b、R2 等),需根据模块规格调整。
- 寄存器映射:WiFi 模块的寄存器地址空间由厂商定义,常见寄存器包括状态寄存器、控制寄存器和数据缓冲区。
- SDIO vs SD 卡:SDIO 命令主要用于控制功能(如 WiFi),而 SD 卡命令主要用于数据存储。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号