新聞中心

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

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

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

        引言
        隨著科技的進(jìn)步,越來(lái)越多的無(wú)線(xiàn)技術(shù)正快速應(yīng)用到各種產(chǎn)品中。nrf24e1是挪威nordic公司推出的一款單片2.4ghz無(wú)線(xiàn)收發(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)用于無(wú)線(xiàn)水表、煤氣、電表;無(wú)線(xiàn)智能傳感器;無(wú)線(xiàn)數(shù)據(jù)采集裝置;無(wú)線(xiàn)身份識(shí)別智能卡;無(wú)線(xiàn)火警探頭;無(wú)線(xiàn)耳機(jī)、麥克風(fēng);無(wú)線(xiàn)鼠標(biāo)、無(wú)線(xiàn)鍵盤(pán);pda手持終端等短距離無(wú)線(xiàn)通信場(chǎng)所。

        本文引用地址:http://www.104case.com/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í)鐘來(lái)源。

        nrf24e1的微控制器中有256字節(jié)的數(shù)據(jù)ram和512字節(jié)的rom。上電復(fù)位或經(jīng)軟件初始化后,處理器自動(dòng)加載rom引導(dǎo)區(qū)中的代碼。用戶(hù)程序通常是在引導(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沒(méi)有的功能,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口)來(lái)作為外部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(看門(mén)狗)和rc振蕩器

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

        a/d轉(zhuǎn)換器

        nrf24e1內(nèi)有9通道10位adc,線(xiàn)性轉(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位,為滿(mǎn)足需要,可通過(guò)軟件使其工作于6位、8位或12位方式。

        無(wú)線(xiàn)收發(fā)器

        nrf24e1收發(fā)器通過(guò)內(nèi)部并行口或內(nèi)部spi口與其他模塊進(jìn)行通信,同單片射頻收發(fā)器nrf2401具有相同的功能。duoceiver接收器輸出的數(shù)據(jù)準(zhǔn)備信號(hào),可通過(guò)程序使其作為微處理器的中斷或通過(guò)gpio口傳給cpu。nrf24e1工作于全球開(kāi)放的2.4~2.5ghz頻段。收發(fā)器由1個(gè)完整的頻率合成器、1個(gè)功率放大器、1個(gè)調(diào)節(jié)器和2個(gè)接收器組成。輸出功率、頻道和其它射頻參數(shù)可通過(guò)對(duì)radio寄存器(sfr 0xa0)編程進(jìn)行控制。發(fā)射模式下,射頻電流消耗僅為10.5ma,接收模式下為18ma。為了節(jié)能,可通過(guò)軟件程序控制收發(fā)器的開(kāi)/關(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開(kāi)發(fā),因此利用c51開(kāi)發(fā)經(jīng)驗(yàn)即可編出高效優(yōu)質(zhì)的代碼。此程序是經(jīng)keil c51 v7.05編譯并調(diào)試通過(guò),篇幅有限,僅列出主要功能函數(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; //開(kāi)radio,讀時(shí)不用,寫(xiě)時(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; //打開(kāi)配置方式
        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; //打開(kāi)配置模式
        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ù)通過(guò)串口傳送
        }
        }

        (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)的無(wú)線(xiàn)數(shù)據(jù)傳輸,收到了良好的效果。1mbps完全滿(mǎn)足一般無(wú)線(xiàn)傳輸?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ù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 集贤县| 云安县| 策勒县| 宣汉县| 博乐市| 高州市| 赣州市| 林芝县| 佳木斯市| 黄陵县| 祁阳县| 辽中县| 察雅县| 凯里市| 普陀区| 河源市| 通渭县| 论坛| 惠安县| 天峻县| 翁牛特旗| 西城区| 黄大仙区| 来宾市| 曲阜市| 潜山县| 铜山县| 和硕县| 若尔盖县| 新蔡县| 唐山市| 临夏市| 潼南县| 右玉县| 葵青区| 方山县| 锦屏县| 旬邑县| 广平县| 象山县| 同德县|