SD卡(secure digital card
)是SD卡协会开发的低成本,非易失性存储卡格式(相比较于RAM,SD卡掉电数据不丢失);
随着本世纪电子技术的高速发展,对于这种中等型号,节能、节省空间的存储器设备的需求一直在快速增长;
SD卡具有SDHC的速度等级,范围为2级(以2 MB / s的速度运行),4级(以4MB / s的速度运行),6级(以最高6 MB / s的速度运行)和10级(以最高的速度运行) 10 MB /秒 SDXC卡以“超高速”类运行,并以最高30 Mb/s的速度运行。还有视频速度等级,数据传输速率高达90MB/s。
SD卡还具有不同的尺寸或形状因子,包括standard SD卡, mini SD卡 and micro SD卡;
SD卡可以是通常具有高达4 GB的存储容量的标准SD卡,也可以是高达64 GB的高容量卡(SDHC
)以及达到TB级的扩展容量(SDXC
)。
SD卡可以在SD总线模式或SPI总线模式下运行,通常可以使用SDIO总线或者SPI对SD进行驱动;
下面主要以micro SD为例,就SDIO模式和SPI模式做简单做一下介绍;
microSD引脚输出,SD模式
引脚 | 引脚名称 | 信号功能 |
---|---|---|
1 | DAT2 | 数据位2 |
2 | CD / DAT3 | 卡检测/数据位3 |
3 | CMD | 命令行 |
4 | Vdd | 电源电压2.7v / 3.6v |
5 | Clk | 时钟 |
6 | VS | 地 |
7 | DAT0 | 数据位0 |
8 | DAT1 | 数据位1 |
microSD引脚输出,SPI模式
引脚 | 引脚名称 | 信号功能 |
---|---|---|
1 | NC | 没有连接 |
2 | /CS | 片选 |
3 | DI | 主输出/从属(MOSI) |
4 | Vdd | 电源电压2.7v / 3.6v |
5 | Clk | 时钟 |
6 | Vss | 地 |
7 | DO | 主进/从出(MISO) |
8 | RSV | 已预留 |
SD协议中,由于命令数据线和数据线是分开的,因此我们需要关注,命令的传输格式,以及数据的传输格式;
命令传输
命令以48位数据包的形式通过双向CMD引脚进行传输。
这些命令包包括命令索引,变量和CRC位。该命令始终通过主机发送,最终由SD卡接收。
回传的响应数据包也为48位。
48位的命令格式
每个命令的恒定长度为6个字节。
第一个字节是命令编号和数字64的 加法。
例如:
对于CMD0:命令编号0 + 64 = 64 = 0x40(十六进制)。
对于CMD1:十六进制命令号1 + 64 = 65 = 0x41。
随后是一组四个字节,称为参数。
这些参数通常包含数据的地址或块的长度。
最后一个字节是CRC(循环冗余校验)字节。如果未启用CRC功能,则大多数SPI模式下的命令都不需要校验字节。对于某些命令,例如CMD0,CRC为0x95,在大多数情况下,发送的是0xFF。
启用CRC要求您从微控制器发送正确的校验字节。因此,请确保启用或禁用了CRC功能。
发送命令的格式如下所示;
R1响应0x01表示在响应之前发送的命令已导致卡进入空闲状态。
响应字节0x00表示命令已被接受,卡将等待建议的事件发生。如果设置了R1响应中的任何其他位,则是错误的结果,并且将降低到图中每个R1响应位中提到的因数。
不同类型的响应及其含义如下所示;
数据传输
在数据传输期间,传输的基本单位称为块,通常为512字节,并通过所有4个数据引脚进行传输。同样,在每次块传输之后,将发送16位CRC数据。
请注意,SD卡在状态下运行。每个状态都有不同的命令集,主机可以通过控件更改状态。
命令和数据信号通过时钟信号同步。最初,主机使用400KHz时钟与卡进行通信,但最终它会在传输过程中最大提高时钟速度,效率。
原因:初始化之前,主机不知道它是SD卡还是MMC卡。现在,默认情况下,MMC卡在初始化期间默认工作在漏极开路模式(100-400KHz),而SD卡工作在推挽模式(0-25Mhz)。因此,最初,主机使用400KHz来保持与漏极开路和推挽模式的兼容性。
这是从SD/MMC外设到SD卡插槽的4 Bit
连接的示例。
使用Data[3..0]
,CLK
和CMD
信号。
SD卡插槽暴露在外部环境中。即使未与任何其他设备连接,它也可能会受到人体中积累的静电电荷的影响,而当手指触摸该静电时,静电会释放到屏蔽中。
为了符合EMC规范,必须进行一些常规预防措施,以过滤和避免传导辐射。此外,SD卡规范还规定了上拉电阻和串联阻抗匹配电阻。
幸运的是,当SD在移动设备中如此普遍地传播时,已经有集成方案,它可以一次实现所有这些功能。
CM1624是EMI滤波器和线路终端设备的组合,带有集成的TVS二极管,可用于T-Flash
/ MicroSD
接口。
下面在SPI模式下使用的SD卡的示例,根据SD Association的规范连接了MISO
,MOSI
,CLK
和CS
信号。
我们只需要在时钟线上应用滤波器以在非常恶劣的环境中改善EMC。
在SDIO模式或者SPI模式下,磁道都以高数据速率传输数据和时钟信号。
为了避免信号出现毛刺,必须考虑信号传播时间,以确保所有数据在时钟触发读取或写入的操作之前,接口处稳定。
所有数据信号的路径长度必须在十分之几毫米的长度内匹配,并且时钟长度必须长约1毫米。
为避免串扰,这些走线必须在其周围和下方保持良好的接地平面,并且还应通过足够数量的通孔连接各层。
本文简单介绍了SD卡的分类以及常见属性,另外还简单介绍了SD卡的协议,在硬件设计上给出了SPI总线和SDIO总线的示例电路,篇幅有限,软件部分暂时没有进行展开介绍;
由于作者能力和水平有限,文中难免存在错误和纰漏,请不吝赐教。