本帖最后由 zhang602054856 于 2013-11-26 16:19 编辑
SD协议总结
一、 协议概述1. 供电电压必须是3.3V
2. 通讯模式的切换:SD模式和SPI模式;
默认情况下的
通信模式是SD模式,切换SPI模式的方法,其关键的地方就是先上电延时大于74个时钟周期后发送复位命令CMD0,复位成功(接收到0x01的响应)后,连续发送CMD55和ACMD41,直到响应 0X00为止,此时SD卡已经进入SPI模式。
3. SD模式下允许有一个主机, 多个从机(即多个卡), 主机可以给从机分别地址. 主机发命令,有些命令是发送给指定的从机,有些命令可以以广播形式发送. SD模式下可以选择总线宽度, 即选用几根DAT信号线, 可以在主机初始化后设置.
4. 内存组织
数据读写的基本单元是一个字节,可以按要求组织成不同的块。
Block:块大小可以固定,也可以改变,允许的块大小与实际大小等信息存储在CSD 寄存器。
Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的,大小信息存储在CSD 寄存器。
WPGroup:写保护单位。大小包括几个group,写保护由一位决定,对每个设备大小是固定的,存储在CSD 寄存器。
5. 数据擦除
SD 卡数据擦除的最小单位是sector。为了加速擦除操作,多个sector 可以同时擦除。
为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址,在地址范围内的所
有sector将被擦除。
SD模式
二、 命令格式与内容1. 格式SD模式下的命令和数据流都有一个开始位和结束位.
命令: 是在CMD上传输的用于启动一个操作的比特流.由主机发往从机,可以是点对点也可以是广播的.
响应: 是在CMD上传输的用于之前命令回答的比特流. 由从机发往主机.SD卡有多种不同的响应。
数据: 是在DAT上传输的比特流, 双向传输. 当使用宽总线模式时,数据同时在4根数据线上传输。开始位、结束位和CRC在每根数据线上传送。
CRC对每根数据线单独计算。CRC状态响应和Busy信号只通过DAT0由卡发送给主机。
2. 内容 命令名称 | | | | |
| | | | 重置卡到idle状态,CS在LOW状态时接到此命令,Card将进入SPI模式 |
| | | | |
| | | | |
| 31~0: 0x00(1bit) 0x10(4bit) | | SD_CMD_APP_SD_SET_BUSWIDTH | |
| | | | |
| | | | |
| | | | 寻址卡并让其发送卡定义数据CSD(读CSD寄存器) |
| | | | |
|
| | | |
| | | | 寻址卡并发送卡状态寄存器(读Card_Status寄存器) |
| |
| | |
|
|
|
| |
| | | | |
| | | | |
| | | | |
|
|
|
| |
| | | | |
| | | | 连续写多个块直到STOP_TRANSMISSION命令(CMD12) |
| | | | |
|
|
|
| |
| | | | 设置地址组保护位,写保护由卡配置数据的WP_GRP_SIZE指定 |
| | | | |
| | | | |
|
|
|
| |
| | | | |
| | | | |
| | | | |
|
|
|
| |
| | | APP_CMD(所有应用命令之前
必须先执行CMD55) | |
| | | | |
|
|
|
| |
| | | | |
| | | | |
| | | | |
| | | | 设置写前预擦除的数据块数目(用来加速多数据块
写操作)。“1”=默认(一个块) |
| | | | |
| | | | 连接[1]/断开[0]卡上CD/DAT3(pin 1]的50K 欧
姆上拉电阻。上拉电阻可用来检测卡 |
| | | | |
CMD8命令格式
VHS位定义
Voltage supplied | |
| |
| |
| Reserved for low voltage range |
| |
| |
| |
CMD8这条指令是一条协商SD卡工作电压以及判断SD卡是1.0的版本还是2.0版本的指令,有相应的话就是2.0的卡,参数0x1aa,其中0x100是表示VHS,电压范围是1.7V~3.6V。为什么checkpattern是0xaa,不得而知。
三、 应答所有的应答都是通过CMD发送,响应以MSB 开始,不同的应答长度可能不同,响应以起始位开始(通常为“0”),接着这是传输方向的位(卡为0)。除了R3 外其他响应都有CRC。每个响应都以结束位(通常为“1”)结束。总共有4种应答类型。
R1长度为48bit,注意每个块传输完成后有一个BUSY位
R1b 与R1类似,只是将 BUSY位加入响应中
R2(CIDCSD寄存器)长度为136位,CID为CMD2和CMD10的应答,CSD为CMD9的应答
Bit Position | | | | | |
| | | | | |
| | | | | |
| | | | CID/CSDregister Incl-internal CRC7 | |
R3(OCR寄存器)长度为48位,作为ACMD41的应答
R6(RCA地址应答)
仅适用于SD 卡,这是一个SD卡对CMD3命令的正常响应。
当发送CMD3命令到SD卡时,卡的状态位会改变
2