引言
存儲測試技術[1]方法是記錄在特殊環(huán)境下運動物體參數(shù)的行之有效的方法,。它是先將測試數(shù)據(jù)存入存儲器,,待裝置回收后通過特定接口與上位機進行通信,還原數(shù)據(jù)信息,。在許多消費類電子產(chǎn)品中,,對數(shù)據(jù)采集存儲系統(tǒng)的實時性和功耗提出了更高的要求,不僅要同時滿足低功耗和微型化設計,還要實時地反映現(xiàn)場采集數(shù)據(jù)的變化,。這樣,,就必須對系統(tǒng)的采樣速率、功耗等提出更高的要求,。隨著半導體技術的發(fā)展,,各種技術的進步使得高速度、低功耗的數(shù)據(jù)采集系統(tǒng)能夠?qū)崿F(xiàn),。
本文主要使用NXP公司16/32位微控制器LPC2148[2-3]作為核心控制元件,,通過與nRF24L01[4]結合使用,實現(xiàn)數(shù)據(jù)的采集,、存儲以及發(fā)送,。
1 系統(tǒng)原理
整個測試系統(tǒng)由模擬適配電路、外部晶振,、微控制器,、存儲器模塊、電源管理模塊,、無線收發(fā)模塊以及接口電路組成,,如圖1所示。
圖1 系統(tǒng)原理框圖
1.1 電源模塊
對電源模塊的設計是實現(xiàn)整個系統(tǒng)省電的核心部分,。即電源只需要在電路各個模塊需要的時候給其供電,,在不需要的時候斷電來減小系統(tǒng)的無效耗電量??梢允褂脝坞姵仉娫垂╇妼崿F(xiàn)多分枝電源網(wǎng)絡管理,,使得系統(tǒng)各個模塊的電源相對獨立供電。但此時要注意帶電部分和不帶電部分的兼容問題,。
1.2 模擬適配電路
由于由傳感器測量的信號十分微弱,,需要經(jīng)過適當?shù)姆糯鬄V波等修正后才能夠進行一系列處理。
1.3 微控制器
本測試系統(tǒng)選用NXP公司16/32位微控制器LPC2148作為核心控制元件,。它內(nèi)部自帶10位A/D轉換器,,無需外加A/D轉換器,即可以減小體積,,又可以節(jié)省成本,。同時它還具有掉電模式和空閑模式兩種省電模式,合理設計可以減小系統(tǒng)功耗,。
1.4 接口電路以及無線收發(fā)部分
本測試系統(tǒng)有兩種方法與上位機進行通信,,一種是通過無線收發(fā)模塊nRF24L01來實現(xiàn),另一種是通過特定的接口電路來實現(xiàn),,這樣即使無線傳輸部分出現(xiàn)錯誤還可以保證事后回收數(shù)據(jù),。
2 系統(tǒng)主要部分的硬件與軟件介紹
2.1 內(nèi)部A/D轉換器的開發(fā)
LPC2148內(nèi)部有兩個10位逐次逼近式模數(shù)轉換器,8個引腳復用為輸入腳(ADC0和ADC1),它具有掉電模式,,測量范圍是0 V~VREF,10位的轉換時間≥2.44 μs,,具有一個或者多個輸入的突發(fā)轉換模式,可選擇由輸入跳變或定時器匹配信號觸發(fā)轉換,。它的基本時鐘由VPB(VLSI外圍總線)時鐘提供,,每個轉換器包含一個可編程分頻器,可將時鐘調(diào)整至逐步逼近轉換所需的4.5 MHz(最大),,完全滿足精度要求的轉換需要11個這樣的時鐘,。本文用LPC2148的I/O端口來實現(xiàn),使用ADC模塊的通道3 進行電壓的測量,,定義I/O端口P0.30為AD0.3,,通過定時器中斷的到來而對電壓進行采樣,對ADC寄存器的設置如下:
AD0CR=(1<<3)| //SEL=8,選擇通道3
((Fpclk/10000001)<<8)| //CLKDIV= Fpclk/10000001,,轉換時鐘為 1 MHz
(0<<16)| //BURST=0,軟件控制轉換操作
(0<<17)| //CLKS=0,使用11clock轉換
(1<<21)| //PDN=1,正常工作模式
(0<<22)| //TEST1:0=00,正常工作模式
(1<<24)| //START=1,直接啟動A/D轉換
(0<<27)| //直接啟動A/D轉換時此位無效
DelayNS(10);
ADC_Data=AD0DR,;//讀取A/D轉換結果,并清除DONE標志位
while(1){
AD0CR|=1<<24; //進行第一次轉換
while((AD0STAT&0x80000000)==0);//等待轉換結束
AD0CR|=1<<24;//再次啟動轉換
while((AD0STAT&0x80000000)==0);//等待轉換結束
ADC_Data=AD0DR,;//讀取A/D轉換結果
}
2.2 SPI與nRF24L01模塊的通信
SPI是一個全雙工的串行接口,。它設計成可以處理在一個給定總線上多個互聯(lián)的主機和從機。在給定的數(shù)據(jù)傳輸過程中,,接口上只能有一個主機和一個從機進行通信,。在一次數(shù)據(jù)傳輸過程中,主機總是向從機發(fā)送數(shù)據(jù)的8~16位,,而從機也總是向主機發(fā)送一個字節(jié)數(shù)據(jù),。圖2 為SPI的4種不同數(shù)據(jù)的傳輸格式的時序。
圖2 SPI數(shù)據(jù)傳輸格式
在設置寄存器的過程中要注意CPOL為0和1時的不同以及SSEL,、CPHA之間的關系,。
SPI初始化的部分代碼如下:
void MSIP_Init(void){
PINSEL0=(PINSEL0&(~(0xff<<8)))|(0x55<<8); //設置引腳連接SPI
SPCCR=0x52;//設置SPI時鐘分頻
SPCR=(0<<3)| //CPHA=0,數(shù)據(jù)在SCK的第一個時鐘沿采樣
(1<<4)| //CPOL=1,SCK為低有效
(1<<5)| //MSTR=1,SPI處于主模式
(0<<6)| //LSBF=0,SPI數(shù)據(jù)傳輸MSB(位7)在先
(0<<7); //SPIE=0,SPI中斷被禁止
}
圖3接口電路
嵌入式微控制器與NRF24L01接口電路如圖3所示。
這8個引腳分別和微控制器的GPIO口相連,,微控制器在初始化是設置成相應的功能,。GND為電源地;VDD為正電源1.9~3.6 V輸出,;CE為工作模式的選擇,RX或TX模式,;SS為SPI片選使能,,低電平使能;SCK為SPI時鐘,;MOSI 為SPI輸入,;MISO為SPI輸出;IRQ為中斷輸出。
接收端部分代碼如下:
#include "NRF24L01.h"
unsigned int RxBuf[5]; //接收緩沖,,保存接收到的數(shù)據(jù)
int main(){
NRF24L01_Initial(); //nRF24L01初始化
while((NRF24L01_RxStatus()),!=1){//nRF24L01沒有數(shù)據(jù)請求
*P_Watchdog_Clear=0x0001;
}
NRF24L01_ReceiveByte(RxBuf);//接收數(shù)據(jù)
while(1){
*P_Watchdog_Clear=0x0001;
}
}
3 實驗數(shù)據(jù)與驗證
圖4是用本測試系統(tǒng)所測得的兩條實驗曲線。該曲線所測的是引信電池[8]的電壓量,。曲線可以分成兩部分,,一部分是電池電壓隨著時間的增加而增加,另一部分是隨著時間的增加電壓量保持不變,。這是由引信的特殊結構所致,。
經(jīng)過實驗論證,本測試系統(tǒng)在誤差允許的范圍內(nèi)可以達到測量精度要求,,從而驗證了本測試系統(tǒng)具有較強的應用性,。
4 展望
未來的嵌入式產(chǎn)品是軟硬件緊密結合的設備,為了降低功耗和成本,,需要設計者盡量精簡系統(tǒng)內(nèi)核,,只保留和系統(tǒng)功能緊密相關的軟硬件,利用最低的資源實現(xiàn)最適當?shù)墓δ?,通常都具有低功耗,、體積小、集成度高等特點[9],。嵌入式系統(tǒng)和具體應用有機地結合在一起,,它的升級換代也是和具體產(chǎn)品同步進行,因此嵌入式系統(tǒng)產(chǎn)品一旦進入市場,,具有較長的生命周期和巨大的市場潛力,。
圖4 實驗曲線
參考文獻
[1] 祖靜, 申湘南, 張文棟. 存儲測試技術[J].兵工學報,1995(2).
[2] 周立功,等.深入淺出ARM7——LPC213x/214x[M].北京:北京航空航天大學出版社,2005.
[3] 周立功,等. ARM嵌入式系統(tǒng)基礎教程[M].北京:北京航空航天大學出版社,2005.
[4] nRF2401與SPI接口[EB/OL].[20080218].http://www.freqchina.com/SPI%20interface.pdf.
[5] ARM公司.ARM Developer Suite_CodeWarrior IDE Guide,2000.
[6] ARM公司.ARM Developer Suite_Compliers and Libraries,2000.
[7] ARM公司.ARM Developer Suite_Assembler Guide,2000.
[8] 王瑩澈,,田昱,,朱雅鵬. 鉛酸儲備電池在非旋轉彈引信上的應用探索[J]. 探測與控制學報,2008,30(5):5256.
[9] http://baike.baidu.com/view/6115.htm?fr=ala0_1_1.
孫婷婷(碩士生),、馬鐵華(教授,、博士生導師)、沈大偉(講師),,主要研究方向為動態(tài)測試與智能儀器,。