SD3.0笔记

在这里插入图片描述

SD卡容量描述

  1. 标准容量卡(SDSC):最大容量为2GB。

  2. 高容量卡(SDHC):容量大小为2~32GB的卡。

  3. 扩展容量卡(SDXC):容量大小为32GB~2TB的卡。

SD卡寄存器

  SD卡共有8个寄存器,用于设定或表示SD卡信息。这些寄存器只能通过对应的命令访问,对SD卡进行控制操作需要使用对应命令来操作,SDIO共定义了64个命令,每个命令都有特殊的意义,可以实现一些特定的功能,SD卡接收到命令后,根据相应命令对相关寄存器进行修改,程序控制中只需要发送组合命令就能实现SD卡的控制和读写操作。

SD卡寄存器
寄存器名称宽度描述
CID128卡识别号(Card identification number):用于识别卡的个体号码(唯一的)。
RCA16相对地址(Relative card address):卡的本地系统地址,初始化时,动态的由卡建议,主机核准。
DSR16驱动级寄存器(Driver Stage Register):配置卡的输出驱动。
CSD128卡的特定数据(Card Specific Data):卡的操作条件信息。
SCR64SD配置寄存器(SD Configuration Register):有关SD卡的特殊功能信息。
OCR32操作条件寄存器(Operation Conditions Register)。
SSR512SD状态(SD Status):SD卡专有特征信息。
CSR32卡状态(Card Status):卡状态信息。

SDIO命令

SD命令类型

  • 无响应广播命令(bc):发送到所有卡,不返回任务响应;
  • 带响应广播命令(bcr):发送到所有卡,同时接收来自所有卡响应;
  • 寻址命令(ac):发送到选定卡,DAT线无数据传输;
  • 寻址数据传输命令(adtc):发送到选定卡,DAT线有数据传输。
