简述SD卡的工作原理(四)

简述SD卡的工作原理

功能

SD卡是存储卡,它的功能就是存储。

分类

SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC卡,如下:

容量

命名

简称

0~2G

Standard Capacity SD Memory Card

SDSC或SD

2G~32G

High Capacity SD Memory Card

SDHC

32G~2T

Extended Capacity SD Memory Card

SDXC

硬件结构

SD卡外形和接口图如下图所示:

驱动SD卡工作的接口是SPI 或者 SDIO 口,引脚分布如下:

主机与SD卡的硬件连接图:

工作原理

要驱动SD卡工作,主要涉及两个步骤。

第一个步骤是SD卡的识别过程。

第二个步骤是对SD卡进行读写过程,即主机控制器和SD卡之间进行数据传输的过程。

要使SD卡能正常工作,一是要给SD卡供给稳定的电压,二是要SD卡按用户规定的方式工作。这两项工作的实现,都是主机控制器通过给SD卡发送控制命令来实现的。

主机(SDIO控制器)要驱动SD卡工作,要使用许多的命令,包括应用层命令ACMD 和 通用命令 CMD. 主机(SDIO控制器)把命令发送给SD卡,SD卡会作出回应,这里的回应叫做响应,响应命令分为6类,分别是R1、R1b、R2、R3、R6、R7。

主机(SDIO控制器)给SD卡发送命令之后,SD卡会作出响应,响应中包含主机(SDIO控制器)需要的数据,这些数据有SD的信息,容量,和存储数据等等。

上面已经提到了,SD卡工作,主要是识别和数据传输,它的识别过程有些复杂,写代码的时候,可以参考协议给的初始化流程图。数据传输包括读和写,单字节和多字节读写。下两节描述识别初始化流程图和数据读写时序图。

流程图

SD卡初始化流程图:

读写数据的时序图

SDIO与SD卡通信一般以数据块的形式进行传输,SDIO(多)数据块读操作,如下图所示:

SDIO(多)数据块写操作,如下图所示:

命令格式

SDIO所有的命令和响应都是在SDIO_CMD引脚上面传输的,命令长度固定为48位,SDIO命令格式如下表所示:

其中:除了命令索引和参数需要我们设置,其他都是由SDIO硬件自动控制。命令索引(如CMD0,CMD1之类)由SDIO_CMD寄存器设置,命令参数则由SDIO_ARG寄存器设置。

STM32 SDIO短响应(48位)格式如下表所示:

STM32 SDIO长响应(136位)格式如下表所示:

寄存器

SDIO控制器的寄存器,主要设置SDIO控制器和命令的索引与参数。

SD卡有5个寄存器CID,RCA,CSD,SCR.OCR。SD卡的信息从SD卡寄存器中获取。

总结

SD卡正常工作,就是根据SD卡初始化流程图,发送命令,收到回复,直到流程结束。传输数据,也是根据读写时序图,将要发送的数据放进命令中发送出去。

SDIO 控制器驱动SD 卡识别过程中,频率是400K , 传输数据的时候,SDIOCK 的 频率是6M.SD卡初始化的时候,频率不能超过400K。

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值