基于MSP430的Micro SD卡存储功能实现与评测
摘 要: 广泛使用MSP430为主控单元的穿戴式健康监护设备功能不断发展,促使在该平台下的数据实时存储和功能评测的需求日益增强。在此介绍基于MSP430的FatFs文件系统的移植以及Micro SD卡读/写功能的实现方法,提出了Micro SD卡读/写功能的评测方案,并测试了不同条件下的读/写速率。结果表明,FatFs文件系统能被灵活地移植到MSP430系统中,并能适应不同内存环境的应用需求,Micro SD卡的读/写速率与缓冲区大小直接相关。
关键词: FatFs; MSP430; Micro SD; 数据存储
0 引 言
近年来,出现了腕表型的血氧监测仪、睡眠生理监护仪等各式各样的可穿戴健康监护设备[1]。使用者通过这类穿戴式设备可方便有效地对自身日常健康、亚健康状态进行监护,从而达到预防疾病、治未病的目的。为了便于长时间观测记录,对健康状态变化趋势进行定期的分析,需要对日常监护数据进行长期、快速、低功耗的存储,这已成为此类医疗设备的必备功能。以低功耗为主要特点的MSP430微处理器是此类穿戴式设备应用较为广泛的开发平台。由于已有的其他平台上集成的工具包通常针对大数据量,高数据存储率的数据存储[2?3],设计过程中对功耗的考虑较少,往往难以满足低功耗的要求。因此针对MSP430开发平台,对日常监护过程中长期的、存储量相对较小的数据存储,实现功耗与速度的平衡,是目前穿戴式设备开发过程中亟待解决的问题。
本文以具有超低功耗的MSP430单片机为主控制单元,讨论在MSP430控制下如何实现Micro SD卡的读/写功ศ能,并提出了在MSP430平台下Micro SD卡读/写功能的测试方案,对不同条件下的读/写速率进行了评估,本文结果为基于MSP430的数据存储方案的设计提供了实际参考。
1 硬件设计
主控芯片选用MSP430系列中MSP430F5438,因其RAM容量达16 KB,具有处理数据量较大任务的能力。MSP430的工作电压为3.3 V与Micro SD卡的工作电压一致,可以避免使用额外的电压转换模块,降低了功耗和成本。由于日常监护是长期的、存储量相对较小的过程,使得单片机更多是处于低功耗运行的状态,与AVR、STM等单片机相比,MSP430的多时钟系统使功耗管理更为灵活[4?5]。
数据存储选用2 GB容量的Micro SD卡,Micro SD卡支持SDIO访问和SPI访问[6],考虑到MSP430
ϟF5438内部已集成了SPI端口,故Micro SD卡与单片机的连接配置为SPI模式。卡槽与MSP430F5438的连接如图1所示。
2 软件设计
本系统利用双缓冲区的设计来保证在将一个缓冲区的数据写入Micro SD卡的同时顺利接收数据采集模块上传的新数据,并将新数据写入另一个缓冲区以等待被写入Micro SD卡,调整缓冲区大小即可改变读/写速度。为了保证写入Micro SD卡与数据具有一定的可读性,需要在Micro SD卡与电脑间建立一座沟通的桥梁,Fat文件系统即是这种能方便电脑读出卡内数据的数据组织方式。因此软件部分主要包括有FatFs模块和Micro SD卡操作模块,并在对Micro SD卡操作前配置好单片机的SPI工作方式。
2.1 FatFs的移植
FatFs是一种已经被广泛使用的、开源的文件系统模块,通过接口函数可以被方便地移植到不同的微控制器平台中[7]。由于本系统只涉及Micro SD卡的读取和写入,因此在配置时裁剪掉一些无关函数以进一步缩小代码和工作区所占空间。图2为读/写文件时的一般流程。
2.2 Micro SD卡操作
图3所示为Micro SD卡初始化过程。Micro SD卡初始化过程主要包括复位、识别2个过程。复位过程包括Micro SD卡上电延时并保持至少74个时钟周期;拉低卡片选线CS;发送CMD0使卡进入空闲状态。识别过程包括判断支持的SD协议版本;区分SD卡和MMC卡;若是SD卡还需进一步识别标准容量卡或者高容量卡;获取卡工作电压范围。由于本系统采用Micro SD卡槽,并且单片机资源有限,因此简化MMC卡识别和获取工作电压范围的步骤,只识别协议版本和卡容量。在初始化的最后,将数据块长度设置为512 B。
3 系统测试
在完成以上移植后,利用单片机计数器计时对移植后的读/写速度进行了一系列测试,分别测试了不同缓冲区大小,FatFs不同配置对读/写速度的影响。测试环境:选用Kingston的2 GB容量Micro SD卡为测试对象;以10 MB大小的文件作测试文件;SPI时钟设定为12 MHz;IAR v5.5软件平台;ITECH的IT6302型稳压电源。图5所示为测试程序流程图。
3.1 全功能FatFs配置测试
表1为FatFs全功能配置时读/写速度的测试结果。向卡内读出/写入10 MB大小数据后,从定时器中获得一次读/写用时,并如此重复执行50次后,取每次读/写平均用时,以及在编译器map文件中观察到的程序占用空间大小。
流的差值。
3.2 TINY_FatFs配置测试
TINY模式通常被用在内存较小的设备上,以牺牲读/写速度和一些API函数来降低内存占用。在ffconf.h中修改配置选项:
#define _FS_TINY 1
开启TINY模式,并重复3.1中测试步骤,表2为TINY模式下的测试结果。
从以上2个实验可知,¿读/写速度的快慢与缓冲区大小直接相关。表1中出现缓冲区512 B时速度快于1 024 B,可能是因为Micro SD卡在读/写数据时是以数据块为单位的,每次读取两个数据块内容时的执行效率并没有单块读取时高。当缓冲区大于1 024 B后,多块读的效率才能真正体现出来。所以,在内存较大的设备上,可以选择较大的缓冲区以获得较高的读/写速度;而在内存较小的设备上,则需考虑缓冲区对内存的影响。从电流消耗方面看,在进行读/写操作时的电流消耗差别不大,要进一步降低功耗有必要从缩短读/写时间、减少读/写次数两个方面考虑,从侧面印证了缓存区越大读/写效率越高。
流的差值。
4 结 语
实现基于MSP430单片机的Micro SD卡存储功能可以使穿戴式健康监测设备以更低的功耗、更小的体积实时记录更大量的数据。读/写速度测试结果表明FatFs文件系统能被灵活地移植到各型号MSP430单片机上,适应不同数据量的应用,应当注意的是Micro SD卡的读/写速率受到缓冲区大小的影响,在大数据存储时应选择较大的缓冲区以获得较高的读/写速度。读/写Micro SD卡本身是能耗较高的执行动作,要实现系统低功耗运行还依赖于更高效的程序设计。本文的测试结果也适用于其他数据采集和存储的应用领域。
参考文献
[1] 腾晓菲,张元亭.移动医疗:穿戴式医疗仪器的发展趋势[J].中国医疗器械杂志,2006,30:330?340.
[2] 田茂,鲜于李可,潘永才.SPI模式下SD卡驱动的设计与实现[J].现代电子技术,2009,32:195?199.
[3] 张恒.基于AT89S52和FAT16的SD卡读写系统设计[J].单片机与嵌入式系统应用,2009:53?58.
[4] 焦冰,叶松,温雅婷.MSP430低功❦耗原理及其在海温测量中的应用[J].现代电子技术,2011,34:189?192.
[5] 沈晓昱,王晓娜,李文军.基于MSP430的低功耗温度采集报警系统的实现[J].工业仪表与自动化装置,2009:31?33.
[6] SD Association. SD specifications part 1: physical la¢yer simplified specification version 2.00 [EB/OL]. [2009?06?10]. https://www. blog.163.com.
[7] CHA N. FatFs?generic FAT file system module [EB/OL]. [ 2015?03?18]. http://elm?chan.org/fsw/ff/00index_e.html.