1 sd卡标准
sd卡标准是sd卡协会针对可移动存储设备设计专利并授权的一种标准,主要用于制定卡的外形尺寸、电气接口和通信协议。
1.1 sd卡引脚功能
sd卡的外形如图1所示,引脚功能如表1所列。sd卡的引脚具有双重功能,既可工作在sd模式,也可工作在spi模式。不同的模式下,引脚的功能不同。
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数据寄存器的值。这里自定了byte、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微控制器完成了硬件接口和底层通信软件的设计。在此基础上,可进一步构建文件系统,实现对存储数据更有效的管理。
家里的第一台自动集尘扫地机器人,后悔没早点买
基础的IPv6地址是如何配置的
IEC电源保护等级之间有什么区别?
2021哪款蓝牙耳机音质比较好?音质比较好的蓝牙耳机排行榜
功能用法多样的览邦WACH MAX-A90智能手表,能满足用户不同的需求
基于MCF51QE128微控制器的SD卡接口设计应用
ArduinoWeathercloud气象站的制作
北京指定部分道路作为智能车测试道路
PLC现场安装和维护的注意事项介绍
基于GPIB/VXI/IEEE1394总线的板级电路功能测试和故障诊断自动化测试系统
博通CIO:预测 2014年的七大技术潮流
如何在开发板上实现话题发布流程
Animatrick宣布与Lifelike&Believable合作,帮助实现实时in-VR性能捕获
气动薄膜切断阀的特点_气动薄膜切断阀的特性
人工智能将对人类生活产生重大影响 并将成为下一个技术奇点的起因
谷歌在不久的将来开发新的增强现实(AR)产品
Arrow Electronics News Release
新款13英寸MacBookPro拆解 内部结构如何
腾讯系在医疗产业的一系列动作 证实了互联网医疗未来可期
如何采用红外线传感器实现自动室内灯光控制器的设计