SD卡的接口是怎样设计的
0 2022-11-29

1 SD卡标准

SD卡标准是SD卡协会针对可移动存储设备设计专利并授权的一种标准,主要用于制定卡的外形尺寸、电气接口和通信协议。

1.1 SD卡引脚功能

SD卡的外形如图1所示,引脚功能如表1所列。SD卡的引脚具有双重功能,既可工作在SD模式,也可工作在S模式。不同的模式下,引脚的功能不同。

SD模式多用于对SD卡读写速度要求较高的场合,SPI模式则是以牺牲读写速度换取更好的硬件接口兼容性。由于SPI协议是目前广泛流行的通信协议,大多数高性能都配备了SPI硬件接口,硬件连接相对简单,因此,在对SD卡读写速度要求不高的情况下,采用SPI模式无疑是一个不错的选择。

1.2 SPI模式

SPI模式是一种简单的命令响应协议,主控制器发出命令后,SD卡针对不S同的命令返回对应的响应。

SD卡的命令列表都是以CMD和ACMD开头,分别指通用命令和专用命令,后面接命令的编号。例如,CMD17就是一个通用命令,用来读单块数据。

在SPI模式中,命令都是以如下的6字节形式发送的:


每帧命令都以“01”开头,然后是6位命令号和4字节的参数(高位在前,低位在后),最后是7位CRC校验和1位停止位“1”。

SD卡的每条命令都会返回对应的响应类型。在SPI模式下,共有3种响应类型:R1、R2和R3,分别占1、2和3个字节。这里仅列出了R1响应的格式,如表2所列。当出现表中所描述的状态时,相应的位置1。R2和R3的第1个字节格式与R1完全一样,详细内容请参考SD卡标准。


2 硬件设计

本设计选用Freescale公司的32位低功耗微控制器MCF51QE128,采用SPI模式实现与SD卡的接口。

由于MCF51QE128是一款低功耗的微控制器,工作电压的典型值为3.6 V,与SD卡的工作电压兼容,因而可以直接与SD卡连接,无需电平转换电路。这里选用的是MCF51 QE128的第2个SPI口,硬件连接如图2所示。


3 软件实现

软件部分主要实现MCF51QE128的初始化、底层SPI通信,以及SD卡的通用写命令、初始化和单块数据的读写等功能。

3.1 MCF51QE128的初始化

在与SD卡通信之前,首先需要配置MCF51QE128,并初始化SPI端口。代码如下:


3.2 底层SPI通信

底层的SPI通信是实现最终读写的关键。由于MCF51QE128自带SPI硬件接口,因此只需要读写SPI数据的值。这里自定了by、word和dword三种数据类型,分别对应于8位、16位和32位数据。代码如下:



3.3 SD卡的通用写命令

由于SD卡的命令具有统一的格式,因此可以用一个通用的写命令函数来实现所有命令的发送。另外,考虑到多数命令的响应类型都是R1,这里的通用写命令函数所接收的响应类型默认为R1。函数代码如下:


3.4 SD卡的初始化

SD卡的初始化要遵循一定的步骤。首先将SPI降低到400 kHz,等待至少74个时钟周期。接着拉低片选信号,并发送CMD0命令,对SD卡进行复位并使其进入SPI模式,这里需要正确的CRC校验,校验字节为0x95。若SD卡进入空闲状态(即接收响应为0x01时),则发送CMD1命令,激活卡的初始化过程,此时响应为0x00。然后设置块的长度,一般为512字节。最后将片选拉高并将SPI时钟设为最大值,以保证最大的读写速度。SD卡初始化过程如图3所示。


SD卡初始化代码如下:


3.5 SD卡单块数据读写

SPI模式支持单块和多块数据的读写操作,可通过发送相应的命令来实现。读单块数据的操作过程如图4所示。拉低片选后,首先由主控制器MCF51QE128发送读单块数据命令CMD17,然后等待SD卡的响应。当收到数据块开始标志0xfe后,开始从SD卡读取512字节的数据,最后读取2字节的CRC校验位。


读单块数据的函数代码如下:


