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