舰船科学技术  2018, Vol. 40 Issue (7): 125-128   PDF    
基于SDHC卡的舰船天线数据存储技术
郑寿庆, 李卓, 李兵, 廖腾勇, 郑文景     
中国船舶重工集团公司第七二二研究所,湖北 武汉 430205
摘要: 介绍一种在嵌入式系统中基于SPI协议实现在SDHC上进行数据存储的方法。该方案以STM32F407微处理器为主控制器,采用SPI总线通信方式,与SDHC卡之间进行数据通讯与存储。结合FATFS文件系统,可方便地实现数据的存储与导出,成功地解决了舰船天线日常使用数据量大、记录和保存困难的问题。
关键词: STM32F407     SDHC卡     SPI总线     数据存储    
Research on data storage technology of ship antenna based on SDHC card
ZHENG Shou-qing, LI Zhuo, LI Bing, LIAO Teng-yong, ZHENG Wen-jing     
The 722 Research Institute of CSIC, Wuhan 430205, China
Abstract: A method of data storage on SDHC based on SPI protocol in embedded system is introduced, which makes STM32F407 as the major controller, using SPI Bus communication mode, carries out the data communication and storage with SDHC card. Combining FATFS file system, it can easily realize the storage and export of the data, and successfully solve the problem of the large amount of data and the difficulties in the daily record and preservation of the ship antenna.
Key words: STM32F407     SDHC card     SPI bus     data storage    
0 引 言

某型舰船天线工作环境恶劣,使用时间和频率高,工作时需要长时间、连续地采集其工作时间、水下深度等数据,便于掌握设备的使用情况和寿命,并对异常数据进行分析。以往一直采用人工记录的方式,此方法不仅费时费力,而且数据记录的完整性、准确性和真实性难以保证,不利于后续的分析与统计。

本文将提出一种基于SDHC(Secure Digital High Capacity)卡和STM32F407微处理器的数据存储方案,不仅能完成数据的自动存储,而且数据查询、管理与导出也非常方便,可以简单地实现舰船天线的日志记录。

1 硬件设计 1.1 SDHC存储卡简介

SDHC卡作为新一代高容量数据存储载体,最大容量可达32 GB,尺寸小,功耗低,数据传输速度快,可热插拔,目前已被广泛地应用于便携式设备上。

其遵循SD V2.0规范,支持SD和SPI两种工作模式,对嵌入式接口电路进行简单的设计可方便地与SDHC卡相连,实现大容量数据存储。

SDHC卡既可以采用SD模式,又可以采用SPI模式。其中SD模式采用六线制,使用CLK,CMD,DAT0~DAT3进行数据通信;SPI模式采用四线制,使用CS,CLK,DI,DO进行数据通信。

SD模式相比SPI模式传输速度要快很多,但SD模式对接口电路要求比较高;大多数微处理器都配备了SPI硬件接口,其硬件连接相对简单,而且目前微处理器的处理速度越来越高,利用SPI模式大多都能满足工程需要[1]。因此,在对SDHC卡读写速度要求不太高的情况下,采用SPI模式是一个性价比较高的选择。

不同模式下所使用的引脚及定义不同,本文只对SPI模式进行介绍,SDHC卡在SPI模式下各引脚定义如表1所示。

表 1 SDHC卡SPI模式引脚定义 Tab.1 The definition of pins of SDHC card in SPI mode
1.2 STM32F407微处理器简介

STM32F407系列微处理器采用基于高性能32位RISC的ARM CortexTM-M3内核,集成了DSP和FPU指令,工作主频最高可达168 MHz,具有192 kB的SRAM和可在系统编程的FLASH存储器,通过APB总线连接了丰富、增强的外设和通信接口,功耗低,非常适合于控制和测试系统。

1.3 SPI模式接口电路设计
图 1 STM32F407与SDHC卡连接示意图 Fig. 1 Design sketch map of the connection of STM32F407and SDHC card

