【SDIO】SD2.0协议分析总结(一)-- SD卡基本概率介绍

相关文章

《【SDIO】SDIO、SD卡、FatFs文件系统相关文章索引》

1.前言

由于目前使用的硬件平台STM32只支持SD2.0,所以后面的介绍主要是参考《Part1_Physical_Layer_Simplified_Specification_Ver2.00.pdf》的学习总结。

2.SD卡简介

SD 卡(Secure Digital Memory Card)在我们生活中已经非常普遍了,控制器对 SD卡进行读写通信操作一般有两种通信接口可选,一种是 SPI接口,另外一种就是 SDIO 接口。SDIO 全称是安全数字输入/输出接口,多媒体卡(MMC)、SD 卡、SD I/O 卡都有 SDIO 接口。SD I/O 卡本身不是用于存储的卡,它是指利用 SDIO 传输协议的一种外设。比如 Wi-Fi Card,它主要是提供 Wi-Fi功能,有些 Wi-Fi模块是使用串口或者 SPI接口进行通信的,但 Wi-Fi SDIO Card是使用 SDIO 接口进行通信的。
在这里插入图片描述
SD卡按内存容量分类如下:

简称 全称 容量大小 SD版本
SDSC Standard Capacity SD Memory Card <=2GB 2.0版本以上
SDHC High Capacity SD Memory Card 2GB~32GB 2.0版本以上
SDXC Extended Capacity SD Memory Card 32GB~2TB 3.0版本以上
SDUC Ultra Capacity SD Memory Card 2TB~128TB 8.0版本以上

总线速度模式分类如下:

SD版本 总线速度 总线接口
2.0 最高速度 < 25 MB/sec 1. 支持4条3.3V数据线High Speed模式
3.0 最高速度 < 104 MB/sec 1. 支持4条3.3V数据线High Speed模式
2. 支持4条1.8V数据线 UHS-I模式
6.0 最高速度 < 6.24Gbps per lane 1. 支持4条3.3V数据线High Speed模式
2. 支持4条1.8V数据线 UHS-I模式
3. 支持UHS-II、UHS-III不同的接口总线模式
8.0 最高速度 < 3938MB/s 1. 支持4条3.3V数据线High Speed模式
2. 支持4条1.8V数据线 UHS-I模式
3. 支持UHS-II、UHS-III不同的接口总线模式
4. 支持PCIe Gen 4 2 lanes不同的接口总线模式

3. SD总线Pin和Register分布

一张 SD卡包括有存储单元存储单元接口电源检测卡及接口控制器接口驱动器 5个部分。存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;电源检测单元 保证 SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;卡及接口控制单元 5个部分控制 SD卡的运行状态,它包括有 8个寄存器;接口驱动器控制 SD卡引脚的输入输出。

  • SD卡功能框图如下:

SD卡的pin定义如下:

  • microSD卡功能框图如下:

microSD卡的pin定义如下:

  • SD 卡寄存器总共有 8个寄存器,用于设定或表示 SD 卡信息,如下:
名称 bit 宽度 描述
CID 128 卡识别号(Card identification number):用来识别的卡的个体号码(唯一的)
RCA 16 相对地址(Relative card address):卡的本地系统地址,初始化时,动态地由卡建议,主机核准
DSR 16 驱动级寄存器(Driver Stage Register):配置卡的输出驱动
CSD 128 卡的特定数据(Card Specific Data):卡的操作条件信息
SCR 64 SD 配置寄存器(SD Configuration Register):SD 卡特殊特性信息
OCR 32 操作条件寄存器(Operation conditions register)
SSR 512 SD 状态(SD Status):SD 卡专有特征的信息
CSR 32 卡状态(Card Status):卡状态信息

4. SD总线协议

SD总线上的通信是基于Command和Data传输的,由一个开始位(“0”)发起,由一个停止位(“1”)终止。SD通信一般是主机发送一个命令(Command),从设备在接收到命令后作出响应(Response),如有需要会有数据(Data)传输参与。

  • Command:Command是启动操作的令牌。Command从主机发送到单个卡(寻址命令)或所有连接的卡(广播命令)。Command在CMD数据线上串行传输。
  • Response:Response是一个令牌,它从一个有地址的卡或从所有连接的卡发送到主机,作为对先前接收到的命令的回答。Response在CMD数据线上串行传输。
  • Data:Data可以从卡转移到主机或反之亦然。Data通过DAT数据线传输。

4.1 SD总线CMD和DATA交互介绍

SD 总线的基本交互是命令与响应交互,如下图:

SD 数据是以块(Black)形式传输的,SDHC卡数据块长度一般为 512 字节,数据可以从主机到卡,也可以是从卡到主机。数据块需要 CRC位来保证数据传输成功。CRC 位由 SD卡系统硬件生成。下图为主机向 SD卡写入数据块操作示意:

SD 数据传输支持单块多块读写,它们分别对应不同的操作命令,多块写入还需要使用命令来停止整个写入操作。数据写入前需要检测 SD 卡忙状态,因为 SD 卡在接收到数据后编程到存储区过程需要一定操作时间。SD卡忙状态通过把 D0 线拉低表示。

扫描二维码关注公众号,回复: 12558352 查看本文章

数据块读操作与之类似,只是无需忙状态检测。

4.2 SD总线Command和Response的命令格式

  • Command令牌格式如下:

逻辑分析仪抓取CMD8的实际波形图如下:
在这里插入图片描述
每个Command前面都有一个开始位(0),后面有一个结束位(1),总长度为48 bit。每个Command都被CRC位保护,这样就可以检测到传输错误并重复操作。

  • Response的长度有48 或136 bit,这个取决于R1R2R3…的Content的大小,后面会详细介绍Command和Response的定义。Response令牌格式如下:

CMD数据线中,首先传输最高有效位(MSB),最后传输最低有效位(LSB)。

4.3 SD总线Data包格式

使用4条数据线传输时,每次传输 4bit数据,每根数据线都必须有起始位终止位以及CRC位CRC 位每根数据线都要分别检查,并把检查结果汇总然后在数据传输完后通过D0 线反馈给主机。

SD 卡数据包种格式,一种是常规数据(8bit 宽),它先发低字节再发高字节,而每个字节则是先发高位再发低位,1 or 4线传输示意图如下:
在这里插入图片描述
4 线同步发送,每根线发送一个字节的其中两个位,数据位在四线顺序排列发送,DAT3 数据线发较高位,DAT0数据线发较低位。

另外一种数据包发送格式是宽位数据包格式,对 SD卡而言宽位数据包发送方式是针对 SD卡 SSR(SD 状态)寄存器内容发送的,SSR 寄存器总共有 512bit,在主机发出ACMD13命令后 SD卡将 SSR 寄存器内容通过 DAT线发送给主机。宽位数据包格式示意见图如下:
在这里插入图片描述
逻辑分析仪抓取SD卡传输Data的实际波形图如下:
在这里插入图片描述

5. 参考资料

SDIO参考的资料如下:
在这里插入图片描述
下载地址如下:
https://download.csdn.net/download/ZHONGCAI0901/14975835

猜你喜欢

转载自blog.csdn.net/ZHONGCAI0901/article/details/113190393
今日推荐