SDIO(Secure Digital Input/Output)的时序是指在数据传输过程中,各个信号(如时钟 CLK、命令 CMD、数据 DAT)之间的时间关系和操作顺序。理解 SDIO 时序对于正确驱动 SD 卡或 SDIO 设备至关重要。以下是 SDIO 时序的核心概念和工作模式:
主机 SD卡 | | |-- 发送至少74个CLK周期 --> | (复位卡,进入IDLE状态) | | |-- 发送CMD0 (GO_IDLE_STATE) -->| | |<-- 响应R1 (IDLE位=1) |-- 发送CMD8 (SEND_IF_COND) -->| (检查SD卡版本) | |<-- 响应R7 (电压范围、电气特性) |-- 循环发送CMD55+ACMD41 --> | (初始化卡,等待退出IDLE状态) | |<-- 响应R1 (IDLE位=0表示就绪) |-- 发送CMD2 (ALL_SEND_CID) -->| (获取卡识别码) | |<-- 响应R2 (CID数据) |-- 发送CMD3 (SEND_REL_ADDR) -->| (分配相对地址RCA) | |<-- 响应R1 (RCA值)
主机 SD卡 | | |-- 发送CMD17 (READ_SINGLE_BLOCK) -->| | 参数:块地址 | | |<-- 响应R1 (无错误) | | | |<-- 发送数据令牌 (0xFE) | |<-- 发送数据块 (512字节) | |<-- 发送CRC (16位) |-- 发送ACK (通过CLK) --> |
主机 SD卡 | | |-- 发送CMD24 (WRITE_SINGLE_BLOCK) -->| | 参数:块地址 | | |<-- 响应R1 (无错误) |-- 发送数据令牌 (0xFE) --> | |-- 发送数据块 (512字节) --> | |-- 发送CRC (16位) --> | | |<-- 响应数据响应令牌 | | (0x05=成功,其他=错误) | | (随后进入写状态,直到忙结束)
SPI 模式是 SDIO 的简化版本,主要特点:
问题 | 可能原因 | 解决方案 |
---|---|---|
初始化失败 | CLK 频率过高、CMD 响应超时 | 降低初始化频率(如≤400kHz) |
数据传输错误 | 建立 / 保持时间不足、CLK 抖动 | 添加端接电阻、优化 PCB 走线 |
CRC 校验失败 | 时钟不稳定、电磁干扰 | 增加电源滤波、屏蔽干扰源 |
写操作无响应 | 卡忙状态超时、写保护 | 延长超时时间、检查写保护开关 |
SDIO 时序是驱动 SD 卡的基础,理解初始化流程、数据传输模式和高速优化方法对成功开发至关重要。实际应用中需结合硬件设计(如 PCB 走线)和软件驱动(如命令发送时序)综合考虑,确保信号稳定和时序匹配。