新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于nRF24E1無線傳輸?shù)脑O(shè)計(jì)與應(yīng)用

基于nRF24E1無線傳輸?shù)脑O(shè)計(jì)與應(yīng)用

——
作者:西南石油學(xué)院 于珍珠 何志敏 梅大成 時(shí)間:2007-01-26 來源:《世界電子元器件》 收藏

引言
隨著科技的進(jìn)步,越來越多的無線技術(shù)正快速應(yīng)用到各種產(chǎn)品中。nrf24e1是挪威nordic公司推出的一款單片2.4ghz無線收發(fā)芯片,采用0.18 m cmos技術(shù)制造,以增強(qiáng)型51為內(nèi)核,9路10bitadc,采樣率可達(dá)100k,具有125個(gè)頻道,傳輸速率可達(dá)1mbps,內(nèi)置crc校驗(yàn)并支持多點(diǎn)通信。1.9~3.6v低功耗工作,內(nèi)置電壓監(jiān)視和復(fù)位電路,多種省電模式可供選擇,待機(jī)電流僅為2 a。nrf24e1可廣泛應(yīng)用于無線水表、煤氣、電表;無線智能傳感器;無線數(shù)據(jù)采集裝置;無線身份識(shí)別智能卡;無線火警探頭;無線耳機(jī)、麥克風(fēng);無線鼠標(biāo)、無線鍵盤;pda手持終端等短距離無線通信場(chǎng)所。

本文引用地址:http://butianyuan.cn/article/20692.htm


概述

nrf24e1功能介紹

nrf24e1結(jié)構(gòu)框圖如圖1所示。

微處理器

nrf24e1微處理器的指令系統(tǒng)與工業(yè)標(biāo)準(zhǔn)的8051相兼容,但兩者的執(zhí)行時(shí)序稍有不同。通常,nrf24e1片內(nèi)微控制器、的指令周期為4到20個(gè)指令周期,而工業(yè)標(biāo)準(zhǔn)的8051為12~48個(gè)時(shí)鐘周期。nrf24e1的中斷控制器支持adc、spi、rf接收器1、rf接收器2、喚醒定時(shí)器、5個(gè)中斷源。nrf24e1擁有3個(gè)與8052一樣的定時(shí)器。在傳統(tǒng)的異步通信方式下,與8051兼容的uart可用作定時(shí)器1和定時(shí)器2的波特率發(fā)生器。nrf24e1的cpu集成了2個(gè)數(shù)據(jù)指針,以便于和外部ram進(jìn)行數(shù)據(jù)傳遞。晶振直接為nrf24e1的微控制器提供了時(shí)鐘來源。

nrf24e1的微控制器中有256字節(jié)的數(shù)據(jù)ram和512字節(jié)的rom。上電復(fù)位或經(jīng)軟件初始化后,處理器自動(dòng)加載rom引導(dǎo)區(qū)中的代碼。用戶程序通常是在引導(dǎo)區(qū)的引導(dǎo)下,從外部串口eeprom加載到1個(gè)4kb的ram中,這個(gè)4kb的ram也可作存儲(chǔ)數(shù)據(jù)用。如果不使用掩膜rom(即內(nèi)含的rom),程序代碼必須從外部非易失性存儲(chǔ)器中加載。這時(shí),默認(rèn)的啟動(dòng)引導(dǎo)區(qū)使用spi接口的“通用25320”eeprom。為了控制標(biāo)準(zhǔn)8051沒有的功能,nrf24e1增加了一些特殊功能寄存器,如radio(p2)、adccon、adcdatah、pwmcon、pwmduty、rstreas等。其p0和p1也和標(biāo)準(zhǔn)8051有所不同,其它大部分的sfrs均與標(biāo)準(zhǔn)8051相同。

pwm

nrf24e1有一個(gè)可編程pwm輸出,它和dio9共同復(fù)用p0.7引腳,并可軟件編程決定pwm工作于6、7或8位。

spi(串行外設(shè)接口)

spi的3個(gè)口(sdi、sck和sdo)與gpio(din0、dio0和dio1)共同復(fù)用p1口的三個(gè)引腳(p1.0、p1.1、p1.2)。spi硬件不產(chǎn)生任何片選信號(hào),通常用gpio位(p0口)來作為外部spi設(shè)備的片選口。

端口邏輯

nrf24e1有1個(gè)輸入,10個(gè)輸出引腳。p0(dio2~dio9)和p1(dio0、dio1、din0)默認(rèn)配置為gpio(通用輸入輸出端口)。多數(shù)gpio在程序控制下可復(fù)用,這些復(fù)用功能包括兩個(gè)外部中斷,uart rxd和txd,一個(gè)spi主機(jī)端口,三個(gè)定時(shí)器和pwm輸出。

rtc喚醒定時(shí)器、wtd(看門狗)和rc振蕩器

nrf24e1內(nèi)有一個(gè)低功耗的rc振蕩器。該振蕩器在vdd≥1.8v時(shí),會(huì)持續(xù)工作。rtc喚醒定時(shí)器和wtd(看門狗)是2個(gè)16位的可編程定時(shí)器,它們的工作時(shí)鐘為rc振蕩器的lp_osc。喚醒定時(shí)器和看門狗的定時(shí)時(shí)間約為300 s~80ms,其默認(rèn)值為10ms。喚醒定時(shí)器由用戶軟件控制啟動(dòng)和停止。看門狗在復(fù)位后被禁止,再次復(fù)位后才能被激活。

a/d轉(zhuǎn)換器

