基于MSp430單片機(jī)的微功耗數(shù)據(jù)采集系統(tǒng)
0引言
以電池作為電源的水下數(shù)據(jù)采集系統(tǒng),若要長(zhǎng)時(shí)間工作必然要為其配備大量的電池作為電源,如果能降低系統(tǒng)的功耗,那么將減少電池的數(shù)量,不僅能降低系統(tǒng)的成本而且能大大縮小系統(tǒng)的體積和重量,也更有利于水下數(shù)據(jù)采集系統(tǒng)的布放。本文介紹了一種基于微功耗單片機(jī)MSP430F1611和CF卡的水下微功耗數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),總功率僅150mW。相比傳統(tǒng)的以DSP為處理器、IDE硬盤(pán)為存儲(chǔ)介質(zhì)的數(shù)據(jù)采集系統(tǒng),功耗大大降低。
1 系統(tǒng)總體構(gòu)成
本系統(tǒng)是應(yīng)用在矢量水聽(tīng)器噪聲測(cè)量試驗(yàn)中,要求實(shí)時(shí)采集并存儲(chǔ)矢量水聽(tīng)器4通道信號(hào),每通道采樣率為10kHz,在水下不間斷工作7小時(shí)。
鑒于本系統(tǒng)采樣率不高,7個(gè)小時(shí)總的數(shù)據(jù)量不超過(guò)2個(gè)G,所以沒(méi)必要采用功耗和體積都比較大的IDE硬盤(pán),采用容量為2G的CF卡完全可以滿足系統(tǒng)要求。CF卡的全稱為Compact Flash,兼容3.3V和5V工作電壓,工作時(shí)沒(méi)有運(yùn)動(dòng)部件,其體積小、耗電量小、容量大,具有很高的性價(jià)比。目前,CF卡的容量可高達(dá)12GB,CF卡由控制芯片和閃存模塊組成,閃存用于存儲(chǔ)信息,控制芯片用于實(shí)現(xiàn)與主機(jī)的連接及數(shù)據(jù)的傳輸。CF卡可工作在TRUEIDE模式下,并且與普通IDE硬盤(pán)接口完全兼容,所以很容易進(jìn)行開(kāi)發(fā)使用。
系統(tǒng)對(duì)采集的數(shù)據(jù)只存儲(chǔ)而不做信號(hào)處理,在處理器的選取上也就不必一味追求高速度,本系統(tǒng)采用TI公司的超低功耗單片機(jī)MSP430F1611作為系統(tǒng)的處理器,負(fù)責(zé)AD的采集,并把采集的數(shù)據(jù)寫(xiě)入CF卡。這是一款高性價(jià)比的單片機(jī),具有以下特點(diǎn):豐富的片內(nèi)外設(shè);超低功耗,在電壓3.3V主頻1MHz時(shí)工作電流僅600μA;強(qiáng)大的處理能力,在8MHz晶體驅(qū)動(dòng)下,指令周期為125ns,完全滿足系統(tǒng)的處理需求。系統(tǒng)總的結(jié)構(gòu)圖如圖1所示。
2 硬件設(shè)計(jì)
2.1 CF卡接口設(shè)計(jì)
CF支持三種基本工作模式:PC Card Memory模式、PCcard I/O模式以及True IDE模式。在本文的設(shè)計(jì)中,使用True IDE模式,它可以在CF卡上電時(shí)自動(dòng)進(jìn)入。在插入CF卡之前,保證CF卡插槽的/OE管腳為低電平,即可以讓CF卡進(jìn)入True IDE模式。單片機(jī)與CF卡的接口電圖如圖2所示。
MSP430F1611擁有六個(gè)可獨(dú)立配置的雙向8位I/O端口(P1~P6)。本文的設(shè)計(jì)中將P1端口的P1.0、P1.1引腳分別與CF卡的讀寫(xiě)信號(hào)線IORD、IOWR相連;復(fù)位信號(hào)RESET由P1.2給出;A0~A2為數(shù)據(jù)、命令或狀態(tài)寄存器地址線,由單片機(jī)P1.3~P1.5管腳控制。CF卡總共有16根數(shù)據(jù)線D[15:0],但可以通過(guò)軟件設(shè)定其工作在16 bit模式還是8 bit模式,由于MSP430F161l單片機(jī)數(shù)據(jù)線寬為8位,硬件中設(shè)計(jì)其工作在8 bit模式,使用D0~D7為數(shù)據(jù)線,與單片機(jī)的P2端口相連,D8~D15懸空。
2.2 AD采集模塊設(shè)計(jì)
為了降低系統(tǒng)功耗,在我們系統(tǒng)指標(biāo)要求的前提下,ADC器件的選取盡量選用低功耗ADC器件。設(shè)計(jì)中我們采用了美國(guó)ADI公司的AD7655,這款A(yù)DC采樣率在10kSPS時(shí)功耗僅2.6mW,有四個(gè)模擬輸入通道,精度為16bit,最高采樣率高達(dá)1MSPS。數(shù)據(jù)輸出接口支持串行和并行兩種方式,可以方便地與單片機(jī)、DSP等處理器實(shí)現(xiàn)無(wú)縫連接。具體的AD與單片機(jī)的硬件接口圖如圖3所示。
AD7655每次對(duì)兩路信號(hào)進(jìn)行采樣,當(dāng)A0為低電平時(shí)對(duì)INAl和INBl兩個(gè)通道的信號(hào)采樣,當(dāng)為高電平時(shí)對(duì)INA2和INB2兩個(gè)通道的信號(hào)采樣。CNVST為AD7655的轉(zhuǎn)換開(kāi)始信號(hào),這個(gè)信號(hào)由主控單片機(jī)按照設(shè)計(jì)的采樣率定周期地給出。在轉(zhuǎn)換期問(wèn)BUSY信號(hào)一直為高電平,轉(zhuǎn)換結(jié)束后BUSY信號(hào)變?yōu)榈碗娖?,利用這個(gè)下降沿可以作為讀取AD采樣數(shù)據(jù)的中斷信號(hào),單片機(jī)在收到這個(gè)中斷信號(hào)后給出片選CS、讀信號(hào)READ和通道選擇信號(hào)A/B讀取AD數(shù)據(jù)。
3 軟件設(shè)計(jì)
CF卡的讀寫(xiě)是以扇區(qū)(sector)為單位的,每次讀寫(xiě)一個(gè)或連續(xù)的多個(gè)扇區(qū),每個(gè)扇區(qū)大小為512字節(jié)。對(duì)CF卡的讀寫(xiě)訪問(wèn)操作都是通過(guò)訪問(wèn)其內(nèi)部寄存器來(lái)實(shí)現(xiàn)的,對(duì)不同的寄存器進(jìn)行訪問(wèn)是靠上節(jié)所提到的A0~A2、CSO、CSl這五根數(shù)據(jù)線來(lái)譯碼的,在本文的設(shè)計(jì)中,CF卡配置成TRUE IDE工作模式,具體的寄存器映射如表1所示。
寄存器0用于CF卡的數(shù)據(jù)讀寫(xiě)。CF為了節(jié)省I/O資源,有些I/0端口是復(fù)用的,寄存器1在讀操作時(shí)為錯(cuò)誤寄存器,寫(xiě)操作時(shí)為特征寄存器。寄存器2的作用是設(shè)定要讀寫(xiě)扇區(qū)的數(shù)目。寄存器3~6是用來(lái)尋址要讀寫(xiě)的具體扇區(qū)位置,一般的IDE硬盤(pán)有CHS和LBA兩種尋址模式,CF卡工作在TRUE IDE模式下也有這兩種尋址模式,CHS(Cylinder/Head/Sector)是扇區(qū)對(duì)應(yīng)的具體柱面、磁頭、和扇區(qū)的地址;邏輯塊尋址方式LBA(Logical Block Addressing)在邏輯上是連續(xù)的,比較方便,所以軟件實(shí)現(xiàn)上采用這種方式對(duì)CF卡的扇區(qū)進(jìn)行訪問(wèn)。寄存器7在讀操作時(shí)是狀態(tài)寄存器,主控器可以得到CF卡的有關(guān)狀態(tài)信息;寫(xiě)操作時(shí)是命令寄存器,通過(guò)設(shè)置命令,主控制器操作CF卡完成特定的功能。
讀寫(xiě)扇區(qū)時(shí),首先需要設(shè)置起始扇區(qū)的LBA地址和扇區(qū)數(shù)目,并設(shè)置命令寄存器,讀取數(shù)據(jù)設(shè)置命令“20H”,寫(xiě)入數(shù)據(jù)設(shè)置命令“30H”。然后讀取狀態(tài)寄存器,判斷狀態(tài)寄存器是否為“58H”。若為是,則開(kāi)始讀寫(xiě)操作;若為否則繼續(xù)讀取狀態(tài)寄存器。接下來(lái)讀狀態(tài)寄存器是否為“50H”,判斷CF卡操作是否完成。若為否,則繼續(xù)讀取判斷;若為是,則結(jié)束讀寫(xiě)過(guò)程。如果在判斷狀態(tài)寄存器中發(fā)生了超時(shí)或出現(xiàn)錯(cuò)誤,則設(shè)置超時(shí)或錯(cuò)誤標(biāo)志,并跳出讀寫(xiě)過(guò)程。圖4為CF卡讀寫(xiě)一個(gè)扇區(qū)的流程圖。
由于對(duì)CF卡的操作是以扇區(qū)位單位,在單片機(jī)內(nèi)部RAM開(kāi)辟了兩個(gè)大小為1 kByte的緩沖區(qū),每個(gè)緩沖區(qū)的數(shù)據(jù)正好可以寫(xiě)滿CF卡的兩個(gè)扇區(qū),AD采集的數(shù)據(jù)先存儲(chǔ)在緩沖區(qū),當(dāng)存滿一個(gè)緩沖區(qū)后,設(shè)置CF的LBA地址、扇區(qū)數(shù)目及寫(xiě)命令,把緩沖區(qū)內(nèi)的數(shù)據(jù)寫(xiě)入CF卡,同時(shí)AD采集的數(shù)據(jù)存儲(chǔ)在另外一個(gè)緩沖區(qū)。
CF卡如果要通過(guò)讀卡器在計(jì)算機(jī)上直接讀取數(shù)據(jù),CF卡中的文件系統(tǒng)必須與計(jì)算機(jī)的文件系統(tǒng)一致,現(xiàn)在計(jì)算機(jī)的文件系統(tǒng)有FATl6、FAT32及NTFS等。由于微功耗單片機(jī)處理能力有限,在采樣周期內(nèi)完成數(shù)據(jù)采集及數(shù)據(jù)存儲(chǔ)的工作后,所剩時(shí)間已經(jīng)不多,如果再加上處理文件系統(tǒng)的程序,勢(shì)必影響系統(tǒng)數(shù)據(jù)采集的實(shí)時(shí)性。在本設(shè)計(jì)的程序里并沒(méi)有將數(shù)據(jù)寫(xiě)成文件系統(tǒng),而是從數(shù)據(jù)扇區(qū)對(duì)應(yīng)的LBA地址開(kāi)始從小到大依次將數(shù)據(jù)寫(xiě)入扇區(qū),直到寫(xiě)滿整個(gè)CF卡。在讀取數(shù)據(jù)時(shí),利用磁盤(pán)操作函數(shù)編寫(xiě)一個(gè)小的VC程序,將CF卡中數(shù)據(jù)依次讀出并存為文件存儲(chǔ)在計(jì)算機(jī)的硬盤(pán)里,讀取的扇區(qū)及文件的大小也可以方便地設(shè)置,非常靈活。這樣也就在處理器能力有限的情況下實(shí)現(xiàn)了系統(tǒng)的實(shí)時(shí)數(shù)據(jù)采集和存儲(chǔ)。
4 結(jié)論
采取這種設(shè)計(jì)方法使整個(gè)采集系統(tǒng)的功耗大大減小,經(jīng)測(cè)量,整個(gè)系統(tǒng)功耗為150mW。采用高能鋰離子電池作為系統(tǒng)電源,使整個(gè)系統(tǒng)輕松裝入一個(gè)內(nèi)徑為15cm,高15cm的圓柱形密封罐內(nèi),體積的減小也更加有利于系統(tǒng)在水下的布放。該系統(tǒng)經(jīng)過(guò)在吉林松花湖試驗(yàn),能夠穩(wěn)定可靠地工作,實(shí)時(shí)采集并存儲(chǔ)水下環(huán)境的噪聲和過(guò)往船只的噪聲數(shù)據(jù)。
評(píng)論