STM32F407微处理器[2]与SDHC卡电路连接示意图如图1所示,SDHC卡采用3.3 V电源供电,STM32F407微处理器SPI总线模式下,CS为单片机向SDHC卡发送的片选信号,SCLK为单片机与SDHC卡之间通信的时钟信号,DI为SDHC卡接收单片机发送数据的信号线,DO为SDHC卡向单片机发送数据的信号线,1脚和8脚在SD模式下使用,SPI模式可以不接。

2 软件设计 2.1 SDHC卡初始化

SD卡启动时处于SD总线模式下,当CS信号有效时接收到一个复位命令CMD0就进入SPI模式。

STM32F407的SPI功能很强大,SPI时钟最高可以到37.5 MHz,在SD卡刚刚初始化的时候,其时钟频率不能超过400 kHz,否则可能无法完成初始化。初始化以后,就可以将时钟频率设置到最大,但不可超过SD卡的最大操作时钟频率。

为使卡正常工作,在发送CMD0命令之前,要延时至少74个时钟周期,目的是要确保SD卡电压上升到正常工作电压[3]。初始化流程图如图2所示。

图 2 SDHC卡SPI模式下初始化流程图 Fig. 2 The flow chart of Initialization of the SDHC card in SPI mode

在初始化过程中,值得注意的是SD卡发送复位命令CMD0命令后,需要发送版本查询命令CMD8。如果返回值为0x01,表示此卡支持V2.0版本,若返回值为0x05,则表示此卡支持V1.0版本。虽然已经提前知晓SDHC支持V2.0版本,但程序中仍然需要对其版本进行判断,否则会出现卡无法正常工作的情况。

2.2 SDHC卡数据块读写操作

SDHC卡的读写以块为单位[4]。初始化完成后,发送CMD17可进行SDHC卡的连续多块读操作或发送CMD24进行SDHC卡的块写操作。

向SDHC卡发送CMD17,收到有效应答信号0x00后,开始接收数据,每块数据由起始令牌0xFE、有效数据和16位CRC校验位组成,在接收到起始令牌后,开始接收有效数据,随后接收2个字节的CRC校验位。SDHC卡写数据与读数据过程类似,写数据流程图如图3所示。

图 3 SDHC卡写数据块流程图 Fig. 3 The flow chart of write data block of SDHC card
2.3 SDHC卡文件系统

为便于用户使用,通常SDHC卡的数据需要在计算机上读写,因此SDHC卡上的文件系统必须与计算机的文件系统一致。

2.3.1 FATFS系统结构

FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,具有良好的硬件平台独立性,只需做简单的修改就可移植到多种平台。FARFS具有良好的层次结构,顶层为应用层,在使用时只需要调用FATFS模块提供的应用接口函数即可,不需要深入了解其内部结构和复杂的协议。FATFS模块的层次结构如图4所示[5]

图 4 FATFS层次结构图 Fig. 4 Hierarchical structure diagram of FATFS

中间层为FATFS模块层,使用时直接将FATFS模块提供的ff.c和ff.h文件包含到程序中,除非有必要,一般不需要修改即可使用。

底层接口包括底层存储媒介接口和供给文件创建修改时间的实时时钟(RTC)。用户应根据不同的控制芯片,编写底层相应的读写接口函数和实时时钟函数。

2.3.2 FATFS系统的创建

FATFS含有丰富的软件资源,在使用时,需要重点关注3点:

1)根据所使用的编译器的数据类型,在integer.h里定义好数据的类型。

2)根据需求,在ffconf.h中对FATFS模块的配置项进行设置。

3)在diskio.c中进行底层驱动编写,包括6个函数,如表2所示。

表 2 底层驱动函数表 Tab.2 Underlying driver function table

在使用FATFS的时候,必须先通过f_mount函数注册一个工作区,才能开始后续API的使用。

2.4 应用要点

2 G以内的SD卡属于标准卡,2 GB以上的SD卡属于大容量卡即SDHC卡,它们在地址访问形式上不同,标准卡在读写操作时,读写命令令牌中地址为字节地址,而SDHC卡只支持扇区读写操作,扇区大小为512字节,因此SDHC卡中地址为扇区地址。

