鄭壽慶,李 卓,李 兵,廖騰勇,鄭文景
(中國船舶重工集團公司第七二二研究所,湖北 武漢 430205)
某型艦船天線工作環(huán)境惡劣,使用時間和頻率高,工作時需要長時間、連續(xù)地采集其工作時間、水下深度等數(shù)據(jù),便于掌握設備的使用情況和壽命,并對異常數(shù)據(jù)進行分析。以往一直采用人工記錄的方式,此方法不僅費時費力,而且數(shù)據(jù)記錄的完整性、準確性和真實性難以保證,不利于后續(xù)的分析與統(tǒng)計。
本文將提出一種基于 SDHC(Secure Digital High Capacity)卡和STM32F407微處理器的數(shù)據(jù)存儲方案,不僅能完成數(shù)據(jù)的自動存儲,而且數(shù)據(jù)查詢、管理與導出也非常方便,可以簡單地實現(xiàn)艦船天線的日志記錄。
SDHC卡作為新一代高容量數(shù)據(jù)存儲載體,最大容量可達32 GB,尺寸小,功耗低,數(shù)據(jù)傳輸速度快,可熱插拔,目前已被廣泛地應用于便攜式設備上。
其遵循SD V2.0規(guī)范,支持SD和SPI兩種工作模式,對嵌入式接口電路進行簡單的設計可方便地與SDHC卡相連,實現(xiàn)大容量數(shù)據(jù)存儲。
SDHC卡既可以采用SD模式,又可以采用SPI模式。其中SD模式采用六線制,使用CLK,CMD,DAT0~DAT3進行數(shù)據(jù)通信;SPI模式采用四線制,使用CS,CLK,DI,DO進行數(shù)據(jù)通信。
SD模式相比SPI模式傳輸速度要快很多,但SD模式對接口電路要求比較高;大多數(shù)微處理器都配備了SPI硬件接口,其硬件連接相對簡單,而且目前微處理器的處理速度越來越高,利用SPI模式大多都能滿足工程需要[1]。因此,在對SDHC卡讀寫速度要求不太高的情況下,采用SPI模式是一個性價比較高的選擇。
不同模式下所使用的引腳及定義不同,本文只對SPI模式進行介紹,SDHC卡在SPI模式下各引腳定義如表1所示。
表1 SDHC卡SPI模式引腳定義Tab.1 The definition of pins of SDHC card in SPI mode
STM32F407系列微處理器采用基于高性能32位RISC的ARM CortexTM-M3內(nèi)核,集成了DSP和FPU指令,工作主頻最高可達168 MHz,具有192 kB的SRAM和可在系統(tǒng)編程的FLASH存儲器,通過APB總線連接了豐富、增強的外設和通信接口,功耗低,非常適合于控制和測試系統(tǒng)。
STM32F407微處理器[2]與SDHC卡電路連接示意圖如圖1所示,SDHC卡采用3.3 V電源供電,STM32F407微處理器SPI總線模式下,CS為單片機向SDHC卡發(fā)送的片選信號,SCLK為單片機與SDHC卡之間通信的時鐘信號,DI為SDHC卡接收單片機發(fā)送數(shù)據(jù)的信號線,DO為SDHC卡向單片機發(fā)送數(shù)據(jù)的信號線,1腳和8腳在SD模式下使用,SPI模式可以不接。
圖1 STM32F407 與 SDHC 卡連接示意圖Fig.1 Design sketch map of the connection of STM32F407and SDHC card
SD卡啟動時處于SD總線模式下,當CS信號有效時接收到一個復位命令CMD0就進入SPI模式。
STM32F407的SPI功能很強大,SPI時鐘最高可以到37.5 MHz,在SD卡剛剛初始化的時候,其時鐘頻率不能超過400 kHz,否則可能無法完成初始化。初始化以后,就可以將時鐘頻率設置到最大,但不可超過SD卡的最大操作時鐘頻率。
為使卡正常工作,在發(fā)送CMD0命令之前,要延時至少74個時鐘周期,目的是要確保SD卡電壓上升到正常工作電壓[3]。初始化流程圖如圖2所示。
圖2 SDHC 卡 SPI模式下初始化流程圖Fig.2 The flow chart of Initialization of the SDHC card in SPI mode
在初始化過程中,值得注意的是SD卡發(fā)送復位命令CMD0命令后,需要發(fā)送版本查詢命令CMD8。如果返回值為0x01,表示此卡支持V2.0版本,若返回值為0x05,則表示此卡支持V1.0版本。雖然已經(jīng)提前知曉SDHC支持V2.0版本,但程序中仍然需要對其版本進行判斷,否則會出現(xiàn)卡無法正常工作的情況。
SDHC卡的讀寫以塊為單位[4]。初始化完成后,發(fā)送CMD17可進行SDHC卡的連續(xù)多塊讀操作或發(fā)送CMD24進行SDHC卡的塊寫操作。
向SDHC卡發(fā)送CMD17,收到有效應答信號0x00后,開始接收數(shù)據(jù),每塊數(shù)據(jù)由起始令牌0xFE、有效數(shù)據(jù)和16位CRC校驗位組成,在接收到起始令牌后,開始接收有效數(shù)據(jù),隨后接收2個字節(jié)的CRC校驗位。SDHC卡寫數(shù)據(jù)與讀數(shù)據(jù)過程類似,寫數(shù)據(jù)流程圖如圖3所示。
圖3 SDHC 卡寫數(shù)據(jù)塊流程圖Fig.3 The flow chart of write data block of SDHC card
為便于用戶使用,通常SDHC卡的數(shù)據(jù)需要在計算機上讀寫,因此SDHC卡上的文件系統(tǒng)必須與計算機的文件系統(tǒng)一致。
2.3.1 FATFS 系統(tǒng)結(jié)構(gòu)
FATFS是一個完全免費開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設計。它完全用標準C語言編寫,具有良好的硬件平臺獨立性,只需做簡單的修改就可移植到多種平臺。FARFS具有良好的層次結(jié)構(gòu),頂層為應用層,在使用時只需要調(diào)用FATFS模塊提供的應用接口函數(shù)即可,不需要深入了解其內(nèi)部結(jié)構(gòu)和復雜的協(xié)議。FATFS模塊的層次結(jié)構(gòu)如圖4所示[5]。
圖4 FATFS 層次結(jié)構(gòu)圖Fig.4 Hierarchical structure diagram of FATFS
中間層為FATFS模塊層,使用時直接將FATFS模塊提供的ff.c和ff.h文件包含到程序中,除非有必要,一般不需要修改即可使用。
底層接口包括底層存儲媒介接口和供給文件創(chuàng)建修改時間的實時時鐘(RTC)。用戶應根據(jù)不同的控制芯片,編寫底層相應的讀寫接口函數(shù)和實時時鐘函數(shù)。
2.3.2 FATFS 系統(tǒng)的創(chuàng)建
FATFS含有豐富的軟件資源,在使用時,需要重點關(guān)注3點:
1)根據(jù)所使用的編譯器的數(shù)據(jù)類型,在integer.h里定義好數(shù)據(jù)的類型。
2)根據(jù)需求,在ffconf.h中對FATFS模塊的配置項進行設置。
3)在diskio.c中進行底層驅(qū)動編寫,包括6個函數(shù),如表2所示。
表2 底層驅(qū)動函數(shù)表Tab.2 Underlying driver function table
在使用FATFS的時候,必須先通過f_mount函數(shù)注冊一個工作區(qū),才能開始后續(xù)API的使用。
2 G以內(nèi)的SD卡屬于標準卡,2 GB以上的SD卡屬于大容量卡即SDHC卡,它們在地址訪問形式上不同,標準卡在讀寫操作時,讀寫命令令牌中地址為字節(jié)地址,而SDHC卡只支持扇區(qū)讀寫操作,扇區(qū)大小為512字節(jié),因此SDHC卡中地址為扇區(qū)地址。
在某一塊要進行寫操作時,最好先進行擦除命令,這樣寫入的速度能大大提高,進行擦除操作時需按塊操作。
隨著新一代信息技術(shù)的發(fā)展,艦船天線的數(shù)據(jù)也呈現(xiàn)出多樣化、復雜性等特點,數(shù)據(jù)處理與分析方法在數(shù)據(jù)應用領(lǐng)域顯得尤為重要,可以說是決定最終信息是否有價值的決定性因素。
本文基于大數(shù)據(jù)理論和艦船天線的特點,提出了數(shù)據(jù)預處理、后處理及預測性分析方法和模型。
數(shù)據(jù)預處理模塊采用構(gòu)建符合艦船天線使用特點的預處理模型的方法,對采集的原始數(shù)據(jù)進行過濾,選擇有效信息進行存儲,節(jié)省數(shù)據(jù)存儲空間和計算時間,提高基礎(chǔ)數(shù)據(jù)質(zhì)量。
數(shù)據(jù)后處理模塊,采用數(shù)據(jù)挖掘技術(shù)對前端存儲的數(shù)據(jù),依次進行數(shù)據(jù)的深度清理、數(shù)據(jù)變換及數(shù)據(jù)信息展示[6]。
預測性分析旨在從大數(shù)據(jù)中挖掘出具有規(guī)律性的特征,建立預測模型,然后將部分后處理模塊得來的數(shù)據(jù)代入預測模型,從而引出新數(shù)據(jù),以預測未來的數(shù)據(jù)趨勢,此模塊對重點關(guān)注特性進行預測和分析,實現(xiàn)對艦船天線關(guān)鍵部位的監(jiān)控和預警。
本文提出了一種基于SDHC卡的艦船天線的數(shù)據(jù)存儲與處理方案,該方案充分利用了SD卡接口簡單、容量大、智能化程度高、價格低廉等優(yōu)點,采用高性能嵌入式芯片STM32F407微處理器與其配合使用,使得數(shù)據(jù)存儲系統(tǒng)結(jié)構(gòu)簡單,數(shù)據(jù)使用靈活,只需占用很少的系統(tǒng)資源,就能實現(xiàn)數(shù)據(jù)的存儲和讀??;通過建立科學合理的數(shù)據(jù)模型對存儲數(shù)據(jù)進行有效的處理和預測性分析,在實際應用中具有很好的推廣價值。
目前該技術(shù)已在國內(nèi)某型艦船天線控制系統(tǒng)中得到應用,較好地解決了天線使用數(shù)據(jù)存儲量大、時間長、記錄和查詢復雜的問題,為提高天線設備的可靠性發(fā)揮了重要作用。