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 模块常用命令流程

  1. 初始化阶段:
    • CMD0 → CMD5 → CMD52(读取制造商 ID、产品 ID) → CMD52(配置基本参数)。
  2. 数据传输阶段:
    • CMD53(读):从 WiFi 接收缓冲区读取网络数据包。
    • CMD53(写):向 WiFi 发送缓冲区写入待发送的网络数据包。
  3. 配置阶段:
    • CMD52:设置 WiFi 工作模式(STA/AP)、SSID、密码等。

注意事项

  • 响应类型:不同命令需要不同的响应类型(如 R1、R1b、R2 等),需根据模块规格调整。
  • 寄存器映射:WiFi 模块的寄存器地址空间由厂商定义,常见寄存器包括状态寄存器、控制寄存器和数据缓冲区。
  • SDIO vs SD 卡:SDIO 命令主要用于控制功能(如 WiFi),而 SD 卡命令主要用于数据存储。
posted @ 2025-06-24 14:44  tianxincode  阅读(354)  评论(0)    收藏  举报