文章目录
1.响应类型
响应:总是在命令线(CMD) 上串行传输。
起始位:总是 0。
传输位:总是 1。
结束位:总是 1。
CRC校验:大部分响应都包含CRC校验位,用于检测传输错误。
1.1 R1 (正常响应)
长度:48位
内容:包含卡的状态信息。
结构:
| 47 | 起始位(0) |
| 46 | 传输位(1) |
| 45:40 | 命令索引,当初发送出去的是哪个命令,对应的卡响应就会返回这个命令号 |
| 39:8 | 32位的卡状态寄存器(非常重要!主机通过它判断命令是否成功,以及卡当前状态) |
| 7:1 | CRC7 |
| 0 | 结束位(1) |
1.2 R2 (CID, CSD 寄存器响应)
长度:136位
内容:用于读取卡的标识和规格寄存器。
结构:
| [135] | 起始位 (0) |
| [134] | 传输位 (1) |
| [133:128] | 命令索引(通常是 CMD2, CMD10 的索引) |
| [127:1] | CID或CSD寄存器的完整内容(128位) |
| [0] | 结束位 (1) |
举例:
| CMD2 | 请求卡发送 CID(Card Identification Register,卡识别寄存器,每个卡唯一)。 |
| CMD10 | 请求卡发送 CSD(Card Specific Data Register,卡特定数据寄存器,包含卡的容量、读写速度等信息)。 |
1.3 R3 (OCR 寄存器响应)
长度:48位
内容:用于读取卡的OCR(Operating Conditions Register,操作条件寄存器)。
结构:
| [47] | 起始位 (0) |
| [46] | 传输位 (1) |
| [45:40] | 命令索引(CMD58 的索引) |
| [39:8] | 32位的OCR寄存器(主要用来判断卡的上电流程是否完成,以及支持的电压范围) |
| [7:1] | CRC位被保留,通常置为1(与R1的关键区别) |
| [0] | 结束位 (1) |
使用命令举例:CMD58(读取OCR寄存器)。
1.4 R6 (发布RCA响应)
长度:48位
内容:专门用于响应 CMD3命令,为卡分配相对地址(RCA)。
结构:
| [47] | 起始位 (0) |
| [46] | 传输位 (1) |
| [45:40] | 命令索引(CMD3 的索引) |
| [39:16] | 卡返回的新的RCA(相对卡地址)(16位) |
| [15:0] | 卡状态位(与R1的32位状态不同,这里只返回16位关键状态,比如卡是否就位) |
使用命令举例:CMD3(为卡分配相对地址,用于在有多张卡时区分它们)。
1.5 R7 (SD卡接口条件响应)
长度:48位
内容:用于响应 CMD8命令,检查卡支持的电压范围和协议版本。
结构:
| [47] | 起始位 (0) |
| [46] | 传输位 (1) |
| [45:40] | 命令索引(CMD8 的索引) |
| [39:20] | 保留位 |
| [19:16] | 卡支持的电压范围(如果卡支持主机请求的电压,它会原样返回主机发送的电压模式) |
| [15:8] | 保留位 |
| [7:1] | 检查模式(卡会原样返回主机发送的检查模式) |
| [0] | 结束位 (1) |
使用命令举例:CMD8(发送接口条件,用于识别SD卡V2.0或更高版本)。
2.命令类型
2.1 bc (Broadcast Command - 广播命令)
无地址:不包含数据地址
无响应:大多数bc命令没有响应(R0)
应用:发送给所有连接的SD卡,如初始化命令
示例:CMD0 (GO_IDLE_STATE) - 重置所有卡
2.2 bcr (Broadcast Command with Response - 带响应广播命令)
无地址:不包含数据地址
有响应:卡片会返回响应
应用:发送给所有卡,但期望响应
示例:CMD8 (SEND_IF_COND) - 发送接口条件
2.3 ac (Address Command - 地址命令)
有地址:包含数据地址
有响应:卡片返回响应
有数据:通常伴随数据传输
示例:CMD17 (READ_SINGLE_BLOCK) - 读取单块
2.4 adtc (Address Data Transfer Command - 地址数据传输命令)
有地址:包含数据地址
有响应:卡片返回响应
数据流:涉及复杂的数据传输(多块、写入等)
示例:CMD25 (WRITE_MULTIPLE_BLOCK) - 写入多块
2.5 举例
./include/linux/mmc/sd.h:23:#define SD_SWITCH_VOLTAGE 11 /* ac R1 */
ac:这是一个地址命令,需要提供地址参数
R1:命令执行后,卡会返回R1类型的响应
1553

被折叠的 条评论
为什么被折叠?



