在STM32F103XX微处理器的基础上的Micr0 SD卡读写的实现

出处:徐建功,赵 捷,李 伟,田 杰 发布于:2023-06-21 13:48:25

O  引言

STM32F103xx系列微控制器:工作频率为72MHz,片上集成了高速存储器(Flash多可达512kB,SRAM多可达64kB),和通过APB总线连接的丰富和增强的外设和I/O。所有的设备都提供标准的通信接口(多可有2个IIC接口,3个SPI接口和5个USART接口)。片上还带有2个12位的ADC,一个12位的双通道DAC,11各16位计时器。

由于远程智能心脏检测仪器对采集到的心电信号是实时处理与存储的。因此,本文在STM32F103XX微处理器的基础上,采用Micro SD存储卡实现了关键心电信号的存储。

1  硬件电路设计

1.1  STM32F103xx微处理器简介

STM32F103XX基于高性能32位RISC的ARMCortex-M3核,工作频率为72 MHz。片上集成了高速存储器,通过APB总线连接了丰富、增强的外设和I/O。所有的设备都提供标准的通信接口。

主要特点有:内核:ARM32位Cortex-M3 CPU,工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器。时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。POR、PDR和课编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路。内部40 kHz的RC振荡电路。用于CPU时钟的PLL。带校准用于RTC的32kHz的晶振。低功耗:3种低功耗模式:休眠,停止,待机模式。为RTC和备份寄存器供电的VBAT。调试模式:串行调试(SWD)和JTAG接口。

1.2  SPI协议

由于SPI(setial peripheralinterface)总线占用的接口线少,通信效率高,并且支持大部分处理器芯片,因而是一种理想的选择。SPI是利用4根信号线进行通信的串行接口协议,包括主/从两种模式。4个接口信号为:串行数据输入(MISO,主设备输入、从设备输出)、串行数据输出(MOSI,主设备输出、从设备输入)、移位时钟(SCK)、低电平有效的从设备使能信号(cs)。一旦检测到主设备的时钟信号,数据开始传输。

1.3  Micro SD卡简介

Micro SD卡的接口可以支持2种操作模式:SDIO模式和SPI模式。设计者可以选择其中任一模式。SDIO模式允许4线的高速数据传输,传输速率高,但是大部分微控制器无此接口,使用软件模拟协议复杂。SPI模式使用简单通用的SPI通道接口,即可实现数据传输,目前大多数微控制器都提供SPI接口。SPI模式相对于SDIO模式的缺点是损失了传输速度,但目前微处理器的处理速度越来越高,利用SPI模式大多都能满足工程需要。

Micro SD卡要求用全双工、8位的SPI操作。STM32F103XX微处理器和Micro SD卡之间只需要4根信号线就可以完成数据的读/写,当CS片选信号线为低电平时,微处理器开始所有的总线传输。数据从微处理器的MOSI引脚同步输入Micro SD卡的DI引脚,并由Micro SD卡的DO线同步输入微处理器的MISO引脚,数据在CLK信号的上升沿同步输入和输出。另外,使用SPI模式时,为了防止在无卡接入或卡驱动器呈高阻态时总线悬空,根据SD卡规范,这些信号需要在微处理器端用10~100 kΩ的上拉电阻,其硬件连接电路。



2  软件设计

软件设计一部分是基于STM32固件库,该固件库针对基于ARM的32位微处理STM32F101XX和STM32F103XX。其中,包括程序、数据结构和覆盖所有外设特性的宏单元,还包括设备驱动的描述以及每个外围模块的实例。因此,使用该固件库可以节省许多时间,将更多的时间花费在编程方面,从而减少了在应用开发中的综合开销。

2.1  Micro SD卡初始化为SPI总线模式

STM32F103XX微处理器包括2个串行外设接口(SPI),可以方便地对Micro SD卡接口进行配置。首先对要用到的SPIl接口采用命令SPI_In-it(SPIl,&SPI_InitStructure)进行初始化,并使能SPIl。

刚上电时,Micro SD卡缺省使用专有的SD总线协议,将Micro SD卡切换到SPI模式,主机需要发出命令CMDO(GO-IDLE-STATE)。Micro SD卡会检测到SPI模式选择信息,因为卡选择(CS)引脚在该命令和其他所有SPI命令传送过程中都保持为低电平,故MicroSD卡以R1作为响应,空闲状态位被置为高电平,此时MicrlO SD卡进入空闲状态,此阶段的SPI时钟频率不能超过400 kHz。然后发送命令CMD59决定是否开启CRC校验,设置读/写块数据长度,延迟8个时钟后返回。


2.2  Micro SD卡读写单块数据

