《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于SD卡的電能耗用記錄儀設(shè)計與實現(xiàn)
基于SD卡的電能耗用記錄儀設(shè)計與實現(xiàn)
來源:電子技術(shù)應(yīng)用2010年第10期
徐愛鈞
長江大學(xué) 電信學(xué)院, 湖北 荊州 434023
摘要: 利用ARM處理器LPC2148與SD卡接口,設(shè)計了一種新穎的多參數(shù)電能耗用記錄儀,用于大容量耗電數(shù)據(jù)采集。該記錄儀采用FAT32文件系統(tǒng),可將現(xiàn)場各種電能耗用數(shù)據(jù)及時保存到SD卡之中。利用SD卡的良好移動性,可方便地實現(xiàn)與計算機的數(shù)據(jù)交換,達到現(xiàn)場數(shù)據(jù)采集、室內(nèi)數(shù)據(jù)分析的目的。同時SD卡內(nèi)保存的數(shù)據(jù)也可以由記錄儀隨時讀取,在液晶顯示器上以文本或曲線方式進行回放。
中圖分類號: TP274
文獻標識碼: B
文章編號: 0258-7998(2010)10-0073-03
Design of power consumption recorder based on SD memory card
XU Ai Jun
Dept. of Electronic Information, Yangtze University, Jingzhou 434023, China
Abstract: A new type multi-parameter power consumption recorder was designed based on SD memory card interface with ARM processor LPC2148, it can be used for mass power consumption data collection. The recorder support FAT32 file system, mass local acquired data can be stored in SD memory card as soon as possible. Since data exchanging between SD memory card and computer is very simple, local data acquisition and office data analysis will be easily realized. On the other hand , the SD card data can also be read back for display on record LCD in text or curve format.
Key words : ARM processor; SD memory card; file system; power consumption

    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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。