文獻標識碼: B
文章編號: 0258-7998(2010)10-0073-03
SD卡[1]作為新型移動存儲設(shè)備,以體積小、速度快、抗震動、通用性強的特點備受青睞。以SD卡作為存儲介質(zhì)來保存企業(yè)的電能耗用參數(shù),可以有效提高數(shù)據(jù)保存的可靠性。采用SD卡結(jié)合ARM處理器LPC2148設(shè)計的多參數(shù)電能耗用記錄儀,將現(xiàn)場采集的各類電能耗用數(shù)據(jù)按文件方式存儲到SD卡中,并且可以方便地與PC等上位機進行數(shù)據(jù)交換,從而滿足現(xiàn)場數(shù)據(jù)采集、室內(nèi)進行數(shù)據(jù)分析的要求,特別適合于長時間、大容量數(shù)據(jù)采集的場合。
1 系統(tǒng)硬件設(shè)計
電能耗用記錄儀硬件電路如圖1所示,ARM核處理器LPC2148是整個系統(tǒng)的核心,其工作頻率高達60 MHz,內(nèi)置512 KB的閃存和16 KB的SRAM,并且?guī)в蠸PI總線、兩路A/D轉(zhuǎn)換器、實時時鐘等多種片內(nèi)功能部件。電網(wǎng)中的電壓電流信號通過較高精度的互感器變換成1 V左右的交流信號,同時使記錄儀與強電隔離,對隔離后的交流信號進行整形、濾波之后送入LPC2148內(nèi)部兩路A/D轉(zhuǎn)換器,完成對電壓、電流、功率因數(shù)等參數(shù)的測量,LPC2148根據(jù)內(nèi)部實時時鐘提供的時間按高峰和低谷時段對耗電量進行分時計度,計算出瞬時電量、整點電量、總需量等參數(shù)。記錄儀采用點陣圖形液晶顯示器作為本地顯示接口,既可以文本模式顯示所采集的數(shù)據(jù),也可以圖形方式顯示采集數(shù)據(jù)曲線。外擴矩陣鍵盤用于設(shè)定數(shù)據(jù)采集間隔、采集時間等,系統(tǒng)根據(jù)用戶設(shè)定啟動數(shù)據(jù)采集,并自動將采集得到的數(shù)據(jù)存儲到SD卡存儲器中。
SD卡可以采用SD和SPI兩種工作方式[2],在SPI方式下只需要4條信號線即可完成數(shù)據(jù)通信,操作簡單方便,而且很容易與LPC2148的SPI總線進行接口,接口引腳說明如表1所列。作為SPI設(shè)備,SD卡的SPI通道由以下4個信號組成:CS(片選)、SCK(時鐘)、DateIn(主機到卡的數(shù)據(jù)信號)和DateOut(卡到主機的數(shù)據(jù)信號)。CS是SD卡的片選信號線,在整個SPI 操作過程中,必須保持低電平有效;SCK時鐘用于同步;DateIn不但傳輸數(shù)據(jù)還發(fā)送命令;DateOut除了傳輸數(shù)據(jù)外,還發(fā)送應(yīng)答信號。
2 SD卡在SPI方式下的讀寫實現(xiàn)
SPI是一種通用同步串行接口總線,字長為8 bit。SPI協(xié)議是以主從方式工作的,通常有一個主設(shè)備和一個(或多個)從設(shè)備。工作時主設(shè)備通過提供同步時鐘和從設(shè)備使能信號來控制數(shù)據(jù)傳輸。主設(shè)備每次開始傳送數(shù)據(jù)時,必須先將片選信號置低以激活SD卡,使其進入工作狀態(tài)。SD卡在SPI方式下工作時,被選中的卡總是對來自于主設(shè)備的命令有所響應(yīng),當(dāng)卡遇到錯誤時,將返回一個出錯響應(yīng)來代替期望的數(shù)據(jù)。
2.1 SD卡初始化
SD卡在讀寫操作之前必須進行初始化,這是確保SD卡能在SPI方式下進行正常數(shù)據(jù)傳輸?shù)那疤?。由于大容量SD卡的出現(xiàn),SD1.x標準已經(jīng)升級為SD2.0,但也因此出現(xiàn)許多電子設(shè)備無法驅(qū)動大容量SD卡的情況,如何識別SD1.x與SD2.0就顯得特別重要。SD卡上電后默認進入SD工作方式,應(yīng)等待至少74個時鐘周期后,將片選信號置低,發(fā)送復(fù)位命令CMD0,等SD卡復(fù)位完成后再向SD卡發(fā)送CMD8命令。如果收到的應(yīng)答信號為01H,則表示為SD2.0卡,否則為SD1.x卡。SD1.x與SD2.0最大不同之處在于命令地址的表示,SD1.x的地址單位是字節(jié),而SD2.0的地址單位是扇區(qū),因此在讀寫操作時應(yīng)根據(jù)不同的卡對地址作相應(yīng)處理。圖2所示為SD卡在SPI方式下的初始化流程。
2.2 FAT32文件系統(tǒng)
SD卡在能夠進行數(shù)據(jù)保存之前必須先按某種文件系統(tǒng)[3]的規(guī)定進行格式化,F(xiàn)AT32文件系統(tǒng)因具有高度兼容性而被廣泛應(yīng)用于移動存儲設(shè)備中。FAT32文件系統(tǒng)結(jié)構(gòu)分為五個部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、FDT區(qū)、DATA區(qū)。
MBR區(qū)又稱為主引導(dǎo)記錄,其后為64 B的磁盤分區(qū)表DPT。
DBR區(qū)即操作系統(tǒng)引導(dǎo)記錄區(qū),占用分區(qū)的第0扇區(qū),共512 B,由跳轉(zhuǎn)指令、結(jié)束標志等幾部分組成。
FAT區(qū)存放文件分配表,文件分配表與數(shù)據(jù)區(qū)簇號一一對應(yīng),反映了所有簇的使用情況。每個表項單元的大小決定了FAT的類型,比如FAT32的表項單元為32 bit。FAT表一般都有一個備份。
FDT區(qū)存放文件目錄表,位于備份FAT表之后。FDT由32 bit線性目錄項構(gòu)成,記錄著根目錄下每個文件(子目錄)的起始單元、屬性等。
DATA區(qū)是真正意義上的數(shù)據(jù)存儲區(qū),位于FDT之后,占據(jù)SD卡上的大部分空間。
當(dāng)SD卡格式化為FAT32分區(qū)時,文件系統(tǒng)就將這個分區(qū)當(dāng)成整塊可分配的區(qū)域進行規(guī)劃,以便于數(shù)據(jù)的存儲。通常將SD卡空間以一定數(shù)目的扇區(qū)為單位進行劃分,這樣的單位稱為簇,簇的大小為2n個扇區(qū)(n為整數(shù)),每個扇區(qū)512 B,每個簇的最大存儲空間為32 KB。
3 系統(tǒng)軟件設(shè)計
系統(tǒng)軟件包括SD卡驅(qū)動、液晶驅(qū)動、A/D轉(zhuǎn)換驅(qū)動、鍵盤驅(qū)動以及各種數(shù)據(jù)處理程序等。限于篇幅,這里僅介紹SD卡的文件系統(tǒng)操作。整個文件系統(tǒng)采用模塊化層次結(jié)構(gòu),包括文件管理與目錄管理模塊、文件分配表管理模塊、SD卡緩存模塊等,這些模塊都建立在底層驅(qū)動程序之上[4],底層驅(qū)動程序則主要完成向SD卡某個扇區(qū)的讀寫。文件系統(tǒng)的功能是在SD卡中進行正確的文件數(shù)據(jù)操作,主要包括:在FDT中申請新目錄項,創(chuàng)建文件;寫入新文件時,在FAT表中查找未使用的簇,并將該簇號寫入文件對應(yīng)目錄數(shù)據(jù)結(jié)構(gòu)中的起始簇號位置,當(dāng)文件長度大于一簇時,還需在FAT表中對應(yīng)的起始簇號位置填入下一可用簇號,直到文件的最后一簇;刪除文件時,除了在FDT中將對應(yīng)的目錄項設(shè)置相應(yīng)標志外,還要修改FAT表,將此文件使用的簇號位置清0,表示此簇當(dāng)前未被使用等。FAT32文件系統(tǒng)存儲文件時最小單元為簇,即使一個很小的文件也會占用一簇,為了節(jié)約存儲空間,創(chuàng)建文件時如果有同名文件存在,則只需要向原來的同名文件追加數(shù)據(jù)。文件系統(tǒng)設(shè)計時為用戶提供了各種API函數(shù),如創(chuàng)建文件函數(shù)Creat_File(),打開文件函數(shù)Open_FIle(),寫入文件函數(shù)Write_File(),刪除文件函數(shù)Delete_File()等,調(diào)用這些API函數(shù)即可完成用戶所需要的功能。圖3所示為在SD卡中創(chuàng)建文件并向其中寫入文件數(shù)據(jù)的流程圖。
采用SD卡作為移動存儲器的多參數(shù)電能耗用記錄儀,可以對現(xiàn)場耗電數(shù)據(jù)進行實時采集和高速保存。利用SD卡的良好移動性,可方便地實現(xiàn)與計算機的數(shù)據(jù)交換,達到現(xiàn)場數(shù)據(jù)采集、室內(nèi)數(shù)據(jù)分析的目的。也可以通過記錄儀鍵盤命令隨時讀取SD卡中的數(shù)據(jù),從液晶顯示屏幕上以文本或曲線方式進行實時顯示。隨著SD卡移動存儲性能的不斷提高,容量越來越大,其價格越來越便宜,基于SD卡移動存儲器的多參數(shù)電能耗用記錄儀將會得到廣泛的應(yīng)用。
參考文獻
[1] SanDisk Corporation SD memory card specifications part 1, Physical Layer Specification Version 1.0, 2002.
[2] 周煜, 付宇卓. 基于SPI協(xié)議的MMC卡讀寫機制的實現(xiàn)[J]. 計算機仿真, 2005,22(1):97-99.
[3] 鄧劍, 楊曉非, 廖俊卿. FAT文件系統(tǒng)原理及實現(xiàn)[J]. 計算機與數(shù)字工程, 2005,33(9):105-108.
[4] 徐愛鈞. IAR EWARM V5嵌入式系統(tǒng)應(yīng)用編程與開發(fā)[M]. 北京:北京航空航天大學(xué)出版社, 2009.