写单块数据的操作过程与读操作类似,如图5所示。拉低片选后同样由主控制器MCF51QE128发送写单块数据命令CMD24,SD卡正确响应后发送数据块开始标志0xfe,接着发送512字节数据块和2字节CRC校验。


写入数据后,SD卡会发送1字节的数据响应来反馈数据写入的情况,其格式如图6所示。当数据正确写入SD卡后,数据响应为0x05。最后读数据总线,写数据忙时等待,直到总线为高电平。


写单块数据的函数代码如下:



结 语

SD卡是目前广泛应用的可擦除的大容量存储设备,其接口设计可作为各类嵌入式系统中存储单元的一般解决方案。本文结合SD卡标准的相关技术,基于MCF51QE128微控制器完成了硬件接口和底层通信软件的设计。在此基础上,可进一步构建文件系统,实现对存储数据更有效的管理。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 工业
  • 安防
  • 航空
  • CAN
  • 浅析I²C总线设计的关键事项

    对于硬件工程师,I²C再熟悉不过了,两根线,一根数据SDA一根时钟SCL。当时在使用avrCPU设计数据采集器产品的CPU主板,外挂了Siliconlab的温湿

    昨天
  • 基于提高RS485接口芯片通信质量的设计

    RS-485接口芯片能担当起一种电平转化的角色,把TTL信号、COMS信号等转化为能在485总线上传输的差分信号,把接收到的485差分信号转化为MCU能够识别的

    昨天
  • 研华推出一款CAN总线带隔离保护功能的PCI-104通讯模块PCM-3680I

    PCM-3680I符合PCI-104接口标准,这使得它在类似震动这种现场恶劣的环境下也能提供较好的解决方案。和其他的连接方式相比,PCM-3680I提供了比其他

    昨天
  • 采用全数字化视频和声音发送接口HDMI的视频流输入输出实验

    本实验基于ECE-CVK7-75TFPGA开发板实现。软件使用Vivado2018.1。基于HDMI的视频流输入输出实验1HDMI概述HDMI高清多媒体界面(英

    昨天
  • 基于UFS2.1标准的UFS接口简单介绍

    本篇主要介绍UFS的架构、系统模型、信号定义(包括eUFS和UFSCard)等,以对UFS接口有个粗略的了解。下一篇将针对电源、复位、时钟等部分进行详细介绍。1

    昨天
  • 一体化直驱电机的驱动器设计

    作为工业生产线基础的传动设备,一般都采用“交流电动机+机械减速机构”的方式来驱动,简单适用且价格低廉。但是今天,由机械减速机构带来的不利影响,如齿轮箱等的油污泄

    昨天
  • 基于采用磁耦隔离和硬件零延时技术的RS485总线节点设计

    引言在工业控制设备之间中长距离通信的诸多方案中,RS485总线因其硬件设计简单、控制方便、成本低等优点,广泛应用于工厂自动化、工业控制、小区监控、水利自动测控等

    前天
  • 英特尔成功开发出了Light Peak光接口技术

    为了有效解决今天电子设备在处理大数据流量时遇到的接口瓶颈问题,英特尔投入巨资开发出了LightPeak光接口技术。尽管一位来自一线PC厂商的工程师以及一位市场分

    前天
  • CAN总线的在汽车轮速传感器中的应用

    目前,网络技术是汽车电子领域发展的一项新技术。它不仅是解决汽车电子化中的线路复杂和线束增加问题的技术,而且其通讯和资源共享能力成为新的电子与计算机技术在车上应用

    02-06
  • CAN总线基础知识学习笔记

    依照瑞萨公司的《CAN入门书》的组织思路来学习CAN通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成笔记。好记性不如烂笔头,加油!1CAN的一些基本

    02-06
  • 一文看懂EMC防护器件之TVS

    一 前言电压及电流的瞬态干扰是造成电子电路及设备损坏的主要原因,常给人们带来无法估量的损失。这些干扰通常来自

    02-03
  • 电机的控制技术原理

    在现代电子产品中,自动控制系统,电子仪器设备、家用电器、电子玩具等等方面,直流电机都得到了广泛的应用。大家熟悉的录音机、电唱机、录相机、电子计算机等,都不能缺少

    02-03
下载排行榜
更多
广告