在某一块要进行写操作时,最好先进行擦除命令,这样写入的速度能大大提高,进行擦除操作时需按块操作。

3 数据处理与分析

随着新一代信息技术的发展,舰船天线的数据也呈现出多样化、复杂性等特点,数据处理与分析方法在数据应用领域显得尤为重要,可以说是决定最终信息是否有价值的决定性因素。

本文基于大数据理论和舰船天线的特点,提出了数据预处理、后处理及预测性分析方法和模型。

数据预处理模块采用构建符合舰船天线使用特点的预处理模型的方法,对采集的原始数据进行过滤,选择有效信息进行存储,节省数据存储空间和计算时间,提高基础数据质量。

数据后处理模块,采用数据挖掘技术对前端存储的数据,依次进行数据的深度清理、数据变换及数据信息展示[6]

预测性分析旨在从大数据中挖掘出具有规律性的特征,建立预测模型,然后将部分后处理模块得来的数据代入预测模型,从而引出新数据,以预测未来的数据趋势,此模块对重点关注特性进行预测和分析,实现对舰船天线关键部位的监控和预警。

4 结 语

本文提出了一种基于SDHC卡的舰船天线的数据存储与处理方案,该方案充分利用了SD卡接口简单、容量大、智能化程度高、价格低廉等优点,采用高性能嵌入式芯片STM32F407微处理器与其配合使用,使得数据存储系统结构简单,数据使用灵活,只需占用很少的系统资源,就能实现数据的存储和读取;通过建立科学合理的数据模型对存储数据进行有效的处理和预测性分析,在实际应用中具有很好的推广价值。

目前该技术已在国内某型舰船天线控制系统中得到应用,较好地解决了天线使用数据存储量大、时间长、记录和查询复杂的问题,为提高天线设备的可靠性发挥了重要作用。

参考文献
[1] 徐建功, 赵捷, 李伟, 田杰. 基于STM32F103XX微处理器的Micro SD卡读写[J]. 现代电子技术, 2010(20): 26–32.
XU Jian-gong, ZHAO Jie, LI Wei,et al. Read and Write Operations of Micro SD Card Based on STM32F103XX Microcontroller[J]. Modern Electronics Technique, 2010(20): 26–32.
[2] 潘琢金. C8051Fxxx高速SOC单片机原理及应用[M]. 北京: 北京航空航天大学出版社, 2002: 169–171.
PAN Zhuo-jin. The principle and application of C8051Fxxx high speed SOC MCU[M]. BEI JING: Bei Hang University Press, 2002: 169–171.
[3] 冯欣宇, 夏路易, 等. 基于STC89C52单片机的SDHC卡初始化操作[J]. 机械工程及自动化, 2012(1): 65–69.
FENG Xin-yu, XIA Lu-yi. Initialization of SDHC Card Based on STC89C52 Microcontoller[J]. Mechanical Engineering & Automation, 2012(1): 65–69. http://mall.cnki.net/magazine/Article/SXJX201201026.htm
[4] 田茂, 鲜于李可, 潘永才. SPI模式下SD卡驱动的设计与实现[J]. 现代电子技术, 2009(14): 195–199.
TIAN Mao, XIANYU Li-ke, PAN Yong-cai. Design and Implementation of SD Card Driven Based on SPI Mode[J]. Modern Electronics Technique, 2009(14): 195–199.
[5] 蔡红专, 刘强, 陈琎. 嵌入式系统中基于SPI协议的SD卡扩展实现[J]. 微型机与应用, 2014, 33(19): 23–26.
CAI Hong-zhuan, LIU Qiang, CHEN Jin. The agreement extension of embedded systems based on SD card and SPI[J]. Microcomputer & Its Applications, 2014, 33(19): 23–26.
[6] 韩家炜, (美)坎伯. 数据挖掘: 概念与技术[M]. 北京: 机械工业出版社, 2012: 11–21.
Han Jia-wei, MICHELINE K. Data mining: concepts and techniques[M]. BEI JING: Machinery Industry Press, 2012: 11–21.