当前位置:首页 > 消费电子 > 消费电子
[导读]1 SD卡标准SD卡标准是SD卡协会针对可移动存储设备设计专利并授权的一种标准,主要用于制定卡的外形尺寸、电气接口和通信协议。1.1 SD卡引脚功能SD卡的外形如图1所示,引脚功能如表1所列。SD卡的引脚具有双重功能,既

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微控制器完成了硬件接口和底层通信软件的设计。在此基础上,可进一步构建文件系统,实现对存储数据更有效的管理。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嘿,无线探索者!欢迎回来,我非常兴奋地介绍nRFBOX v2.7.2,这是我们开源,ESP32驱动的扫描,干扰,掌握2.4GHz频谱工具包的最新发展。

关键字: nRFBOX ESP32 SD卡

这可以使用各种板来完成,本指南涵盖了使用带有音频屏蔽(Rev.D)的Teensy 4.1和SD卡来包含声音。

关键字: SD卡 扬声器 Teensy 4.1

在Crowduino Uno - SD - SD卡板上有一个SD卡插槽,您可以方便地使用SD卡进行记录,从而读取SD卡上的数据。SD卡使用SPI接口(D10/D11/D12)加上CS引脚(D3或D4)与主微控制器Atme...

关键字: 微控制器 Atmega328 SPI接口 SD卡

该命令将使您和调试器更接近于在电路板上安装FS。现在,我们该怎么办呢?我们应该使用微型SD卡还是16GB的内部闪存?现在,我正在测试两者,但一无所获。不要让这种想法或想法阻止你。

关键字: PolarFire 电路板 SD卡

数据是任何分析和预测的关键资源。它总是需要创建任何信息或统计。有很多在线和离线平台可用于记录数据,我们已经使用了许多基于物联网的平台和web服务器来存储和可视化数据。这里我们使用最流行的离线方式来存储数据,这是- SD卡...

关键字: 物联网 Arduino SD卡 温湿度传感器

数据是任何分析和预测的关键资源。它总是需要创建任何信息或统计。有很多在线和离线平台可用于记录数据,我们已经使用了许多基于物联网的平台和web服务器来存储和可视化数据。这里我们使用最流行的离线存储数据的方式,即SD卡。

关键字: ESP32 SD卡 物联网 web服务器

北京——2024年10月29日 亚马逊云科技日前宣布,通过与光环新网与西云数据的紧密合作,在亚马逊云科技(北京)区域和(宁夏)区域推出Amazon Lambda SnapStart功能,将基于Java Lambda函数的...

关键字: 函数 数据处理

北京2024年10月29日 /美通社/ -- 亚马逊云科技日前宣布,通过与光环新网与西云数据的紧密合作,在亚马逊云科技(北京)区域和(宁夏)区域推出Amazon Lambda SnapStart功能,将基于Java La...

关键字: START 亚马逊 PS 函数

在现代数字音频系统中,FPGA(现场可编程门阵列)因其高度的灵活性和强大的并行处理能力而被广泛应用。本文将详细介绍如何使用FPGA从SD卡中读取音频文件并播放的过程,重点涉及硬件选择、软件设计以及实现步骤。

关键字: FPGA SD卡

随着大数据和高速通信技术的飞速发展,数据传输对带宽和效率的需求日益增加。传统的并行接口因受限于时序同步、信号干扰及设计复杂度等问题,逐渐被高速串行接口所取代。其中,基于FPGA的8b/10b SERDES(Seriali...

关键字: FPGA SERDES 接口设计
关闭