SD-scard-对应CMD指令集讲解

1. SD的基本寄存器和基础信息描述

SCR 寄存器:

<该寄存器保存的SD的特殊性信息(例如支持的总线位宽,SD卡的版本),MMC卡没有此寄存器,获取该寄存器的数据需要从数据线读的>

CSD寄存器:

<SD的相对地址(SD卡已经保存在芯片内部) ,嵌入在SD卡内部>

OCR 寄存器:

<该寄存器保存着SD的可供电范围,并且区别是否为HC卡(根据返回的ORC回应第30位是否置1).>

CIA 参数描述:

<CIA (Card I/O Area)>

CID参数描述:

<SD卡的唯一ID号 也叫CID码>

CIS参数描述:

<标识号和长度加后续内容表示一个节点>

Card_Status寄存器

状态寄存器

SD卡的插入检测一般都是对应的中断触发脚,作为检测当前SD卡有没有被插入卡槽。

2. SD卡中的CMD命令子集

CMD_0

当前指令位,进入空闲状态,该指令无灰度

CMD_1

读OCR寄存器,获取OCR寄存器里面的必要信息

CMD_2

发送CMD2,验证SD卡是否接入,长反馈(CID),广播获取卡的CID信息

CMD_3

发送CMD3,读取SD卡是否接入RCA (地址),短反馈 , 广播获取SD卡所分配的相对地址

CMD_4

可选项: SDIO不支持DSR

CMD_6

选择服务: 在第1部分v1.10中添加了部分强制服务

CMD_7

发送CMD7,使能SD卡,如果参数值为0 , 即使取消所有选中SD卡
根据获取指定的RCA,选中SD卡,如果在选中一个卡的状态下,又选中其他的卡,那么之前的卡会自动取消选中, 如果发送地址0,则表示取消选中全部卡

CMD_8

(CMD8): 发送CMD8指令过去,CRC校验值与发送的值相同,说明当前SD卡支持SD2.0协议。

CMD_9

发送CMD9,读取CSD寄存器获取卡的相关信息, 获取SD相关的存储信息,如块大小,容量等

CMD_10

发送CMD10 , 读取CID信息

CMD_12

发送CMD12,强制停止所有传输. 停止多块传输操作

CMD_13

cmd13获取卡的状态,其实本质就是读 Card_Status 寄存器

CMD_16

设置SD卡的块大小,在CSD寄存器有对应的操作描述,

CMD17

设置SD卡按照单个区块进行操作, 使SD卡进入传输状态,读取单个块。这个命令需要附带对应的地址参数
也就是需要读取的那个地址,按照整块读取出来。

CMD18

设置SD卡按照多块进行操作 , 使SD卡进入传输状态,读取多个块,直到收到CMD12为止,当前操作
会一直按照地址顺序读下去,直到接收到停止命令。

CMD_24

使SD卡进入传输状态,写入单个块。

CMD_25

使SD卡进入传输状态,写入多个块 其实CMD24-25 和 CMD
17-18作为相对应的方向操作,一个进行读,一个进行写。都有对应的单块和多块分别。

CMD_27

写CSD寄存器/修改CSD寄存器里的数据,(不建议)

CMD_28

设置写保护块的地址

CMD_29

擦除写保护块的地址

CMD_32:

设置擦除块的起始地址,作为连续擦除机制使用

CMD_33

设置擦除块的终止地址,作为连续擦除机制使用

CMD_38

擦除所选择的块

CMD_55 ( 说明指令 )

特殊指令前命令,在发送ACMD类指令前,需要发送此命令

3. SD卡中的ACMD命令子集

要注意一下ACMD和CMD之间的区别,ACMD是特殊命令,但是发送方法和SDICARG和SDICCON的
命令发送一样,但是每次发送ACMD命令之前,一定要发送一条CMD55说明命令,发送CMD55之后说明下一条命令属于特殊命令集ACMD。

ACMD_6

设置SD卡的总线位宽,这个需要读取SCR确定

ACMD_13

SD卡状态

ACMD_41

获取SD电压值,作为测试当前SD卡的支持的协议,所需的电压值是否正常。

ACMD_51

获取SD卡的SCR寄存器的值

4. 下面SD卡状态为连续状态

CMD55+ACMD51

SD卡发送CMD55+ACMD6配置为4bit数据传输模式(根据SCR读出来的值确定),MMC卡发送CMD6来设置位宽

CMD7 + CMD16

发送CMD7,使能SD卡,使其进入传输状态),接着发送CMD16设置块大小(根据前面读取的CSD信息确定)。

CMD17/CMD18

发送CMD17/CMD18,命令的参数需要根据初始化时所判断的卡类型填写,按字节或按块.
循环读取数据,

CMD32-CMD33

连续擦除对应连续地址块的内存

5. 参考文章

https://blog.csdn.net/qq_42856778/article/details/118517617

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值