基本命令(class 0)
SDIO命令缩写描述
CMD0GO_IDLE_STATE重置所有卡至Idle状态
CMD1SEND_OP_COND请求idle状态设备通过CMD线发送其工作条件寄存器结构
CMD2ALL_SEND_CID要求所有卡发送CID号
CMD3SEND_RELATIVE_ADDR要求所有卡发布一个新的相对地址
CMD4SET_DSR对所有的卡DSR寄存器进行编程
CMD5保留保留
CMD6保留保留
CMD7SELECT/DESELECT_CARD根据获取的指定的RCA,选中SD卡。如果在选中一个卡的状态下,有选中其他的卡,那么之前的卡会自动取消选中,如果发送地址0,则表示取消选中所有卡。当RCA等于0时,主机可以执行以下操作的其中一个:1、使用其他RCA号码取消选择卡。2、重新发送CMD3以将其RCA编号更改为除0以外的其他值,然后使用RCA=0的CMD7选择卡。
CMD8SEND_IF_COND发送SD存储卡接口信息,包括主机供电信息并询问是否支持该电压。保留位设置为0
CMD9SEND_CSDSD卡从CMD线发送CSD相关数据给Host
CMD10SEND_CIDSD卡从CMD线发送CID相关数据给Host
CMD11VOLATILE_SWITCH切换总线电平至1.8V
CMD12STOP_TRANSMISSION强制卡停止传输
CMD13SEND_STATUS被选中的卡返回状态
CMD14保留保留
CMD15GO_INACTIVE_STATE使选中的卡进入Inactive(非活动)状态,当Host明确想要停用卡时发送此命令,保留位设置为0。
面向块的读命令(class 2)
CMD命令缩写描述
CMD16SET_BLOCKLEN对于标准容量SD存储卡,此命令设置所以后续块命令(读取、写入、锁定)的块长度(以字节为单位)。默认块长度固定为512Bytes,仅当CSD中允许部分块读取操作时,设置长度才对内存访问命令有效。对于SDHC和SDXC卡,块长度由CMD16设置
CMD17READ_SINGLE_BLOCK对于标准SD卡,此命令用于读取SD卡的一个块的数据,读取的大小由SET_BLOCKLEN命令指定。对于SDHC和SDXC卡,块大小固定为512Bytes。
CMD18READ_MULTIPLE_BLOCK连续读取SD卡多数据块的数据,直到主机发送CMD12指令。该指令带一个参数,表示要读取的数据块首地址,块长度由CMD16命令设置。
CMD19SEND_TUNING_BLOCK在调整模式下发送64bytes的特定数据块,用于SDR50和SDR104模式最佳采样点的检测。
CMD20SPEED_CLASS_CONTROL速度等级控制命令。
CMD21保留保留
CMD22保留保留
CMD23SET_BLOCK_COUNT指定CMD18和CMD25的块个数
面向块的写命令(class 4)
CMD命令缩写描述
CMD16SET_BLOCKLEN见class2
CMD20SPEED_CLASS_CONTROL速度等级控制命令
CMD23SET_BLOCK_COUNT指定CMD18和CMD25的块个数
CMD24WRITE_BLOCK写入单块数据,对于标准SD卡(SDSC)块长度取决于CMD16,对于SDHC和SDXC卡,块长度固定为512Bytes
CMD25WRITE_MULTIPLE_BLOCK连续写如多个数据块,直到出现STOP_TRANSMISSION命令,块长度与WRITE_BLOCK一致
CMD26保留保留
CMD27PROGRAM_CSD写CSD寄存器
面向块的写保护命令(class 6)
CMD命令缩写描述
CMD28SET_WRITE_PROT如果SD卡支持写保护功能,此命令设置寻址组的写保护位,SDHC和SDXC不支持此命令。
CMD29CLR_WRITE_PROT如果SD卡支持写保护功能,此命令清除寻址组的写保护位,SDHC和SDXC不支持此命令。
CMD30SEND_WRITE_PROT如果SD卡支持写保护功能,此命令用于获取SD卡的写保护位的状态,SDHC和SDXC不支持此命令。
擦除命令(class 5)
CMD命令缩写描述
CMD32ERASE_WR_BLK_START设置要擦除的第一个写入块的地址。
CMD33ERASE_WR_BLK_END设置要连续擦除的最后一个块的地址。
CMD38ERASE擦除所有先前选择的写入块。
CMD39保留保留
CMD41保留保留
锁定卡(class 7)
CMD命令缩写描述
CMD16SET_BLOCKLEN见class2
CMD40为安全规范保留为安全规范保留
CMD42LOCK_UNLOCK用于设置/重置密码或锁定/解锁卡,数据块的大小由SET_BLOCK_LEN设置,参数和锁卡数据中的保留位应设置为0。
CMD43-49 CMD51保留保留
特定于应用程序的命令(class 8)
CMD命令缩写描述
CMD55APP_CMD向卡发送下一个命令时应用程序特定命令而不是标准命令。
CMD56GEN_CMD用于将数据块传输到卡或从卡获取数据块以用于通用/应用特定命令。对于SDSC卡块长度由SET_BLOCK_LEN设置。对于SDHC和SDXC卡,块长度固定为512Bytes。主机设置RD/WR=1用于从卡读取数据,设置为0用于向卡写入数据。
CMD58-59 CMD60-63保留保留
I/O模式命令(class 9)
CMD命令缩写描述
CMD52-54SDIO指令SDIO指令
SD卡应用程序特定命令
ACMD命令缩写描述
ACMD1-5保留保留
ACMD6SET_BUS_WIDTH定义数据位宽(00=1位,10=4位总线)用于数据转移。允许的数据总线宽度在SCR寄存器中给出。
ACMD7-12保留保留
ACMD13SD_STATUS发送SD卡状态。
ACMD14-16为安全规范保留为安全规范保留
ACMD17保留保留
ACMD18保留,用于SD安全应用程序保留,用于SD安全应用程序
ACMD19-21保留保留
ACMD22SEND_NUM_WR_BLOCKS发送已写入(无错误)的数据块个数,相应为32bit+CRC数据块,如果WRITE_BL_PAARTIAL = ‘0’,则ACMD22的长度始终为512Bytes,如果WRITE_BL_PAARTIAL = ‘1’,则ACMD22的长度是执行写命令时使用的块长度。
ACMD23SET_WR_BLK_ERASE_COUNT设置写入前要预擦除的写入块数(用来加速多数据块操作) ‘1’ = default)一个块1
ACMD24保留保留
ACMD25为SD卡安全应用预留为SD卡安全应用预留
ACMD26为SD卡安全应用预留为SD卡安全应用预留
ACMD27-28为安全应用预留为安全应用预留
ACMD29保留保留
ACMD30-35为安全规范保留为安全规范保留
ACMD36-37保留保留
ACMD38为SD卡安全应用预留为SD卡安全应用预留
ACMD39-40保留保留
ACMD41SD_SEND_OP_COND发送主机容量支持信息(HCS)并要求被访问的卡在CMD线路的响应中发送其状态寄存器(OCR)的响应内容。当卡收到SEND_IF_COND时HCS有效。
ACMD42SET_CLR_CARD_DETECT连接[1]/断开[0]卡上的CD/DAT(pin 1)的50Ω上拉电阻。
ACMD43 ACMD49为SD卡安全应用预留
ACMD51SEND_SCR读取SD卡配置寄存器CSR
ACMD52-54为安全规范保留为安全规范保留
ACMD55相当于CMD55
ACMD56-59为安全规范保留为安全规范保留
开关功能命令(class10)
CMD命令缩写描述
CMD6SWITCH_FUNC检查可切换功能(模式0)和开关卡功能(模式1)。
CMD34-37 CMD50 CMD57为CMD6设置的每个命令系统保留为CMD6设置的每个命令系统保留

🎈
🤔
🍟


  1. 无论是否使用预擦除 (ACMD23) 功能,都应使用命令 STOP_TRAN(CMD12) 来停止 Write Multiple Block 中的传输。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值