在斷路器離線測(cè)試儀的設(shè)計(jì)和使用過(guò)程中,需要積累大量的正常狀態(tài)和故障狀態(tài)下的歷史動(dòng)作數(shù)據(jù),形成樣本庫(kù),作為斷路器進(jìn)行故障診斷的依據(jù)。從數(shù)據(jù)庫(kù)的建立和維護(hù)的角度來(lái)說(shuō),上位機(jī)比儀器本身更占有優(yōu)勢(shì)。同時(shí),由于儀器自身硬件系統(tǒng)資源的局限,相對(duì)復(fù)雜的故障診斷分析也需要利用上位機(jī)軟件來(lái)實(shí)現(xiàn)。因此,這就需要容量大、移動(dòng)靈活的測(cè)試儀和上位機(jī)的中間存儲(chǔ)介質(zhì)。 SD卡(Seecure Digital Memory Cardl)是一種基于Flash的新一代存儲(chǔ)器,具有體積小、容量大、數(shù)據(jù)傳輸快、移動(dòng)靈活、安全性能好等優(yōu)點(diǎn),是許多便攜式電子儀器理想的外部存儲(chǔ)介質(zhì)。 1 ATMEGAl28的SPI接口簡(jiǎn)介及基本數(shù)據(jù)傳輸 SPI全稱為“Series Peripheral Interface”,意為“串行外設(shè)接口”,是一種全雙工、3線同步數(shù)據(jù)傳輸?shù)拇?a href="http://m.qingdxww.cn/keyword/總線" target="_blank" class="relatedlink">總線接口。圖1為ATMEGA128單片機(jī)主機(jī)一從機(jī)通過(guò)SPI進(jìn)行互連的示意圖。 系統(tǒng)包括兩個(gè)移位寄存器和一個(gè)主機(jī)時(shí)鐘發(fā)生器。主機(jī)通過(guò)將需要的從機(jī)的SS引腳拉低,啟動(dòng)一次通訊過(guò)程。主機(jī)和從機(jī)將需要發(fā)送的數(shù)據(jù)放入相應(yīng)的移位寄存器中。主機(jī)在SCK引腳上產(chǎn)生時(shí)鐘脈沖以交換數(shù)據(jù)。主機(jī)的數(shù)據(jù)從主機(jī)的MOSI移出,從從機(jī)的MOSI移入;從機(jī)的數(shù)據(jù)從從機(jī)的MISO移出,從主機(jī)的MISO移入。主機(jī)通過(guò)將從機(jī)的SS引腳拉高實(shí)現(xiàn)與從機(jī)的同步。基本的通過(guò)SPI接口發(fā)送和接收單個(gè)字節(jié)的流程如圖2所示。 值得注意的是,因?yàn)榘l(fā)送和接收是同時(shí)進(jìn)行的,所以發(fā)送和接收數(shù)據(jù)使用同一個(gè)函數(shù)。在發(fā)送數(shù)據(jù)時(shí),并不關(guān)心函數(shù)的返回值;在接收數(shù)據(jù)時(shí),可以發(fā)送并無(wú)實(shí)際意義的字節(jié)(如0xFF)作為函數(shù)的參數(shù)。 2 SPI模式下的ATMEGAl2B單片機(jī)與SD卡的接口電路 SD卡為用戶提供兩種操作模式:SD模式和SPI模式。SPI模式下SD卡的引腳定義如表1所示。在該模式下,SD卡為主機(jī)提供了CS、SCLK、DI、DO四線接口。ATMEGAl28單片機(jī)與SD卡的接口電路如圖3所示。 因?yàn)椴簧婕爸鲝臋C(jī)之間的轉(zhuǎn)換,所以單片機(jī)的SS引腳閑置不用。單片機(jī)的PORTXn引腳作為SD卡的選通信號(hào)。 對(duì)于單片機(jī)來(lái)說(shuō),SPI接口和程序下載接口復(fù)用,節(jié)約了單片機(jī)的硬件開(kāi)銷,提高了單片機(jī)的資源利用率。 3 SPI模式下對(duì)SD卡的操作 SPI模式下SD卡的操作流程如圖4所示。 上電后,SD卡自動(dòng)進(jìn)入SD模式。單片機(jī)此時(shí)使CS信號(hào)為低電平,并向SD卡發(fā)送RESET命令(CMDO),如果SD卡有0x01作為響應(yīng),則表明SD卡進(jìn)入SPI模式下的ldle狀態(tài)。在等待至少74個(gè)時(shí)鐘周期后,向SD卡發(fā)送SEND_OP_COND(CMD1)命令,當(dāng)輪詢到SD卡的響應(yīng)為0x00時(shí),說(shuō)明SD卡已經(jīng)準(zhǔn)備好接收讀寫操作了。 對(duì)SD卡的基本讀寫操作命令有:數(shù)據(jù)塊讀命令READ_BLOCK(CMDl7)、多數(shù)據(jù)塊讀命令READ_MULTIPLE_BLOCK(CMDl8)和數(shù)據(jù)塊寫命令WRITE_BLOCK(CMD24)、多數(shù)據(jù)塊寫命令WRITE_MULTIPLE_BLOCK(CMD25)。 對(duì)SD卡的操作都是由一些命令來(lái)實(shí)現(xiàn)的。所有的命令都是由48個(gè)數(shù)據(jù)位組成的,其結(jié)構(gòu)如表2所示。 在應(yīng)用時(shí),可以連續(xù)發(fā)送6個(gè)字節(jié)來(lái)實(shí)現(xiàn)上述的命令格式。 4 應(yīng)用于斷路器離線測(cè)試儀的SD卡文件系統(tǒng)設(shè)計(jì) 在使用斷路器離線測(cè)試儀的過(guò)程中,希望記錄下斷路器每次動(dòng)作時(shí)的線圈電流以及動(dòng)作電壓。按照?qǐng)D5所示的結(jié)構(gòu)來(lái)組織數(shù)據(jù)的存儲(chǔ)。 首先為各次動(dòng)作數(shù)據(jù)文件創(chuàng)建父文件夾。以動(dòng)作的次數(shù)作為文件夾名,CuRRENT.TXT和V0LTAGE.TXT分別為各文件夾下記錄電流、電壓數(shù)據(jù)的擴(kuò)展名為TXT的子文件。 SD卡數(shù)據(jù)區(qū)的組織結(jié)構(gòu)如表3所示。 在實(shí)際應(yīng)用中,只對(duì)系統(tǒng)區(qū)進(jìn)行配置即可。其中的分區(qū)引導(dǎo)扇區(qū)設(shè)置了扇區(qū)(Sector)和串(Cluster)的大小,以及采用哪類文件分配表(FATl2或FATl6)等內(nèi)容。 文件分配表則包含了與目錄或文件相對(duì)應(yīng)的入口(Entry)。每個(gè)入口由32個(gè)字節(jié)組成,包含文件名、擴(kuò)展名、記錄的時(shí)間和日期、起始位置和文件大小等信息。文件的大小可以根據(jù)對(duì)電流電壓信號(hào)進(jìn)行采樣時(shí)的采樣頻率和采樣時(shí)間計(jì)算得到。 |