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