JJJ:mmc指令的类型

1.响应类型

响应:总是在命令线(CMD) 上串行传输。
起始位:总是 0。
传输位:总是 1。
结束位:总是 1。
CRC校验:大部分响应都包含CRC校验位,用于检测传输错误。

1.1 R1 (正常响应)

长度:48位
内容:包含卡的状态信息。
结构:

47起始位(0)
46传输位(1)
45:40命令索引,当初发送出去的是哪个命令,对应的卡响应就会返回这个命令号
39:832位的卡状态寄存器(非常重要!主机通过它判断命令是否成功,以及卡当前状态)
7:1CRC7
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类型的响应

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值