吉 濤, 蔡 航
(1.陜西科技大學(xué)機(jī)電工程學(xué)院, 陜西 西安 710021; 2.陜西省木材總公司, 陜西 西安 710002)
存儲(chǔ)測(cè)試技術(shù)是近年來迅速發(fā)展起來的一種測(cè)試方法,其特點(diǎn)是在對(duì)被測(cè)對(duì)象無影響或影響在允許范圍的條件下,在被測(cè)體或測(cè)試現(xiàn)場放置微型數(shù)據(jù)采集與存儲(chǔ)測(cè)試儀,進(jìn)行現(xiàn)場實(shí)時(shí)信息的快速采集與記憶,事后由計(jì)算機(jī)獲取數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理分析、再現(xiàn)測(cè)試現(xiàn)場信息等的一種動(dòng)態(tài)測(cè)試技術(shù).在自動(dòng)監(jiān)測(cè)領(lǐng)域,有兩方面的問題需要關(guān)注:一方面存儲(chǔ)測(cè)試裝置往往要求安裝于被測(cè)對(duì)象環(huán)境中,甚至安裝于對(duì)象內(nèi)部,并能長時(shí)間離線工作,這就要求系統(tǒng)設(shè)計(jì)緊湊,并且功耗低;另一方面,隨著應(yīng)用中對(duì)測(cè)試參數(shù)、測(cè)試精度和測(cè)試時(shí)間要求的增加,數(shù)據(jù)的記錄信息量相應(yīng)倍增,而存儲(chǔ)內(nèi)容又需要掉電保持,并能在隨后方便的被上位計(jì)算機(jī)回收,因此大容量數(shù)據(jù)的安全存儲(chǔ)與回收成為存儲(chǔ)測(cè)試系統(tǒng)設(shè)計(jì)的難點(diǎn)和重點(diǎn)問題,而具有大容量存儲(chǔ)器件的嵌入式裝置是存儲(chǔ)測(cè)試系統(tǒng)發(fā)展的主要形式.
在數(shù)據(jù)存儲(chǔ)方面,各類51內(nèi)核的單片機(jī)系統(tǒng),一般片上最多僅提供8 k的數(shù)據(jù)存儲(chǔ)器RAM,片外則具有最大64 kB的尋址能力.在一般情況下,這樣是可以滿足系統(tǒng)設(shè)計(jì)需求的,但是在某些場合需要連續(xù)采集、處理和存儲(chǔ)的數(shù)據(jù)量相當(dāng)大,同時(shí)存儲(chǔ)器不允許刷新,當(dāng)存儲(chǔ)信息超越64 kB的存儲(chǔ)容量時(shí)就需要解決所謂大容量存儲(chǔ)的問題.在單片機(jī)中,通常64 kB 以上的RAM并行擴(kuò)展方法是利用其他空閑的并口線來增加地址線,以獲得更大的地址訪問空間.
在數(shù)據(jù)安全存儲(chǔ)方面,RAM易揮發(fā)性,屬于Volatile Memory,不適合在存儲(chǔ)測(cè)試系統(tǒng)中作為安全穩(wěn)定的存儲(chǔ)介質(zhì),因此擴(kuò)展方式主要是采用大容量可擦除型的ROM.在嵌入式數(shù)據(jù)采集器中,F(xiàn)lash ROM存儲(chǔ)器具有容量大、體積小、功耗小、成本低、掉電后數(shù)據(jù)不丟失、讀寫訪問速度高、抗震性好等一系列的優(yōu)點(diǎn),已經(jīng)成為廣泛應(yīng)用的存儲(chǔ)器件.目前Flash ROM有多種技術(shù)架構(gòu),以NOR技術(shù)和NAND技術(shù)為主流技術(shù).NOR FLASH 是隨機(jī)存取的設(shè)備,與單片機(jī)接口簡單、性能可靠、讀取速度快于NAND型,帶有SRAM接口,可以很容易地存取其內(nèi)容的每一字節(jié),但缺點(diǎn)是單片存儲(chǔ)容量小,適合16 MB 以下的存儲(chǔ)容量使用.NAND FLASH存儲(chǔ)容量大,是線性存取的設(shè)備,基本存儲(chǔ)單元是頁(Page),每一頁的有效容量是512字節(jié)的倍數(shù),擦除和寫入速度快于NOR型,適合大容量數(shù)據(jù)存儲(chǔ)應(yīng)用,但缺點(diǎn)是與單片機(jī)的接口復(fù)雜,尤其是器件中隨機(jī)分布有存儲(chǔ)器壞塊,并且在數(shù)據(jù)存儲(chǔ)時(shí)可能因位反轉(zhuǎn)造成存儲(chǔ)數(shù)據(jù)錯(cuò)誤,這給芯片直接應(yīng)用造成了較大困難.
嵌入式系統(tǒng)設(shè)計(jì)中,大容量存儲(chǔ)的另外一個(gè)選擇就是電子硬盤類Flash,即各類常見的智能存儲(chǔ)卡,包括CF卡、SD卡、MMC卡等,此類卡具有統(tǒng)一規(guī)格的外部接口,可以通過并行口或SPI串行總線與單片機(jī)連接,同時(shí)內(nèi)部通過糾錯(cuò)算法保證數(shù)據(jù)存儲(chǔ)的高可靠性,此外還有低價(jià)格、大容量、低功耗、移動(dòng)存儲(chǔ)、抗沖擊振動(dòng)等諸多優(yōu)點(diǎn).
圖1 系統(tǒng)組成框圖
本文提出以低成本嵌入式51內(nèi)核單片機(jī)為控制器,配以SD(Secure Digital Memory Card)卡作為安全存儲(chǔ)介質(zhì)的方案,為用戶提供參數(shù)可調(diào)整的低功耗、大容量數(shù)據(jù)存儲(chǔ)系統(tǒng),并利用USB設(shè)備(如SD卡讀卡器)方便實(shí)現(xiàn)參數(shù)設(shè)定和數(shù)據(jù)回收.MCU完成數(shù)據(jù)采集、系統(tǒng)控制等操作;若干傳感檢測(cè)電路通過各自的采樣通道,將測(cè)試數(shù)據(jù)傳送到MCU;實(shí)時(shí)鐘電路為存儲(chǔ)測(cè)試系統(tǒng)提供時(shí)間基準(zhǔn);SD卡數(shù)據(jù)存儲(chǔ)電路以文件管理控制芯片CH376為核心,實(shí)現(xiàn)對(duì)SD卡的FAT格式讀寫訪問,目前SD卡的容量已達(dá)GB級(jí)別,這樣的設(shè)計(jì)可以靈活的實(shí)現(xiàn)存儲(chǔ)測(cè)試系統(tǒng)的大容量數(shù)據(jù)存儲(chǔ)問題.因?yàn)镾D卡的讀寫速度相對(duì)于某些實(shí)時(shí)數(shù)據(jù)采集任務(wù)而言是比較慢的,應(yīng)用中無法直接進(jìn)行數(shù)據(jù)存儲(chǔ),所以需要為讀寫SD卡提供一定數(shù)量的高速緩存,這里設(shè)計(jì)外擴(kuò)一片62256RAM,將采集的數(shù)據(jù)先保存在RAM中,待數(shù)據(jù)量達(dá)到一定規(guī)模(如512 B或其整數(shù)倍數(shù),最大65 535 B),或結(jié)束了一段集中高速采樣后,利用系統(tǒng)采樣空閑時(shí)段,再將數(shù)據(jù)塊一次性寫入SD卡中.系統(tǒng)組成框圖如圖1所示.
圖2 SD卡硬件結(jié)構(gòu)
一張SD卡包含兩個(gè)基本部分: NAND型Flash存儲(chǔ)模塊和內(nèi)置控制器.Flash存儲(chǔ)模塊用來以扇區(qū)(512 B)為單位存儲(chǔ)數(shù)字信息,控制器用來實(shí)現(xiàn)與主機(jī)的接口及控制數(shù)據(jù)在存儲(chǔ)模塊中的傳輸.SD卡內(nèi)部結(jié)構(gòu)及引腳如圖2所示.
SD卡支持兩種總線訪問方式:SD方式與SPI方式,其中SD方式采用6線制,使用CLK、CMD、DAT0~DAT3進(jìn)行數(shù)據(jù)通信,有較快的存取速度,一般通過帶USB接口的 SD卡讀卡器與SD卡通信時(shí)多采用此模式;而SPI方式采用4線制,使用CS、CLK、DataIn(DI)、DataOut(DO)進(jìn)行數(shù)據(jù)通信,由于許多51內(nèi)核單片機(jī)已經(jīng)提供了SPI接口,即便沒有SPI接口,也可以很容易地通過軟件模擬實(shí)現(xiàn)SPI協(xié)議通訊,所以采用單片機(jī)對(duì)SD卡進(jìn)行讀寫時(shí)一般都采用SPI模式.
為了使電路更具通用性,這里簡化了MCU的選取,以通用的AT89S52為對(duì)象介紹系統(tǒng)設(shè)計(jì).
存儲(chǔ)測(cè)試系統(tǒng)的記錄數(shù)據(jù)最終是要由計(jì)算機(jī)系統(tǒng)回收的,所以要求SD卡上存儲(chǔ)的數(shù)據(jù)信息應(yīng)該是Windows系統(tǒng)能夠識(shí)別的FAT格式,利用單片機(jī)直接設(shè)計(jì)以SPI總線實(shí)現(xiàn)對(duì)SD卡的FAT格式數(shù)據(jù)存取,其程序比較復(fù)雜,與存儲(chǔ)測(cè)試系統(tǒng)的系統(tǒng)程序相加將會(huì)占用過多的代碼存儲(chǔ)資源,為此本設(shè)計(jì)使用CH376實(shí)現(xiàn)對(duì)SD卡的SPI方式訪問控制.CH376是文件管理控制芯片,專用于單片機(jī)系統(tǒng)讀寫 U 盤或者 SD 卡中的文件,它內(nèi)置了SD卡的通訊接口固件及FAT文件系統(tǒng)的管理固件,以字節(jié)為單位對(duì)文件讀寫,支持8 位并口、SPI 接口或者異步串口等3種通訊接口,支持低功耗模式,能為存儲(chǔ)測(cè)試系統(tǒng)提供穩(wěn)定的存儲(chǔ)保證.在本通用設(shè)計(jì)中,CH376選用并口方式連接MCU,同時(shí)并口擴(kuò)展32 kB的62256RAM,這樣既可以為高速數(shù)據(jù)采集提供數(shù)據(jù)緩存,又可以減少寫入率,避免因連續(xù)不斷進(jìn)行SD卡寫入操作,造成頻繁刷新FAT表而大大降低SD卡FAT區(qū)的使用壽命.大容量數(shù)據(jù)存儲(chǔ)部分的硬件電路如圖3所示,AT89S52的P1.7作為報(bào)警輸出,其余P1.1~1.6留給輸入通道.
表1 SD卡與SPI模式下引腳功能定義
電路設(shè)計(jì)中的另一個(gè)重點(diǎn)問題是電源匹配,SD卡是3.3 V供電,而通用單片機(jī)則為5 V供電,在設(shè)計(jì)中需要進(jìn)行CH376輸出SPI總線電平轉(zhuǎn)換,一種簡易的方法是如圖4中所示,在所有與SD卡SPI接口連接的信號(hào)線中分別串聯(lián)1 k左右的分壓電阻.圖中J1為11腳SD卡座,提供系統(tǒng)與SD卡的連接,卡座管腳定義與SD卡在SPI模式下的對(duì)應(yīng)關(guān)系見表1.除了SPI接口及電源引腳外,WP引腳接至AT89S52的P3.1,反映SD卡當(dāng)前是否設(shè)置寫保護(hù),該引腳為高電平為禁止寫入,否則為低電平;INSERT引腳接至AT89S52的P3.0,反映SD卡是否插入卡座,完全插入時(shí)該引腳為低電平,否則為高電平,其他引腳保留.圖4是SD卡卡座電平轉(zhuǎn)換電路.
圖3 大容量數(shù)據(jù)存儲(chǔ)部分硬件電路圖
在存儲(chǔ)測(cè)試系統(tǒng)中,可以將采集的數(shù)據(jù)以二進(jìn)制格式存儲(chǔ)于同一文件中,待數(shù)據(jù)文件回收后,再由上位計(jì)算機(jī)提取并分析.根據(jù)文件可能的大小,應(yīng)該事先對(duì)SD卡格式化為FAT16或FAT32,并由上位機(jī)軟件對(duì)SD卡完成兩個(gè)操作,首先創(chuàng)建一個(gè)數(shù)據(jù)記錄空文件DATA.txt,作為應(yīng)用中數(shù)據(jù)追加記錄的對(duì)象文件;其次應(yīng)產(chǎn)生一個(gè)初始化文件,向存儲(chǔ)測(cè)試裝置提供工作的初始化參數(shù),如校對(duì)實(shí)時(shí)鐘時(shí)間、數(shù)據(jù)采樣精度和通道數(shù)、采樣頻率、休眠及開啟閾值、系統(tǒng)應(yīng)用信息等,這樣待SD卡插入卡座并激活存儲(chǔ)測(cè)試裝置時(shí),系統(tǒng)就可以按照給定的工作方式開始記錄了.
圖4 SD卡卡座電平轉(zhuǎn)換電路
對(duì)本存儲(chǔ)測(cè)試系統(tǒng)分析可以發(fā)現(xiàn),在眾多的SD卡磁盤操作中,主要進(jìn)行的是大量數(shù)據(jù)的記錄存儲(chǔ),即對(duì)磁盤文件的追加寫操作,其次是對(duì)初始化文件的讀操作.由于 CH376 不僅是一個(gè)通用的 USB-HOST 硬件接口芯片,還內(nèi)置了相關(guān)的 USB底層傳輸固件程序、Bulk-Only 協(xié)議傳輸固件程序、FAT 文件系統(tǒng)管理固件程序,所以實(shí)際的單片機(jī)程序只需要發(fā)出文件管理和文件讀寫命令就可以方便地實(shí)現(xiàn)大容量數(shù)據(jù)存儲(chǔ)的要求了.單片機(jī)控制CH376實(shí)現(xiàn)對(duì)SD卡以字節(jié)模式的寫入操作,主要過程包括SD卡初始化、向已有文件追加數(shù)據(jù)、保存文件并關(guān)閉文件.讀取文件的操作與之類似,主要包括SD卡初始化、按順序讀文件、關(guān)閉文件.CH376為此提供了39條指令以實(shí)現(xiàn)不同的功能,每條命令有唯一的指令代碼,在單片機(jī)程序設(shè)計(jì)中,控制CH376的A0引腳為高電平(本例中即對(duì)地址0FFFFH讀寫),就可以進(jìn)行寫命令或讀狀態(tài)操作.圖5給出了向SD卡存儲(chǔ)一組緩存中數(shù)據(jù)的子程序框圖.
圖5 緩存數(shù)據(jù)寫入SD卡程序流程圖
本文設(shè)計(jì)的大容量SD卡數(shù)據(jù)存儲(chǔ)方式很好地解決了存儲(chǔ)測(cè)試系統(tǒng)在采集信息量大、需要長期離線工作時(shí)數(shù)據(jù)的安全保存問題,又具有FAT存儲(chǔ)格式及易于實(shí)現(xiàn)USB接口,使得與上位計(jì)算機(jī)交換存儲(chǔ)數(shù)據(jù)變得很方便,從而簡化了采集系統(tǒng)的設(shè)計(jì),提高了系統(tǒng)的可靠性和可操作性.本設(shè)計(jì)具有很好的移植性,根據(jù)實(shí)際測(cè)試系統(tǒng)的需求,可以適用各類51內(nèi)核單片機(jī)及其他嵌入式控制系統(tǒng),例如可以選用片內(nèi)集成8KRAM的P89C668等單片機(jī),省略RAM擴(kuò)展及并行電路,而使用SPI串行總線方式與CH376通訊可節(jié)省單片機(jī)并口資源,提高系統(tǒng)可靠性;也可以選用AT89LS52等3.3 V低電壓供電單片機(jī),并啟用CH376低功耗模式及以程序控制SD卡斷續(xù)供電等手段,實(shí)現(xiàn)具有長久續(xù)航能力的多參數(shù)存儲(chǔ)測(cè)試系統(tǒng)設(shè)計(jì).
參考文獻(xiàn)
[1] 范寒柏. 大容量SD卡在海洋數(shù)據(jù)存儲(chǔ)中的應(yīng)用[J]. 計(jì)算機(jī)與嵌入式系統(tǒng)應(yīng)用, 2010,(4):30-32.
[2] 李長有. 基于C8051F020的SD卡主控制器設(shè)計(jì)[J]. 微計(jì)算機(jī)信息, 2007,9-2:120-122.
[3] CH376EVT[Z].南京沁恒電子有限公司, 2009.
[4] CH376DS1[Z]. 南京沁恒電子有限公司, 2010.
[5] 孫 云. 單片機(jī)實(shí)現(xiàn)大容量數(shù)據(jù)存貯[J].遼東學(xué)院學(xué)報(bào), 2007,14(2):92-93.
[6] 黃建斌. I2C總線及其在MCS-51單片機(jī)系統(tǒng)中的應(yīng)用[J]. 陜西科技大學(xué)學(xué)報(bào), 2008,(1):83-87.
[7] SD Memory Card Specifications[Z].SD Group(MEI,SanDisk,Toshiba), 2000.