从Micro SD卡中读取一个数据块只需要主机发送CMD17(MSD_READ_SINGLE_BLOCK)命令,并将起始地址作为参数(此地址必须和介质上一个块的起始位置对齐),然后Micro SD卡会验证这个字节地址,并以一个R1命令作为响应。在完成Micro SD卡读取操作后,先发送一个起始数据命令,接着发送固定数量的数据,是2个字节CRC校验。

从Micro SD卡中写入一个数据块与读取数据块相似。主机发送CMD24(MSD_WRITE_BLOCK)命令启动写操作过程,Micro SD卡将以R1命令响应格式进行应答。如果命令响应,则进行写操作,主机发送起始令牌,然后发送固定数量的数据字节(512 B),返回一个数据响应令牌,指示需要写入的数据是否完成,是2个字节的CRC校验,写入一个数据块由函数u8 MSD_WriteBuffer来完成,向Micro SD卡写数据函数中的参数与向Micro sD卡读数据函数中的参数相同。


2.3  Micro SD卡的文件存储

由于需要Micro SD卡上的数据能够在计算机上直接读/写,所以Micro SD卡文件系统必须与计算机的文件系统一致。目前常用的文件系统主要有微软的FATl2,FATl6,FAT32,NTFS,以及Linux系统下的 EXT2,EXT3等。由于微软Windows的广泛应用,在当前的消费类电子产品中,用得多的还是FAT文件系统,如U盘、MP3,MP4,数码相机等,所以找到一款容易移植和使用、占用硬件资源相对较小而功能又强大的FAT开源文件系统,对于单片机系统设计者来说是很重要的。它完全用标准C语言编写,所以具有良好的硬件平台独立性,可以移植到多种平台而只需做简单的修改。需要使用者编写移植代码的是FAT FS提供的底层接口,包括存储介质读/写接口DiskIO和供给文件创建修改时间的实时时钟RTC。

FAT FS Module一开始就是为了能在不同的单片机上使用而设计的,所以具有良好的层次结构。顶层是应用层,使用者无需理会FAT FSModule的内部结构和复杂的FAT协议,只需要调用Module提供给用户的一系列应用接口函数,如f-open,f-read,f- write,f-Close等就可以像在PC上读/写文件那样简单。

2.3.1  文件(或目录)创建

在Micro SD卡上创建文件(或目录)的过程就是在文件目录表中申请登记项的过程。首先程序要检测文件目录表(FDT)中是否已经存在该文件,然后申请空闲的FDT 表项。如果存在同名的文件,则返回,创建文件(或目录)失败。申请FDT表项成功后,程序会检测磁盘剩余的空间是否满足新创文件数据长度的需要,而后寻找个空闲的簇号,并修改对应的FDT表项。

2.3.2  文件的读写

Micro SD卡上的文件都是以簇(Cluster)为单位存取的。当读取Micro SD卡上的文件时,首先要根据文件名查找到文件加目录登记项(F-DT),根据文件中目录登记项中起始簇号即可以找到文件在数据DATA区中的簇内容,并且可以在FAT表中找到第二个簇号。根据第二个簇号又能读取第二簇的数据和FAT中第三个簇号,这样就可以读取全部文件数据。写文件时要保证 FAT1和FAT2内容的一致性,即要对两个FAT进行同样的写操作。在文件的一簇填写0xFFFFH 表示文件结束。

2.3.3  文件(或目录)的删除

删除文件的操作需要提供函数DeleteFile()删除文件的文件名和扩展名。删除文件时,不涉及数据区的操作,只须在文件的目录登记项(FDT)上做一个删除标记,并把文件在FAT表中所占用的簇标记为“空簇”。

程序先在FDT中查找是否有同名文件,如果存在同名文件,则将在对应的FDT表项中个字节内容改为0xE5H,表示该FDT表项的内容已经被删除,新建文件可以使用该表项。还需要将FAT表中所有文件相关簇项目的内容都改成Ox0000,释放出所对应的Micro SD卡磁盘空间。若未找到同名文件,则返回一个错误值。程序先在FDT中查找是否有同名目录项,如果存在同名目录项,则将对应的FDT表项中个字节内容改为0xE5H。然后读出对应目录的起始簇号,在该簇号中去删除该目录下的所有文件。

3  结语

该方案已经成功应用于远程智能心脏检测仪器中,为心脏检测仪器的数据采集提供了一种非易失性存储器的解决方案,远程智能心脏检测仪器采集得到的数据信息以FAT32标准文件的格式保存于Micro sD卡中,数据文件可在Windows下读取,在保证高性价比的同时,又方便了数据的进一步分析和处理。

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!