nrf24e1內(nèi)有9通道10位adc,線性轉(zhuǎn)換時(shí)間為每10位48個(gè)cpu指令周期。a/d轉(zhuǎn)換器可在arfe輸入和內(nèi)部1.22v的帶隙參考之間進(jìn)行軟件選擇。轉(zhuǎn)換器的9個(gè)輸入可由軟件進(jìn)行選擇。通道0~7可以轉(zhuǎn)換對(duì)應(yīng)引腳ain0~ain7上的電壓值,通道8用于對(duì)nrf24e1工作電壓的監(jiān)控。a/d轉(zhuǎn)換器默認(rèn)配置為10位,為滿足需要,可通過軟件使其工作于6位、8位或12位方式。

無線收發(fā)器

nrf24e1收發(fā)器通過內(nèi)部并行口或內(nèi)部spi口與其他模塊進(jìn)行通信,同單片射頻收發(fā)器nrf2401具有相同的功能。duoceiver接收器輸出的數(shù)據(jù)準(zhǔn)備信號(hào),可通過程序使其作為微處理器的中斷或通過gpio口傳給cpu。nrf24e1工作于全球開放的2.4~2.5ghz頻段。收發(fā)器由1個(gè)完整的頻率合成器、1個(gè)功率放大器、1個(gè)調(diào)節(jié)器和2個(gè)接收器組成。輸出功率、頻道和其它射頻參數(shù)可通過對(duì)radio寄存器(sfr 0xa0)編程進(jìn)行控制。發(fā)射模式下,射頻電流消耗僅為10.5ma,接收模式下為18ma。為了節(jié)能,可通過軟件程序控制收發(fā)器的開/關(guān)。


硬件設(shè)計(jì)

nrf24e1收發(fā)核心電路如圖2所示。


由于本設(shè)計(jì)要求pcb板越小越好而且成品要密封,所以如何供電成了這次設(shè)計(jì)的難點(diǎn)。若使用電池則有持續(xù)時(shí)間短、占用面積大和易震動(dòng)脫落等缺點(diǎn)。nrf24e1電源電壓是1.9~3.6v,且功耗很低。max2323及串口eeprom25aa320均可工作在3.0v,因此在該設(shè)計(jì)中摒棄了由電池供電的做法,而采用了從串口取電源作為整個(gè)電路的供電系統(tǒng)。其串口取電源電路如圖3所示。

軟件設(shè)計(jì)

nrf24e1具有增強(qiáng)型8051內(nèi)核,keil c51支持nrf24e1開發(fā),因此利用c51開發(fā)經(jīng)驗(yàn)即可編出高效優(yōu)質(zhì)的代碼。此程序是經(jīng)keil c51 v7.05編譯并調(diào)試通過,篇幅有限,僅列出主要功能函數(shù)。

(1)初始化程序如下:

void init(void){
//配置i/o口
p0_alt=0x06; // p0.1為rxd,p0.2為txd
p0_dir=0x09; // p0.0和p0.3設(shè)為輸入
p1_dir=0x03; // p1.0和p1.1設(shè)為輸入
pwr_up=1; //開radio,讀時(shí)不用,寫時(shí)為電源
spiclk=0; //spi時(shí)鐘為xtal/8
spi_ctrl=0x02; //把spi與收發(fā)通道1(ch1)相連
//串口通訊初始化
th1 = 0x0f3; // 晶振為16mhz,波特率為19200(當(dāng)t1m=1且smod=1時(shí))
ckcon |= 0x10; // t1m=1 (計(jì)數(shù)器時(shí)鐘為cpu時(shí)鐘的1/4)
pcon = 0x80; // smod=1 (雙倍波特率)
scon = 0x52; // 采用串口模式1,使能接收器
tmod = 0x20; // 使用計(jì)數(shù)器1,8位計(jì)數(shù)值自動(dòng)重載
tcon = 0x40; // 啟動(dòng)計(jì)數(shù)器
}
(2)接收器配置函數(shù)

void init_receiver(void){
unsigned char b;
cs = 1; //打開配置方式
delay100us(0);
for(b=0;b {
spireadwrite(rconf.buf[b]); //發(fā)送接收器配置字
}
cs = 0; // 關(guān)配置方式
ce = 1; // 使能收發(fā)功能
} (3)接收函數(shù)
void receiver(void){
unsigned char b;
cs = 1; //打開配置模式
delay100us(0);
for(b=0;b spireadwrite(rconf.buf[b]); //發(fā)送接收器配置字
}
cs = 0; //關(guān)配置模式
for(;;){
b = receivepacket(); //接收數(shù)據(jù)包
putchar(b); //串口通信函數(shù),將接收到的數(shù)據(jù)通過串口傳送
}
}

(4)發(fā)送函數(shù)

void transmitter(void){
unsigned char b;
cs = 1;
delay100us(0);
for(b=0;b spireadwrite(tconf.buf[b]); //發(fā)送發(fā)送器配置字
}
cs = 0;
for(;;){
b= readadc(); // 讀a/d轉(zhuǎn)換結(jié)果
putchar(b);
transmitpacket(b); // 發(fā)送數(shù)據(jù)包
}
}

此程序除了以上函數(shù)外,還有串口通訊函數(shù)、讀a/d轉(zhuǎn)換結(jié)果函數(shù)、接收包處理函數(shù)和發(fā)送包處理函數(shù)等。


結(jié)論

本設(shè)計(jì)電路簡(jiǎn)單,易于實(shí)現(xiàn)。經(jīng)實(shí)際調(diào)試應(yīng)用完全可用于點(diǎn)對(duì)點(diǎn)及點(diǎn)對(duì)多點(diǎn)的無線數(shù)據(jù)傳輸,收到了良好的效果。1mbps完全滿足一般無線傳輸?shù)囊蟆H暨M(jìn)行批量生產(chǎn)時(shí)可將程序?qū)戇M(jìn)nrf24e1的內(nèi)部ram中,從而省去了外部串口eeprom,節(jié)約了成本。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