SD卡学习(SDIO和SPI模式) 您所在的位置:网站首页 sd卡速度快就不卡了吗 SD卡学习(SDIO和SPI模式)

SD卡学习(SDIO和SPI模式)

2024-02-01 01:59| 来源: 网络整理| 查看: 265

SD卡的操作模式:SD卡模式(SDIO)、SPI模式(默认为SD模式)。

其中SD卡模式的信号线有:CLK、CMD、DAT0-DAT3,6根线。

SPI模式的信号线有:CS、CLK、MISO(DATAOUT)、MOSI(DATAIN),4根线。

SDIO

CLK 时钟同步线CMD 命令信号线,主机发出的命令以及从机对命令的响应都是通过这条线进行传输DAT[3:0] 表示4条数据线,主机和从机的数据都是从这四条数据线上传输

SPI

SD卡只能使用3.3V的I/O电平。SPI模式下信号线要加10-100K的上拉电阻。

SD卡有五个寄存器:

名称宽度描述CID128卡标识寄存器RCA16相对地址寄存器(Relative Card Address):本地系统中卡的地址,动态变化,在主机初始化的时候确定,SPI模式中没有。CSD128卡描述数据:卡操作条件相关的信息数据SCR64SD配置寄存器:SD卡特定信息数据OCR32操作条件寄存器

SD卡的命令格式:

命令CMD0就是0,CMD16就是16,以此类推。

SPI命令格式为6字节构成,高位在前(MSB)。

字节1字节2-5字节6765-001command

字节1的最高2位固定是01,低6位为命令号(CMD0就是0,CMD16就是16,以此类推),字节2-5为命令参数,有些命令是没有参数的;字节6的高7位为CRC,最低位恒为1。

SD卡的命令总共有12类,下表为几个比较重要的命令: SD卡的主要相关各种命令解析 CMD0: SD卡进入IDLE和复位SD卡 CMD1: 读OCR,是否为SD卡 CMD2: 获取卡CID信息 CMD3: 获取SD卡所分配的相对地址 CMD9: 获取SD卡的存储信息(容量、块大小等) CMD12:停止传输操作 CMD13:获取卡的状态 CMD16:设置SD卡块大小 CMD17:使SD卡进入传输状态、读取单个块 CMD18: 使SD卡进入传输状态、读取多个块,直到收到CMD12为止 CMD24:使SD卡进入传输状态、写入单个块 CMD25: 使SD卡进入传输状态、写入多个块

命令参数回应描述CMD0(0X00)NONER1复位SD卡CMD8(0X08)VHS+Check PatternR7发送接口状态命令CMD9(0X09)NONER1读取卡特定数据寄存器CMD10(0X0A)NONER1读取卡标志数据寄存器CMD16(0X10)块大小R1设置块大小(字节数)CMD17(0X11)地址R1读取一个块的数据CMD24(0X18)地址R1写入一个块的数据CMD41(0X29)NONER3发送给主机容量支持信息和激活卡初始化过程CMD55(0X37)NONER1告诉SD卡,下一个是特定应用命令CMD58(0X3A)NONER3读取OCR寄存器

SD卡和单片机的通信采用发送应答机制:

发送应答机制

初始化SD卡过程:

SPI操作模式下:在SD卡收到复位命令时,CS为有效电平(低电平),则SPI模式被启用,在发送CMD之前要先发送74个时钟,64个为内部供电上升时间,10个用于SD卡同步;之后才能开始CMD操作,在初始化时CLK时钟不能超过400KHz。

接着我们看看SD卡的初始化,** SD卡的典型初始化过程如下:**

1、初始化与SD卡连接的硬件条件(MCU的SPI配置,IO口配置);

2、上电延时(>74个CLK);

3、复位卡(CMD0),进入IDLE状态;

4、发送CMD8,检查是否支持2.0协议;

5、根据不同协议检查SD卡(命令包括:CMD55、CMD41、CMD58和CMD1等);

6、取消片选,发多8个CLK,结束初始化

这样我们就完成了对SD卡的初始化,注意末尾发送的8个CLK是提供SD卡额外的时钟,完成某些操作。通过SD卡初始化,我们可以知道SD卡的类型(V1、V2、V2HC或者MMC),在完成了初始化之后,就可以开始读写数据了。

SD卡读取数据,这里通过CMD17来实现,具体过程如下:

1、发送CMD17;

2、接收卡响应R1;

3、接收数据起始令牌0XFE;

4、接收数据;

5、接收2个字节的CRC,如果不使用CRC,这两个字节在读取后可以丢掉。

6、禁止片选之后,发多8个CLK;

以上就是一个典型的读取SD卡数据过程,SD卡的写于读数据差不多,写数据通过CMD24来实现,具体过程如下:

1、发送CMD24;

2、接收卡响应R1;

3、发送写数据起始令牌0XFE;

4、发送数据;

5、发送2字节的伪CRC;

6、禁止片选之后,发多8个CLK;

以上就是一个典型的写SD卡过程。关于SD卡的介绍,我们就介绍到这里,更详细的介绍请参考光盘SD卡的参考资料(SD卡2.0协议)。

这里写图片描述

参考资料: STM32之SD卡

SD卡简介(SPI方式)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有