夏 兰,贾晓冬,曲文博
(1.东南大学生物科学与医学工程学院,南京210096; 2.上海瑞示电子科技有限有限公司,上海201202)
基于MSP430F5529和SD卡的FAT16文件系统的设计
夏兰1*,贾晓冬1,曲文博2
(1.东南大学生物科学与医学工程学院,南京210096; 2.上海瑞示电子科技有限有限公司,上海201202)
摘要:针对无法保存长时间监测产生大量数据的问题,设计开发了一种基于MSP430单片机和SD卡的FAT16文件系统。利用SPI总线与SD卡通信,实现对SD卡的数据读写,在SD卡中以FAT16文件格式建立相应的文件系统,使其为Windows操作系统识别,方便后期的数据处理。该系统在大容量的现场数据采集、存储等方面有着广泛的应用前景。将该设计应用于便携式心电监护仪上,有较高的应用价值。
关键词:MSP430F5529; SD卡; FAT16文件系统; SPI; USB
近年来,便携式医疗电子市场增长势头非常迅猛,有数据显示,中国市场的年复合增长率已连续5年保持在20%~30%的增长[1]。随着便携式医疗电子产品发展趋势日益明显,家用便携式生理信号监护设备正逐渐走入人们的生活,便携式医疗仪器的发展迎来了前所未有的机会。针对便携式医疗电子产品不仅要求低电压、低功耗、小型化、高精度和高可靠性,而且要求存储数据容量大。本研究采用大容量SD卡作为存储介质,利用TI公司的MSP430微功耗单片机,实现了FAT16的文件系统,为生理信号采集与记录、便携式医疗系统的数据存储提供了一个理想的解决方案。
系统设计以msp430f5529 16位超低功耗微处理器为核心,利用串行外围设备接口总线与SD卡相连,实现系统长时间采集和海量数据记录,同时在LCD上通过菜单对SD卡中记录的数据进行读写操作。为方便微处理器和PC机对SD卡的操作,在SD卡中构建了FAT16格式相应的文件系统,PC机通过USB方便在Windows操作系统上直接读取SD卡上的数据文件或用专用读卡器读取,进而进一步对数据进行处理,这对事后分析有着非常重要的作用。整个系统的结构示意图如图1所示。
图1 系统结构示意图
2.1SD卡接口设计
SD卡(Secure Digital Memory Card)是一种基于半导体闪存工艺的存储卡,具有大容量、高性能、体积小、口线少、数据传输速率快、极大的移动灵活性以及很好的安全性[2]、操作方便等特点非常适合应用在长时间存储大量数据的测量系统中。因此采用SD卡作为便携式医疗电子产品的存储介质是很好的解决方案。SD卡引脚外形如图2所示,其引脚功能详述如表1所示。SD卡支持1位/4位两种数据传输带宽,时钟最高频率为25 MHz,理论上最高数据传输速率为12.5 Mbyte/s[3]。
图2 SD卡引脚外形图
表1 SD卡引脚功能详述[4]
SD卡与主机的通讯分为两个模式:SD模式和SPI模式[5]。SD模式允许通过6线制(CLK、CMD、DAT0~DAT3)高速总线传输数据,但大部分微处理器无此接口,而使用软件模拟协议较复杂,会降低数据传输速率。串行外设协议接口SPI(Serial Peripheral Interface)方式下外围设备接口简单,仅需要4根线CS、SCLK、DI(MOSI)、DO(MISO),就能完成数据通信。况且大多数微处理器提供此接口,SPI协议简单,也易于软件模拟实现,故本设计选择SPI模式与主控器进行通信[6]。主控器采用MSP430F5529微处理器,它是一款高集成度、高性能处理、低成本的超低功耗单片机,具有128 kbyte闪存、8 kbyte RAM、USB接口、12位ADC、16位RISC架构、5种低功耗模式,具有强大的中断功能,集成了较丰富的片内外设和较多的I/O端口,提高了对外围设备的开发能力,其供电电压范围为1.8 V~3.6 V[7],与SD卡的工作电压兼容,因而可以直接与SD卡相连,无需电平转换电路。MSP430F5529主控器与SD卡连接电路如图3所示。MSP430F5529利用SPI对SD卡进行读写操作,SPI方式下主机和外围设备是以主从方式进行工作的,此种模式通常有一个主器件和一个或多个从器件,在本设计中MSP430工作于主模式下,SD卡工作于从模式下[8]:
图3 MSP430F5529主控器与SD卡连接电路图
(1)MOSI为主器件数据输出,从器件数据输入; (2)MISO为主器件数据输入,从器件数据输出; (3)SCLK为时钟信号,由主器件产生; (4)CS为从器件使能信号,由主器件控制。
串行外设协议消息由指令、回应和数据块组成,所有的操作均由主器件控制。主器件每次开始传送任务时,都先将片选端置低电平,以激活串行器件进入工作状态。SPI传输时序如图4所示。
图4 SPI传输时序
当CS为高时,串行同步时钟处于空闲状态,当CS为低电平时,串行时钟开始工作,时钟上升沿时数据由主机传送至串行设备,时钟下降沿时数据通过MISO输入主机,数据传输时由高位开始,在串行时钟的控制下按位传输。当CS上升沿时,结束所有数据传输,并清零内部计数器和命令字寄存器。
SD卡在SPI方式下通讯主要有以下特点[8]:
(1)被选中的卡要对来自于主器件的指令有所响应;
(2)指令的响应是一个8 bit结构;
(3)当卡接受错误时,会返回一个出错的响应,代替期望的数据;
(4)支持单块和多块读写操作。块的大小可以大到一个扇区(512 byte),小到1 byte,一次操作的具体长度可以在CSD寄存器中设定。
2.2SD卡操作
SD卡的底层操作包括SD卡初始化、写入和读取,利用单片机的通用串行口可以很容易的完成这些工作。SD卡上电后的默认模式是SD模式,必须通过初始化命令进入SPI模式。单片机向SD卡发送CMD0被成功接收后,SD卡会向单片机返回0x01,进入idle_state模式。然后再发送CMD1,接受到正确的返回值0x00后即表示完成初始化操作。需要注意初始化时SPI速率不能超过400 kHz,发送CMD0之前要向SD卡发送至少74个时钟周期来使SD卡达到正常工作电压,此时片选CS为高;发送CMD0,此时片选CS才能为低[9]。SD卡初始化流程如图5所示。
完成初始化之后SD卡即可进行读写操作。SD卡写入数据时,先要利用CMD16设置区块长度,再将地址参数送入CMD24,即可写入单个区块,写入多个区块就是将上述步骤进行循环操作,易于改变。SD卡写入数据的流程图如图6所示。SD卡读取数据时,同样要设置区块长度,然后再利用CMD17读取数据。
图5 SD卡初始化流程图
图6 SD卡写入数据流程图
在本系统设计中,单片机对SD卡中文件进行操作,实现新建目录、文件,删除目录、文件等基本文件系统的操作功能,以及要使SD卡上的数据在PC机上得到正确的访问,需要在SD卡上创建它们支持的文件系统,这就需要设计自己的文件管理系统FAT[10]。FAT文件系统有FAT12、FAT16、FAT32,它们的主要不同是在磁盘分配表结构中每个记录所占的位数不同。本设计选择建立应用最为广泛的FAT16文件系统,FAT16文件分配表每一表项为16位。FAT16文件是Microsoft开发的文件系统,是一种技术成熟、结构简单、系统资源开销小,易于在单片机上的硬件平台上实现的文件系统。
3.1FAT16文件系统结构[11]
FAT16文件系统的结构如图7所示,和其他FAT文件系统一样,FAT16文件系统的数据信息一般由MBR区、DBR区、FAT区、DIR区和DATA区5个部分组成。这些结构是在分区被格式化时创建出来的,它们的含义如图7所示。
图7 FAT16文件系统的结构图
①主引导记录区MBR(Main Boot Recorder)位于SD卡物理磁盘0扇区,存放SD卡启动代码,内容一般固定,中间有一段硬盘分区记录表DPT(Disk Partition Table)记录了各逻辑分区的相对偏移。SD卡不支持多分区,在1个SD卡中只有一个分区,因此DPT中只有一个表项被占用。
②系统引导记录区DBR(DOS Boot Record)位于逻辑磁盘0扇区,是操作系统可以直接访问的第1个扇区,DBR区包含两个部分,一个是引导程序,另一个是BPB(Bios Parameter Block)参数记录表。BPB记录着本分区的根目录大小、FAT个数、磁盘介质描述、分配单元大小等重要信息。
③FAT表(File Allocation Table)是给文件分配数据空间的表格,用于文件内容的索引和定位,是一个以簇为单位的链式结构,又称簇链。每个簇包含2n(n为整数)个数据区的扇区,在对SD卡格式化时生成。FAT表中的每个表项对应数据存储区中的1个簇,用以表示簇的存储使用情况。由于FAT表对于文件的重要性,FAT16文件系统有两个FAT表,FAT2是FAT1的备份,可以保证在FAT1被破坏的情况下通过FAT2修复文件。
④DIR区(Directory)是根目录区,紧接着第2 个FAT表(FAT2)之后,记录着根目录下每个文件的起始簇号、大小等属性。操作系统根据DIR中文件的起始簇号和大小,结合FAT表来定位文件。
⑤DATA区存放各种数据。是FAT16文件系统主要区域。通过READ或WRITE命令从相应的扇区读取数据,或是将特定长度的数据写入相应的簇中。3.2 FAT16文件系统操作[11]
为了方便数据的存储与管理,实现FAT16文件系统操作,首先要进行初始化,即读取SD卡的系统引导记录区,获得各区块的位置以及分配单元大小等参数,通过这些参数可以换算出每个簇的逻辑地址,用于对文件系统的操作。
单片机对文件的操作主要有创建文件、读取文件、写入文件和删除文件。文件操作的基本思路就是通过读取SD卡,在根目录中找到文件的起始簇号和大小,再到FAT表中找到整个文件存放的位置,然后到存放文件的扇区做相应数据操作。
读取SD卡上的文件,首先要根据文件名在根目录区中查找到该文件的目录登记项,根据目录登记项中的起始簇号既可找到文件在数据区中第1簇的内容,又可在FAT表中找到接下来存放文件的簇号。由此,可以读取全部文件数据。向SD卡写文件,要保证FAT1和FAT2中内容的一致性,即对两块都要进行同样的写操作。
文件创建则是根据所需大小在根目录中创建文件项的过程,在FAT表中找到最靠前空置的簇,并将起始簇号等信息写入根目录区,再根据文件大小在FAT表中构成簇链。最后将FAT表进行复制,填入FAT2。
文件删除操作是直接将根目录区所对应的项清空,再将文件对应的FAT簇链清空。
文件系统层的操作是在底层之上,可以直接由函数调用,利用按键和显示屏,能够轻易地实现对SD卡中文件的读取、写入、创建和删除。此外,本设计在此基础上做了一定扩展,配备了可以直接连接PC的USB端口,能够被电脑识别,以文件的形式在Windows下访问SD卡中的数据。
在SD卡上创建了Windows支持的FAT16文件系统后,PC机通过USB接口在Windows下直接读取SD卡上所记录的数据文件,方便后期的数据处理和分析。
4.1USB接口设计
MSP430f5529的USB模块集成了12 Mbit/s全速USB收发器;多达8个输入、输出的数据传输;支持控制、批量和中断数据传输;支持USB挂起、恢复和远程唤醒[7]。本设计如图8所示的USB接口电路图。电路中利用PUR完成D+信号的上拉,使主机能够识别当前设备为全速USB设备,同时利用TPD2E001DRLR芯片提供电流过载保护。
图8 USB接口电路图
4.2USB识别过程
当一个设备插入USB主机的集线器中时,设备在D+线上的上拉电阻将使集线器中信号线电位升高,主机就能自动识别设备[12]。将主机和设备接通后,开始对设备进行枚举。枚举是主机从设备读取各种描述符信息,再根据这些信息来加载合适的驱动程序。枚举的过程主要有如下几步:
(1)主机对设备进行复位,建立控制传输过程,设备会在主机的指令下返回设备的描述符;
(2)主机对设备再次进行复位,对新设备设置地址;
(3)主机从新的设备地址,再次获取设备描述符;⑷主机获取配置描述符以及字符串描述符;
枚举过程结束后,主机就会根据设备信息做出响应。
4.3USB传输过程
系统的主要功能在于文件数据的传输,而包(Packet)是USB系统中信息传输的基本单元,一个包分成不同的几个域,不同类型的包含有不同的域,但是值得注意所有的包都是以同步域开始,紧跟着一个包标识符PID(Packet Identifier),最终以包结束符EOP(End of Packet)来结束这个包[13]。
在USB的传输中,制定了4种传输类型:控制传输、中断传输、批量传输以及实时传输。
本文件系统数据量大采用了批量传输,当系统通过USB端口和PC机相连后,能够进入枚举识别过程,并以大容量存储设备的形式进行识别,同时利用TI官方提供的PC机驱动,以可移动磁盘的形式打开浏览SD卡,读取其中以Windows标准文件存储的内容,从而实现了SD卡中数据和PC机的交互。
本设计应用于便携式心电监护系统上,取得了良好的效果。便携式心电监护系统需要将基于MSP430 和SD卡的FAT16文件系统配合心电模拟前端来实现对人体心电信号的采集、存储。心电信号的拾取是通过电极在体表检测两个部位间的电位差来完成的。从体表取出的心电信号,电位变化约为0.01 mV~5 mV,频率范围为0.05 Hz~100 Hz。由此可以看出,心电信号比较微弱,心电信号必须经过前置放大、滤波等一系列处理后,方能作为医生诊断等的依据。因此心电模拟前端主要由前端放大电路,滤波电路,放大电路等模块组成。如图9所示心电模拟前端电路。
图9 心电模拟前端电路
由于心电信号非常微弱需要经过前置放大,它主要由高输入阻抗、高共模抑制比的仪表放大器INA118来实现对两个导联信号进行差模放大,以右腿处电位作为共模端,来提高共模抑制比,从而避免心电信号的失真,经过前置放大的信号还需要再进行主要包括高通、低通和带阻滤波,得到频段为0.05 Hz ~100 Hz的心电信号,最后对信号再进行放大。整个前端模拟放大器噪声指标要小,不能引入新的干扰,要保证信噪比足够高。至此由标准导联拾取到的心电信号通过如图9所示的放大、滤波的过程处理之后经MSP430的AD采集,可存储在采用FAT16文件系统的SD卡中,SD卡的容量完全满足记录病人的心电数据的需求,事后可通过USB或读卡器将存储在SD中的心电数据传输到PC机上,便于医生对病人心电的回放和分析,为其诊断和治疗提供了重要信息。
实物成品图片展示如图10所示。
图10 实物图
本文利用低功耗MSP430f5529单片机在SD卡上构建FAT16文件系统,并以采集、记录人体心电信号为例简述了该系统可长时间、连续将大容量心电数据存储在SD卡上,实现了在SD卡中创建、读取、写入和删除文件等的操作,同时通过全速USB实现SD卡中数据和PC机的交互,使数据非常方便的传输到PC机上进行进一步处理。该系统应用范围很广,移植性强,系统架构合理功能完善,可广泛用于生物医疗、工业控制、消费类电子产品等大量数据采集存储的各个领域中。
参考文献:
[1]黄婷婷.中国便携式医疗电子市场增势迅猛连续5年保持20%~30%增长率[EB/OL].http://www.biodiscover.com/group/topic/5699.html,2013-12-17.
[2]张洪刚,苑秉成.基于FPGA和SD卡的水声信号高速采集与存储系统设计[J].电子器件,2009,32(1):208-212.
[3]杨增汪,陈斯,戴新宇.SD卡在煤矿矿井数据采集分站中的应用[J].煤炭技术,2011,30(12):167-169.
[4]罗小刚,张焱,彭承琳.基于MSP430和SD卡的FAT16文件系统的设计[J].电子技术应用,2008,34(11):65-68.
[5]袁芬艳,刘敬彪.SD卡在工业数据采集中的应用[J].电子器件,2010,33(5):629-631.
[6]彭珊珊.基于MSP430的运输综合状态监测记录仪的研究[D].河北:河北工业大学,2013.
[7]Texas Instruments.MSP430F551x,MSP430F552x Mixed Signal Microcontroller (Rev. L)[EB/OL].http://www.ti.com/lit/ds/symlink/msp430f5529.pdf,2013-5.
[8]段勇,陈真诚,宋含,等.基于MSP430单片机的SD卡读写[J].生物医学工程研究,2007,26(4):347-350.
[9]周跃,沈捷,花魁.基于SD卡的数据存储系统设计[J].化工自动化及仪表,2012,39(1):95-98.
[10]魏来,周穗华,刘旭东.基于SD卡的水声信号采集系统设计[J].海洋技术,2010,29(2):51-55.
[11]高永占.基于SD卡的嵌入式文件系统的设计与实现[D].北京:北京交通大学,2010.
[12]郭险峰,刘成财.基于MSP430F5529的电信号数据采集系统设计[J].电焊机,2012,42(9):47-49.
[13]刘荣.圈圈教你玩USB[M].北京:北京航空航天大学出版社,2009:19-24.
夏 兰(1963-),女,汉族,东南大学生物科学与医学工程学院,高级工程师,主要研究方向为生物医学电子学,生物医学信号的检测与处理等,melab@seu.edu.cn;
贾晓冬(1992-),男,汉族,现在就读于东南大学生物科学与医学工程学院,七年制本硕连读,主要研究方向为医学电子学,医学信号处理等。
A Scheme for Identifying Complete Identity Information on Mobile Terminal
PAN Jie,WAN Guojin*,HU Jie
(Department of Electronic Information Engineering,Nanchang University,Nanchang 330031,China)
Abstract:A new design of identifying complete identity information on mobile terminal based on GSM(Global System for Mobile Communication)network technology is proposed.Using unidirectional authentication mechanism and principle of location update of GSM system,new mechanism of identity request was designed for mobile terminal with different type identity repeatedly.Meanwhile,simulated base station induced terminal to interact with messages transmitted in the air and completed the identification of complete identity information wherein includes TMSI(Temp Mobile Subscriber Identity),IMSI(International Mobile Subscriber Identity),IMEI(International mobile equipment identity)and IMEISV (International mobile equipment identity with Software Version)of current terminal by analyzing messages.This scheme can effectively achieve and identify other identity information on terminal promptly where no TMSI is available and the data existing in the current VLR(Visitor Location Register)has lost.The testing results show that this design scheme can effectively identify and manage all identity information of mobile terminals accurately in the base station coverage.
Key words:GSM; mobile terminal; complete identity information; identity request mechanism; location update
doi:EEACC:614010.3969/j.issn.1005-9490.2015.04.046
收稿日期:2014-10-08修改日期:2014-12-16
中图分类号:TP368.1
文献标识码:A
文章编号:1005-9490(2015)04-0946-07