nRF24L01無線模塊在PIC16F877單片機(jī)上的應(yīng)用解析_第1頁
nRF24L01無線模塊在PIC16F877單片機(jī)上的應(yīng)用解析_第2頁
nRF24L01無線模塊在PIC16F877單片機(jī)上的應(yīng)用解析_第3頁
nRF24L01無線模塊在PIC16F877單片機(jī)上的應(yīng)用解析_第4頁
nRF24L01無線模塊在PIC16F877單片機(jī)上的應(yīng)用解析_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

nRF24L01無線模塊在PIC16F877單片機(jī)上的應(yīng)用解析先簡單的介紹下nRF24L01無線模塊(1)2.4Ghz全球開放ISM頻段免許可證使用(2)最高工作速率2Mbps,高效GFSK調(diào)制,抗干擾能力強(qiáng),特別適合工業(yè)控制場合(3)126頻道,滿足多點(diǎn)通信和跳頻通信需要(4)內(nèi)置硬件CRC檢錯(cuò)和點(diǎn)對多點(diǎn)通信地址控制(5)低功耗1.9-3.6V工作,待機(jī)模式下狀態(tài)為22uA;掉電模式下為900nA(6)內(nèi)置2.4Ghz天線,體積小巧15mmX29mm(7)模塊可軟件設(shè)地址,只有收到本機(jī)地址時(shí)才會(huì)輸出數(shù)據(jù)(提供中斷指示),可直接接各種單片機(jī)使用,軟件編程非常方便通過SPI方式完成數(shù)據(jù)的交換,包括數(shù)據(jù)的發(fā)送,數(shù)據(jù)的接收。說明一下,單片機(jī)中如果沒有SPI的硬件電路,我們可以使用單片機(jī)的普通IO口進(jìn)行SPI的時(shí)序模擬,只要符合無線模塊的時(shí)序邏輯,一樣能控制無線模塊的通信。FPGA是可編程邏輯,最大的特點(diǎn)就是靈活,用戶可根據(jù)需求加入所需要的邏輯器件,當(dāng)然它所包含的邏輯單元也是相當(dāng)?shù)呢S富,有SPI硬件模塊。這樣用戶就省去了SPI方式的時(shí)序邏輯,可以更好的專注于功能的開發(fā)。單片機(jī):這里我們使用的單片機(jī)型號為PIC16F877。圖1.3NRF24L01接入PIC的原理圖說明:從圖1.3中可以看出,主要是圖1.1中的6個(gè)信號(還有2個(gè)是地與電源)接入單片機(jī)中。而那些引腳是普通的IO口,需要用戶模仿SPI時(shí)序進(jìn)行控制。無線模塊進(jìn)行數(shù)據(jù)的交換就是數(shù)據(jù)的發(fā)送與數(shù)據(jù)的接收,下面將從這2個(gè)方面進(jìn)行介紹。不管是數(shù)據(jù)的發(fā)送還是數(shù)據(jù)的接收,要想控制好NRF24L01無線模塊,先要通過SPI方式對無線模塊進(jìn)行配置,只需要往它對應(yīng)的寄存器里寫入數(shù)值便可。先定義一下PIC上的宏,下面我們就可以很方便的對PIC的引腳進(jìn)行操作。1#defineMISORC22#defineMOSIRC33#defineSCKRD04#defineCERD25#defineCSNRD16#defineIRQRC17#defineLEDRD38#defineKEY0RB09#defineKEY1RB110#defineKEY2RB211#defineKEY3RB312#defineKEY4RB413#defineKEY5RB514#defineKEY6RB615#defineKEY7RB7NRF24L01無線模塊的寄存器1//*******************NRF24L01寄存器指令2#defineREAD_REG0x00//讀寄存器指令3#defineWRITE_REG0x20//寫寄存器指令4#defineRD_RX_PLOAD0x61//讀取接收數(shù)據(jù)指令5#defineWR_TX_PLOAD0xA0//寫待發(fā)數(shù)據(jù)指令6//*******************SPI(nRF24L01)寄存器地址7#defineCONFIG0x00//配置收發(fā)狀態(tài),8#defineEN_AA0x01//自動(dòng)應(yīng)答功能設(shè)置9#defineEN_RXADDR0x02//可用信道設(shè)置10#defineSETUP_AW0x03//收發(fā)地址寬度設(shè)置11#defineSETUP_RETR0x04//自動(dòng)重發(fā)功能設(shè)置12#defineRF_CH0x05//工作頻率設(shè)置13#defineRF_SETUP0x06//發(fā)射速率、功耗功能設(shè)置14#defineSTATUS0x07//狀態(tài)寄存器15#defineRX_ADDR_P00x0A//頻道0接收數(shù)據(jù)地址16#defineTX_ADDR0x10//發(fā)送地址寄存器17#defineRX_PW_P00x11//接收頻道0接收數(shù)據(jù)長度18#defineFIFO_STATUS0x17//FIFO棧入棧出狀態(tài)寄存器設(shè)置有2類寄存器是用戶可以根據(jù)自己的需求所確定的,那就是地址的長度以及內(nèi)容、發(fā)送與接收數(shù)據(jù)的長度,但無線模塊一次最多可以發(fā)送32個(gè)字節(jié),這兩類寄存器一般設(shè)置為3~4個(gè)字節(jié)。1#defineTX_PLOAD_WIDTH42#defineRX_PLOAD_WIDTH43unsignedcharTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10};//本地地址4unsignedcharRX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10};//接收地址A模擬SPI方式1/****************************************************************************************************2/*函數(shù):uintSPI_RW(uintuchar)3/*功能:NRF24L01的SPI時(shí)序4/****************************************************************************************************/5unsignedcharSPI_RW(unsignedchara)6{7unsignedchari;8for(i=0;i《8;i++)9{10if((a&0x80)==0x80)11MOSI=1;12elseMOSI=0;//output‘uchar’,MSBtoMOSI13a=(a《《1);//shiftnextbitintoMSB.。14SCK=1;//SetSCKhigh.。15if(MISO==1)16a|=0x01;17elsea&=0xfe;//capturecurrentMISObit18SCK=0;//。.thensetSCKlowagain19}20return(a);//returnreaduchar21}B以SPI方式對寄存器的操作1/****************************************************************************************************2/*函數(shù):ucharSPI_Read(ucharreg)3/*功能:NRF24L01的SPI讀操作4/****************************************************************************************************/5unsignedcharSPI_Read(unsignedcharreg)6{7unsignedcharreg_val;8CSN=0;//CSNlow,initializeSPIcommunication.。.9SPI_RW(reg);//Selectregistertoreadfrom.。10reg_val=SPI_RW(0);//。.thenreadregistervalue11CSN=1;//CSNhigh,terminateSPIcommunication12return(reg_val);//returnregistervalue13}14/****************************************************************************************************/15/*功能:NRF24L01讀寫寄存器函數(shù)16/****************************************************************************************************/17unsignedcharSPI_RW_Reg(unsignedcharreg,unsignedcharvalue)18{19unsignedcharstatus;20CSN=0;//CSNlow,initSPItransaction21status=SPI_RW(reg);//selectregister22SPI_RW(value);//。.andwritevaluetoit.。23CSN=1;//CSNhighagain24return(status);//returnnRF24L01statusuchar25}26/****************************************************************************************************/27/*函數(shù):uintSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars)28/*功能:用于讀數(shù)據(jù),reg:為寄存器地址,pBuf:為待讀出數(shù)據(jù)地址,uchars:讀出數(shù)據(jù)的個(gè)數(shù)29/****************************************************************************************************/30unsignedcharSPI_Read_Buf(unsignedcharreg,unsignedchar*pBuf,unsignedcharuchars)31{32unsignedcharstatus,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論