SD卡学习(SDIO和SPI模式)

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

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

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

SDIO

  1. CLK 时钟同步线
  2. CMD 命令信号线,主机发出的命令以及从机对命令的响应都是通过这条线进行传输
  3. 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字节6
765-0
01command

字节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方式)

  • 7
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值