魏来,周穗华,刘旭东
(1.海军工程大学兵器工程系,湖北武汉430033;2.海军士官学校兵器系,安徽蚌埠233000)
基于SD卡的水声信号采集系统设计
魏来1,周穗华1,刘旭东2
(1.海军工程大学兵器工程系,湖北武汉430033;2.海军士官学校兵器系,安徽蚌埠233000)
针对宽频带水声信号长时间高速采集与实时记录的难题,设计了以大容量SD卡作为存储介质的水声信号高速采集与大容量实时存储系统。该系统通过在嵌入式系统中应用SD2.0协议和改进的FAT32文件系统,重点解决了大容量数据实时存储的难题。海洋实验结果表明该系统设计合理,使用方便,工作可靠,能够满足工程需要,并具有较强的通用性和扩展性,工程应用前景广阔。
声学;SD卡;SD2.0;FAT32文件系统;数据采集
声波是在海洋环境中进行目标探测和通信的有效手段,在对海洋声场进行研究的过程中需要获取大量的原始声信号,为此需要水声数据采集系统长时间工作在无人看守的复杂水下环境中,并同时进行高速高精度数据采集与实时记录。恶劣的工作环境,繁重的工作任务,对其性能提出了很高的要求,需要进行专项设计。
传统的数据采集系统多采用Flash芯片作为存储介质,该芯片容量小(一般容量不超过8Mb),价格高(尤其是大容量芯片),灵活性低(多采用焊接方式),难以满足水声数据采集的要求。针对这种现状,本文提出了采用大容量SD卡作为存储介质,基于SD2.0和改进的FAT32文件系统的系统设计方案,以解决水声数据高速采集与大容量实时存储的工程应用难题。
本文讨论的高速数据采集存储系统,需要装配在特制的测量仓体内,并长时间工作在无人看守的复杂水下环境中,以对海洋环境中0~5 kHz的水声信号进行高速高精度数据采集与实时记录,因此该系统要满足如下各项技术指标要求:
(1)保证单通道50 K以上的采样率和16位的采样精度;
(2)保证连续存储的时间要大于20 h,并具备按预定时段记录的能力;
(3)较强的稳定性和可靠性,发生意外时能够保证数据的完整并具有较强的纠错能力;
(4)满足一定的尺寸体积要求;
(5)有较强的人机交互功能,便于用户对系统的操作。
图1 系统结构图
系统结构见图1,主要由前端信号调理与A/D采集模块、通信模块、主控模块、SD卡存储模块和供电模块等部分组成。由传感器输入的信号经调理后,进入A/D模块进行模数采集;采集得到的数据通过SPI总线被传输至主控模块;主控模块作为系统的控制核心,接受A/D模块采集到的数据,并将其实时存储到SD卡;此外,主控模块还能够实现系统与PC机的串口通信,以方便操作者通过人机交互模式对系统的工作起止时间、文件存储模式等参数进行预置并读取系统当前状态;系统供电模块是由电池组输出,通过稳压滤波模块为系统提供标准工作电压。
A/D采集模块采用了美国CYGNAL公司的C8051F060单片机[1]。该单片机作为一款真正意义上的片上混合系统,其丰富的外设模块不仅能够实现数据的采集转换,还可以实现对SD卡的访问。
主控制器模块采用了基于ARM7TDMI-S内核的LPC2368处理器[2]。该处理器可在72MHz频率下运行,内部集成有4个UART,1个SPI接口,能够满足系统对控制模块的要求。此外,该处理器还支持SD/MMC卡接口,可以非常方便地实现与SD卡的连接。
存储模块采用的是SD存储卡。作为一种微型、低功耗、可移动的FLASH存储卡[3],SD卡与独立的FLASH芯片相比增加了智能保护机制,具有更高的传输速率和更大的存储容量,安全性高、使用方便,可广泛用于各种便携式存储设备,能够满足系统对高速实时大容量存储的需求。
数据通信协议的实现是利用SD卡实现大容量数据存储的关键,其主要包括两个部分,即SD卡引脚的定义与连接和通信协议的选择与实现。
SD卡采用的是基于9针的通信接口模式,分别为1个命令引脚、1个时钟引脚、4个数据引脚和3个电源引脚,各引脚的具体定义见表1(基于SD工作模式)。
表1 SD卡引脚定义
SD卡各引脚与主控制器间的具体接口电路见图2,电源通过上拉电阻R18-R23给SD卡供电,以提高主控制器的驱动能力。
图2 SD卡接口电路图
SD卡采用的通信协议有SD1.0和SD2.0两种,在本系统设计中采用的是SD2.0,后者在读写速度和存储容量等指标上均高于前者,其具体参数如下:
(1)具备12.5 MB/s和25 MB/s两种接口速度,前者工作在0~25 MHz的默认时钟状态,后者工作在50 MHz的高速时钟状态;
(2)支持2 GB-32 GB的大容量存储。
按照SD2.0协议的规定,系统采用SD工作模式和单字节传输模式对SD卡进行读写操作和数据包传输,以提高读写速度和可靠性。如果数据的存储传输是按照正常模式进行,则先发送低有效位,再发送有效位,对于个别反序存储的数据,则反之[4]。
SD2.0协议的特点之一是支持对大容量SD卡的读写,其读写过程与SD1.0协议的区别主要体现在卡的识别模式操作过程中,其操作流程见图3。在系统上电后,主控制器首先发送GO_IDLE_STATE(CMD0)指令使系统复位,并使所有SD卡处于等待命令输入的状态;然后发送SEND_IF_COND(CMD8)指令以确认主控制器提供的电压和卡的电压是否兼容(该指令是2.0协议中新增加的内容,是在发送ACMD41命令之前必须执行的一条指令);随后发送SD_SEND_OP_COND(ACMD41)指令以识别和卸载不兼容电压的SD卡,并通过判断返回值和CCS标志位来确认是否是新标准大容量卡;最后系统通过CMD2,CMD3指令完成SD卡的识别模式操作过程,进入数据传输模式(该模式与SD1.0协议操作相同)。
图3 SD卡初始化和识别流程(SD模式)
在本系统设计中,为了便于SD卡在PC机上进行后续数据处理,需要为SD卡选择合适的文件系统。在目前广泛使用的FAT16和FAT32文件系统中,由于FAT32[5]可支持32GB的最大分区容量(FAT16只能支持2GB的最大分区容量),故被本设计所选用。
FAT32文件系统的数据信息一般由MBR,DBR,FAT,FDT和数据区5个部分组成。FAT32的分区数据结构见表2。
表2 FAT32的分区数据结构
MBR(Master Boot Record),即主引导记录位于0柱面0磁头1扇区,记录了第一磁盘分区的入口和剩余磁盘分区的入口信息、第一部分的文件系统格式、起始扇区号和大小。
DBR(DOS Boot Record),即系统引导记录位于逻辑0扇区,该区的BPB(Bios Parameter Block)参数块记录着分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元大小等重要参数,通过这些目录可以找到FAT和根目录入口。
FAT(File Allocation Table),即文件分配表。它从逻辑1扇区开始,是文件管理系统用来记录每个文件存储位置的表格,它以链表的方式存储簇号,只要知道了一个文件存储位置的首簇号,就可以利用FAT找到整个文件的存储位置。
FDT(File Directory Table),即文件目录表。它由32B的文件目录项组成,记录整个磁盘上所有文件的有用信息,包括文件名、文件属性、文件的修改时间和文件的长度等,当根目录上存储的文件超过当前FDT所能记录的数量后,操作系统将为文件系统增加一个或多个簇的存储空间。
本设计的难点是如何在FAT32文件系统下实现大容量数据的实时采集存储。虽然主控制器可以在SD卡上建立标准的FAT32文件系统,但其实现过程复杂,需要主控制器对每次数据读写过程进行大量的操作,难以满足实时存储的要求。因此,本文提出了准文件系统的设计思路,即对FAT32文件系统结构进行改进与简化,以在存储性能不变的前提下,提高存储速度,满足实时采集存储的要求。
准文件系统的设计思路是在标准FAT文件系统的基础上,通过适当改变文件读写顺序来以提高存储速度。即在单个扇区写入时省去文件打开、寻找文件目录信息、查看FAT表、计算读写扇区地址、更新FAT表、更新文件目录信息等内容;在SD卡的初始化过程中就通过对MBR,DBR区的读取和计算得到FAT表的数量和起始地址、根目录的起始地址、数据存储区的起始地址;在数据存储时全部通过绝对地址递增的方式来确定要读写扇区的绝对地址;在所有数据存储完成后,通过计算最后一个写入扇区地址与数据区起始扇区地址的差值得到写入数据的总数,以此来更新FAT表和文件目录的相关信息。
在改进的FAT32文件系统基础上,SD卡模块的软件设计可分为三层,见图4。
图4 SD卡软件分层结构
底层是SD卡驱动程序,它完成与SD卡大部分硬件接口命令有关的操作,包括SD卡初始化、SD卡按LBA方式读写数据、读取SD卡状态等。
图5 FAT32文件系统写文件流程图
中间层是改进的SD卡文件系统,该层是实现与PC机文件系统相兼容的核心,完全按照PC机文件系统要求设计,包括存储文件的各种数据结构(系统引导区、硬盘引导区、文件分配表FAT、文件目录表FDT、子目录等),以及文件的各种操作。
顶层是留给应用程序的API函数,用户可以通过调用文件系统的功能函数实现对数据的存储。这些API函数包含对SD卡操作的高级命令,写文件、更新FAT、更新目录信息等。
SD卡写文件子程序流程见图5。
在执行SD卡数据写操作之前,首先应确定当前数据存储的扇区地址,即数据存储的位置,通过在文件系统初始化程序中得到的SD卡物理参数,即可以利用在创建数据缓冲区时设置的全局变量确定数据存储的扇区地址。在确定数据存储地址后,调用写扇区子程序,同时更新确定地址的全局变量,将一个数据块(大小规定为512B)写入扇区,即完成一次写操作。
在写文件子程序中,每写完一个扇区,都需进行文件目录信息的检查与更新,即在每次写操作完成后,首先将扇区个数加1,然后检查其能否被一个簇的扇区数整除,根据检查结果确定文件目录信息是否需要更新。如果扇区个数能被整除,则继续判断FAT是否溢出,若都满足则调用更新目录子程序更新目录信息。该程序首先读出目录信息并进行修改,然后再按照FAT32文件目录格式将新的目录信息写回根目录区,即完成一次目录信息的检查与更新。需要说明的是,对FAT和目录的写入操作都是基于写扇区的操作,调用相同的写扇区函数向扇区中写入一定的内容,只是输入函数的参数不同。
系统软件用C语言开发,软件采用模块化编制与管理,系统软件流程见图6。
该系统软件主要由以下模块组成:
(1)通信模块的初始化,主要用来配置SPI总线所占用的具体引脚以及SPI的主、从模式和传输速度等参数,以及串口通信的波特率、通信格式等相关配置;
(2)数据采集模块的初始化,主要用来配置该模块的采样时钟频率、基准电压、开启转换方式等参数;
(3)准文件系统初始化程序,用于获取文件系统所需要的各项参数;
(4)主控制器中DMA控制器的初始化,主要用来配置DMA的工作方式和地址等参数。
(1)SD卡命令模块,通过此模块的调用可以向SD卡输入各种命令,同时可以监测SD卡的工作状态;
(2)SD卡数据的读写模块,在功能命令输入之后,主控制器可以调用此模块对SD卡进行读写操作。
(1)文件系统的写入程序,用于将ADC模块采到的数据以文件系统形式存储到SD卡;
(2)FAT表、根目录更新程序,在数据采集完成以后修改文件系统的相关信息,使PC机能够正确识别SD卡上的文件。
利用数据采集模块完成前端模拟信号的数据转换并通过SPI总线将数据传输至主控制器。
图6 系统软件流程图
[1]潘琢金.C8051Fxxxx高速SOC单片机原理及应用[M].北京:北京航空航天大学出版社,2002.
[2]周立功.深入浅出ARM7[M].广州:广州致远电子有限公司,2006.
[3]SanDisk Secure Digital Card Product Manual[R].SanDisk Corporation,2004.
[4]SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00[R].Matsushita Electric Industrial Co,Ltd,SanDisk Corporation,Toshiba Corporation,2004.
[5]宋群生,宋亚琼.硬盘扇区读写技术-修复硬盘与恢复文件[M].北京:机械工业出版社,2004.
[6]刘素花.SD卡在海洋数据存储中的应用[J].海洋科学,2009,33(3):16~20.
[7]张洪刚.基于FPGA和SD卡的水声信号高速采集与存储系统设计[J].电子器件,2009,32(1):208~212.
本文设计了以大容量SD卡作为存储介质的水声信号高速采集与实时存储系统,该系统通过应用SD2.0协议和改进的FAT32文件系统,成功地解决了大容量数据的实时存储问题,能够实现3 Mb/s的SD卡写入速率,存储容量最大可达到32 Gb,单通道采样率最高可到1 MHz。系统具有很强的人机交互能力,其采样频率、采样通道数、记录方式等参数均可以利用PC机进行设定和显示。此外,该系统通过改变系统参数内容,可以满足不同应用场合的需要,具备较强的通用性。
目前该系统已成功地应用于某海区的声场数据采集实验,实验结果表明该系统设计合理,使用方便,工作可靠,能够满足工程需要。作为一款高速大容量实时存储的嵌入式数据采集系统,具有很强的通用性,工程应用前景广阔。
Abstract:Aiming at the difficulty in continuous high speed acquisition and real time store of broad band underwater acoustic signals,a design of high speed acoustic signal acquisition,large capacity and real time store system is proposed,which is based on high capacity SD card.The system solves the problem of real time store of high capacity data by the application of adjusted FAT32 file system and high capacity SD card in embedded system.The results of experiment showed that the system would be well designed,easy to use and reliable.With its strong versatility and stability,it can meet the need of engineering and has a bright future in the field of engineering.
Key words:acoustics;SD card;SD2.0;FAT32 File System;data acquisition
Design of Underwater Acoustic Signal Acquisition System Based on SD Card
WEI Lai1,ZHOU Sui-hua1,LIU Xu-dong2
(1.Department of Weaponry Engineering,Naval University of Engineering,Wuhan Hubei 430033,China;2.Department of Weaponry,Navy Petty Officer Academy,Bengbu Anhui 233000,China)
TJ630
B
1003-2029(2010)02-0051-05
2009-12-24
国防科技预研项目(513040204).
魏来(1979-),男,辽宁大连人,博士生,主要研究方向为水声信号处理。