注:部分图片来源于SD Association及网络。
0. Specification说明
- 《Part1_Physical_Layer_Simplified_Specification_Ver2.00》
SD卡物理层说明,描述了控制器引脚、SD协议规范、CMD命令说明、RESPONSE说明等,主要为编写SD Host控制器RTL代码的硬件工程师准备。 - 《PartA2_SD_Host_Controller_Simplified_Specification_Ver2.00》
SD卡控制器使用说明,描述了控制器内部寄存器地址作用、控制器使用注意点等,主要为编写SD卡驱动程序的软件工程师准备。 - 《PartE1_SDIO_Simplified_Specification_Ver2.00》
SDIO模式下的协议说明,文件1中仅描述了SPI模式下的使用说明,该文件是文件1的补充文件。
1. SD卡协议概述
1 SD、SDIO和MMC
SD卡在MMC(MultiMedia Card)卡的基础上发展而来,增加了更高的安全性何更快的读写速度。
一般来说,MMC卡可以被SD卡驱动读写数据,但SD卡不能被MMC卡驱动读写。
SDIO是SD卡的一种传输模式,另一种是SPI模式。
2 名词解释
- 存储容量级别
- SD卡
普通SD卡,容量上限为2GB - SDHC
SDHC是“High Capacity SD Memory Card”的缩写,即“高容量SD存储卡”,是SD 2.0的系统规范中规定的新规范,指代容量大于2GB小于等于32GB的SD卡。 - SDXC卡
扩展型的SD卡,最高容量可达2TB
- 速度等级
- UHS
“Ultra-High Speed 超高速”的缩写,支持超高速总线接口的存储卡一般都会有着更快的读写速度,这一标准由SD卡协会制定。 - class
sd卡中class代表数据传输速度,详见链接:SD卡上面的Class代表什么意思_Linuxrc的博客-CSDN博客
3 常用命令
参考链接:
SD Host和card——常用CMD_KGback的博客-CSDN博客
4 返回类型
响应命令均通过CMD信号线或MSOI信号线传输。
5 写入命令格式
SD卡的命令格式由6个字节(48bit)组成,发送数据时高位在前,SD卡的写入格式如下:
- Byte1 为命令号,格式为 01xx_xxxx;如CMD5为 01000101
- Byte2~5 为命令参数,若保留则为0;
- Byte6 为校验数据,前7位CRC(循环冗余校验)校验位,最后一位为停止位0。注意SPI模式下不进行CRC校验
7 CRC校验
对于CMD来说,CRC是包含在每个command何response的数据位中的。
对于DAT来说,CRC在每个block传输后发送的
2. Host和card的Bus模式
SD卡有两种运行模式,分别是SDIO模式何SPI模式
1 SD模式
- 输入输出信号
- CLK:时钟线
- CMD:inout类型
命令传输和从机响应都通过CMD线,通过一个 start位=0 开始,一个 stop位=1 结束;先传输高位,再传输低位 - DATA[3:0]:inout类型
写数据和读数据都通过DATA线,数据传输都以block为单位传输,每次传输完一个block都会以CRC信号结尾
2 SPI模式
SPI模式无需做CRC校验
- 输入输出信号
- cs
- MISO
- MOSI
- SCLK
3. SD Host控制器特性
4. SD card特性
SD的地址划分可以根据字节地址和扇区地址划分
如果按扇区划分,每个扇区有512 byte或者1024 byte的空间
1 SD卡写保护
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/82474.html