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