打印
[应用相关]

SD卡介绍

[复制链接]
319|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
OKAKAKO|  楼主 | 2024-4-24 15:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

SD卡可以在SD总线模式或SPI总线模式下运行,通常可以使用SDIO总线或者SPI对SD进行驱动;

下面主要以micro SD为例,做简单做一下介绍;

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        已预留
micro SD的引脚发布如下图所示;



使用特权

评论回复
沙发
OKAKAKO|  楼主 | 2024-4-24 15:36 | 只看该作者
协议

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表示命令已被接受,SD卡将等待后续的事件发生。如果设置了R1响应中的任何其他位,则是错误的结果,并且将降低到图中每个R1响应位中提到的因数。

不同类型的响应及其含义如下所示;


响应

数据传输

在数据传输期间,传输的基本单位称为块,通常为512字节,并通过所有4个数据引脚进行传输。同样,在每次块传输之后,将发送16位CRC数据。

请注意,SD卡在状态下运行。每个状态都有不同的命令集,主机可以通过控件更改状态。

命令和数据信号通过时钟信号同步。最初,主机使用400KHz时钟与卡进行通信,但最终它会在传输过程中最大提高时钟速度,效率。

因为在初始化之前,主机不知道它是SD卡还是MMC卡。

默认情况下,MMC卡在初始化期间默认工作在漏极开路模式(100-400KHz),而SD卡工作在推挽模式(0-25Mhz)。

因此,最初,主机使用400KHz来保持与漏极开路和推挽模式的兼容性。

使用特权

评论回复
板凳
中国龙芯CDX| | 2024-4-29 08:18 | 只看该作者
SD卡可以在SD总线模式或SPI总线模式下运行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

168

主题

1248

帖子

3

粉丝