nRF2401電路原理圖
nRF2401引腳定義
nRF2401與5V單片機(jī)的連接(只適用于高阻口)
nRF2401是nRF2401A的早期型號(hào),nRF2401AG是無鉛工藝型號(hào)。它們完全兼容,硬件可直接替換,代碼也可相互使用。
◆小體積,QFN24 5x5mm封裝
◆寬電壓工作范圍,1.9V~3.6V
◆工作溫度范圍,-40℃~ 80℃
◆工作頻率范圍,2.400GHz~2.524GHz
◆數(shù)據(jù)傳輸速率,250Kbps、1Mbps
◆低功耗設(shè)計(jì),接收時(shí)工作電流18mA,0dBm功率發(fā)射時(shí)13mA,掉電模式時(shí)僅為400uA
◆多通道工作模式,125個(gè)數(shù)據(jù)通道,通道切換時(shí)間≤200us,滿足多點(diǎn)通訊和調(diào)頻需要
◆硬件的CRC校驗(yàn)和點(diǎn)對(duì)多點(diǎn)的地址控制
◆SPI通訊端口,適合與各種MCU連接,編程簡(jiǎn)單
◆可通過軟件設(shè)置工作頻率、通訊地址、傳輸速率和數(shù)據(jù)包長(zhǎng)度
◆MCU可通過接收完成引腳快判斷是否完成數(shù)據(jù)接收
單片機(jī)怎么通過rs232與nrf2401無線模塊鏈接
無線模塊有內(nèi)置的命令,你根據(jù)協(xié)議進(jìn)行發(fā)送和接收就好了。NRF2401使用SPI接口的,可以跟單片機(jī)直接連的,只是電源需要3.3v的
GB/T 2401-2006 陽離子染料 染腈綸時(shí)纖維飽和值、染料飽和值及飽和因數(shù)的測(cè)定
呵呵,直接用刀片貼在外蓋處,就是有紅蘭標(biāo)志的地方吧,輕輕用力就撥開了,然后就會(huì)見分別有一顆十字螺絲,松動(dòng)后取下手柄輪,就可使直接更換閥芯了!
nRF2401 (最新版本為nRF2401A,nRF2401AG為無鉛工藝版本)是由Nordic公司出品的單芯片無線收發(fā)芯片,工作于2.4GHz~2.5GHz的全球免申請(qǐng)(ISM)頻率。芯片包括一個(gè)完全集成的頻率合成器,功率放大器,晶體振蕩器和調(diào)制器。發(fā)射功率和工作頻率等工作參數(shù)可以很容易的通過3線SPI端口完成。極低的電流消耗,在-5dBm的輸出功率時(shí)僅為10.5mA,在接收模式時(shí)僅為18mA。掉電模式可以很容易的實(shí)現(xiàn)低功耗需求。
nRF2401內(nèi)置地址解碼器、先入后出堆棧區(qū)、解調(diào)處理器、時(shí)鐘處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器等功能模塊,需要很少的外圍元件,因此使用起來非常方便。QFN24引腳封裝,外形尺寸只有5×5mm。
nRF2401有工作模式有四種:收發(fā)模式、配置模式、空閑模式和關(guān)機(jī)模式。nRF2401的工作模式由PWR_UP 、CE、CS三個(gè)引腳決定。
nRF2401的收發(fā)模式有ShockBurstTM收發(fā)模式和直接收發(fā)模式兩種,收發(fā)模式由器件配置字決定,具體配置將在器件配置部分詳細(xì)介紹。
ShockBurstTM收發(fā)模式
ShockBurstTM收發(fā)模式下,使用片內(nèi)的先入先出堆棧區(qū),數(shù)據(jù)低速從微控制器送入,但高速(1Mbps)發(fā)射,這樣可以盡量節(jié)能,因此,使用低速的微控制器也能得到很高的射頻數(shù)據(jù)發(fā)射速率。與射頻協(xié)議相關(guān)的所有高速信號(hào)處理都在片內(nèi)進(jìn)行,這種做法有三大好處:盡量節(jié)能;低的系統(tǒng)費(fèi)用(低速微處理器也能進(jìn)行高速射頻發(fā)射);數(shù)據(jù)在空中停留時(shí)間短,抗干擾性高。nRF2401的ShockBurstTM技術(shù)同時(shí)也減小了整個(gè)系統(tǒng)的平均工作電流。
在ShockBurstTM收發(fā)模式下,nRF2401自動(dòng)處理字頭和CRC校驗(yàn)碼。在接收數(shù)據(jù)時(shí),自動(dòng)把字頭和CRC校驗(yàn)碼移去。在發(fā)送數(shù)據(jù)時(shí),自動(dòng)加上字頭和CRC校驗(yàn)碼,當(dāng)發(fā)送過程完成后,數(shù)據(jù)準(zhǔn)備好引腳通知微處理器數(shù)據(jù)發(fā)射完畢。
ShockBurstTM發(fā)射流程
接口引腳為CE,CLK1,DATA
A. 當(dāng)微控制器有數(shù)據(jù)要發(fā)送時(shí),其把CE置高,使nRF2401工作;
B. 把接收機(jī)的地址和要發(fā)送的數(shù)據(jù)按時(shí)序送入nRF2401;
C. 微控制器把CE置低,激發(fā)nRF2401進(jìn)行ShockBurstTM發(fā)射;
D. nRF2401的ShockBurstTM發(fā)射
給射頻前端供電;
射頻數(shù)據(jù)打包(加字頭、CRC校驗(yàn)碼);
高速發(fā)射數(shù)據(jù)包;
發(fā)射完成,nRF2401進(jìn)入空閑狀態(tài)。
ShockBurstTM接收流程
接口引腳CE、DR1、CLK1和DATA(接收通道1)
A. 配置本機(jī)地址和要接收的數(shù)據(jù)包大小;
B. 進(jìn)入接收狀態(tài),把CE置高;
C. 200us后,nRF2401進(jìn)入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來;
D. 當(dāng)接收到正確的數(shù)據(jù)包(正確的地址和CRC校驗(yàn)碼),nRF2401自動(dòng)把字頭、地址和CRC校驗(yàn)位移去;
E. nRF2401通過把DR1(這個(gè)引腳一般引起微控制器中斷)置高通知微控制器;
F. 微控制器把數(shù)據(jù)從nRF2401移出;
G. 所有數(shù)據(jù)移完,nRF2401把DR1置低,此時(shí),如果CE為高,則等待下一個(gè)數(shù)據(jù)包,如果CE為低,開始其它工作流程。
直接收發(fā)模式
在直接收發(fā)模式下,nRF2401如傳統(tǒng)的射頻收發(fā)器一樣工作。
直接發(fā)送模式
接口引腳為CE、DATA
A. 當(dāng)微控制器有數(shù)據(jù)要發(fā)送時(shí),把CE置高;
B. nRF2401射頻前端被激活;
C. 所有的射頻協(xié)議必須在微控制器程序中進(jìn)行處理(包括字頭、地址和CRC校驗(yàn)碼)。
直接接收模式
接口引腳為CE、CLK1和DATA
A. 一旦nRF2401被配置為直接接收模式,DATA引腳將根據(jù)天線接收到的信號(hào)開始高低變化(由于噪聲的存在);
B. CLK1引腳也開始工作;
C. 一旦接收到有效的字頭,CLK1引腳和DATA引腳將協(xié)調(diào)工作,把射頻數(shù)據(jù)包以其被發(fā)射時(shí)的數(shù)據(jù)從DATA引腳送給微控制器;
D. 這頭必須是8位;
E. DR引腳沒用上,所有的地址和CRC校驗(yàn)必須在微控制器內(nèi)部進(jìn)行。
配置模式
在配置模式,15字節(jié)的配置字被送到nRF2401,這通過CS、CLK1和DATA三個(gè)引腳完成,具體的配置方法請(qǐng)參考本文的器件配置部分。
空閑模式
nRF2401的空閑模式是為了減小平均工作電流而設(shè)計(jì),其最大的優(yōu)點(diǎn)是,實(shí)現(xiàn)節(jié)能的同時(shí),縮短芯片的起動(dòng)時(shí)間。在空閑模式下,部分片內(nèi)晶振仍在工作,此時(shí)的工作電流跟外部晶振的頻率有關(guān),如外部晶振為4MHz時(shí)工作電流為12uA,外部晶振為16MHz時(shí)工作電流為32uA。在空閑模式下,配置字的內(nèi)容保持在nRF2401片內(nèi)。
關(guān)機(jī)模式
在關(guān)機(jī)模式下,為了得到最小的工作電流,一般此時(shí)的工作電流小于1uA。關(guān)機(jī)模式下,配置字的內(nèi)容也會(huì)被保持在nRF2401片內(nèi),這是該模式與斷電狀態(tài)最大的區(qū)別。
nRF2401的所有配置工作都是通過CS、CLK1和DATA三個(gè)引腳完成,把其配置為ShockBurstTM收發(fā)模式需要15字節(jié)的配置字,而如把其配置為直接收發(fā)模式只需要2字節(jié)的配置字。由上文對(duì)nRF2401工作模式的介紹,我們可以知道,nRF2401一般工作于ShockBurstTM收發(fā)模式,這樣,系統(tǒng)的程序編制會(huì)更加簡(jiǎn)單,并且穩(wěn)定性也會(huì)更高,因此,下文著重介紹把nRF2401配置為ShockBurstTM收發(fā)模式的器件配置方法。
ShockBurstTM的配置字使nRF2401能夠處理射頻協(xié)議,在配置完成后,在nRF2401工作的過程中,只需改變其最低一個(gè)字節(jié)中的內(nèi)容,以實(shí)現(xiàn)接收模式和發(fā)送模式之間切換。ShockBurstTM的配置字可以分為以下四個(gè)部分:
數(shù)據(jù)寬度:聲明射頻數(shù)據(jù)包中數(shù)據(jù)占用的位數(shù)。這使得nRF2401能夠區(qū)分接收數(shù)據(jù)包中的數(shù)據(jù)和CRC校驗(yàn)碼;
地址寬度:聲明射頻數(shù)據(jù)包中地址占用的位數(shù)。這使得nRF2401能夠區(qū)分地址和數(shù)據(jù);
地址:接收數(shù)據(jù)的地址,有通道1的地址和通道2的地址;
CRC:使nRF2401能夠生成CRC校驗(yàn)碼和解碼。
當(dāng)使用nRF2401片內(nèi)的CRC技術(shù)時(shí),要確保在配置字中CRC校驗(yàn)被使能,并且發(fā)送和接收使用相同的協(xié)議。
在配置模式下,注意保證PWR_UP引腳為高電平,CE引腳為低電平。配置字從最高位開始,依次送入nRF2401。在CS引腳的下降沿,新送入的配置字開始工作。
PCB設(shè)計(jì)
PCB設(shè)計(jì)對(duì)nRF2401的整體性能影響很大,所以PCB設(shè)計(jì)在nRF2401收發(fā)系統(tǒng)的開發(fā)過程中主要的工作之一,在PCB設(shè)計(jì)時(shí),必須考慮到各種電磁干擾,注意調(diào)整電阻、電容和電感的位置,特別要注意電容的位置。
nRF2401的PCB一般都是雙層板,底層一般不放置元件,為地層,頂層的空余地方一般都敷上銅,這些敷銅通過過孔與底層的地相連。直流電源及電源濾波電容盡量靠近VDD引腳。nRF2401的供電電源應(yīng)通過電容隔開,這樣有利于給nRF2401提供穩(wěn)定的電源。在PCB中,盡量多打一些通孔,使頂層和底層的地能夠充分接觸。
nRF2401通過ShockBurstTM收發(fā)模式進(jìn)行無線數(shù)據(jù)發(fā)送,收發(fā)可靠,其外形尺寸小,需要的外圍元器件也少,因此,使用方便,在工業(yè)控制、消費(fèi)電子等各個(gè)領(lǐng)域都具有廣闊的應(yīng)用前景。
#include
//
//只需要把自己?jiǎn)纹瑱C(jī)的I/O 口接上對(duì)應(yīng)
sbit MISO = P1^3;
sbit MOSI = P1^4;
sbit CK = P1^5;
sbit CE = P1^6;
sbit CSN = P3^7;
sbit IRQ = P1^2;
sbit LED2 = P3^5;
sbit LED1 = P3^4;
sbit KEY1 = P3^0;
sbit KEY2 = P3^1;
//SPI(nRF24L01)commands
#define EAD_REG 0x00 //Definereadcommandtoregister
#define ITE_REG 0x20 //Definewritecommandtoregister
#define D_RX_PLOAD 0x61 //DefineRXpayloadregisteraddress
#define LOAD 0xA0 //DefineTXpayloadregisteraddress
#define FLUSH_TX 0xE1 //DefineflushTXregistercommand
#define FLUSH_RX 0xE2 //DefineflushRXregistercommand
#define EUSE_TX_PL 0xE3 //DefinereuseTXpayloadregistercommand
#define Nop0xFF //DefineNoOperation,mightbeusedtoreadstatusregister
//***************************************************//
//SPI(nRF24L01)registers(addresses)
#define CONFIG 0x00 //'Config' registeraddress
#define EN_AA 0x01 //'Enable AutoAcknowledgment'registeraddress
#define EN_RXADDR 0x02 //'Enabled RXaddresses'registeraddress
#define ETUP_AW 0x03 //'Setup addresswidth'registeraddress
#define ETUP_RETR 0x04 //'Setup Auto.Retrans'registeraddress
#define F_CH 0x05 //'RF channel'registeraddress
#define F_SETUP 0x06 //'RF setup'registeraddress
#define ATUS 0x07 //'Status' registeraddress
#define BSERVE_TX 0x08 //'Observe TX'registeraddress
#define CD 0x09 //'Carrier Detect'registeraddress
#define ADDR_P0 0x0A //'RX addresspipe0'registeraddress
#define ADDR_P1 0x0B //'RX addresspipe1'registeraddress
#define ADDR_P2 0x0C //'RX addresspipe2'registeraddress
#define ADDR_P3 0x0D //'RX addresspipe3'registeraddress
#define ADDR_P4 0x0E //'RX addresspipe4'registeraddress
#define ADDR_P5 0x0F //'RX addresspipe5'registeraddress
#define ADDR 0x10 //'TX address'registeraddress
#define 0x11 //'RX payloadwidth,pipe0'registeraddress
#define 1 0x12 //'RX payloadwidth,pipe1'registeraddress
#define 2 0x13 //'RX payloadwidth,pipe2'registeraddress
#define 3 0x14 //'RX payloadwidth,pipe3'registeraddress
#define 4 0x15 //'RX payloadwidth,pipe4'registeraddress
#define 5 0x16 //'RX payloadwidth,pipe5'registeraddress
#define FIFO_STATUS 0x17 //'FIFO StatusRegister'registeraddress
//------------------------------------------------------------// 寫一個(gè)字節(jié)到24L01,同時(shí)讀出一個(gè)字節(jié)
uchar SPI_RW(ucharbyte)
{
uchar ;
for (bit_ctr=0;bit_ctr<8;bit_ctr ) //output8-bit
{
MOSI = (byte&0x80);//output'byte', MSBtoMOSI
byte = (byte<<1);//shiftnextbitintoMSB..
SCK = 1;//SetSCKhigh..
byte |= MISO;//capturecurrentMISObit
SCK = 0;//..then setSCKlowagain
}
return(byte);//returnreadbyte
}
// 向寄存器reg寫一個(gè)字節(jié),同時(shí)返回狀態(tài)字節(jié)
uchar SPI_RW_Reg(BYTEreg,BYTEvalue)
{
uchar status;
CSN = 0;//CSNlow, initSPItransaction
status = SPI_RW(reg);//selectregister
SPI_RW(value);//..and writevaluetoit..
CSN = 1;//CSNhighagain
return(status);//returnnRF24L01statusbyte
}
// 讀出bytes字節(jié)的數(shù)據(jù)
uchar SPI_Read_Buf(BYTEreg,BYTE*pBuf,BYTEbytes)
{
uchar status,byte_ctr;
CSN = 0;//SetCSNlow,initSPItranaction
status = SPI_RW(reg);//Selectregistertowritetoandreadstatusbyte
for (byte_ctr=0;byte_ctr pBuf[byte_ctr] = SPI_RW(0);//
CSN = 1;
return(status);//returnnRF24L01statusbyte
}
// 寫入bytes字節(jié)的數(shù)據(jù)
uchar SPI_Write_Buf(BYTEreg,BYTE*pBuf,BYTEbytes)
{
uchar status,byte_ctr;
CSN = 0;
status = SPI_RW(reg);
for (byte_ctr=0;byte_ctr SPI_RW(*pBuf );
CSN = 1;//SetCSNhighagain
return(status);//
}
// 接收函數(shù),返回1表示有數(shù)據(jù)收到,否則沒有數(shù)據(jù)接受到
unsigned char nRF24L01_RxPacket(unsignedchar*rx_buf)
{
unsigned char revale=0;
//setinRXmode
SPI_RW_Reg(WRITE_REG CONFIG,0x0f);//SetPWR_UPbit,enableCRC(2bytes)&
Prim:RX.RX_DRenabled..
CE = 1;//SetCEpinhightoenableRXdevice
dalay130us();
sta = SPI_Read(STATUS);//readregisterSTATUS'svalue
if (RX_DR)//ifreceivedataready(RX_DR)interrupt
{
CE = 0;//standbymode
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);//readreceivepayloadfrom
RX_FIFObuffer
revale = 1;
}
SPI_RW_Reg(WRITE_REG STATUS,sta);//clearRX_DRorTX_DSorMAX_RTinterrupt flag
return revale;
}
// 發(fā)送函數(shù)
voidn RF24L01_TxPacket(unsignedchar*tx_buf)
{
CE = 0;
//SPI_Write_Buf(WRITE_REG TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);//Writes
TX_AddresstonRF24L01
//SPI_Write_Buf(WRITE_REG RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//
RX_Addr0sameasTX_AdrforAuto.Ack
SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH);//WritesdatatoTXpayload
SPI_RW_Reg(WRITE_REG CONFIG,0x0e);//SetPWR_UPbit,enableCRC(2bytes)&
Prim:TX.MAX_RT&TX_DSenabled..
CE = 1;
dalay10us();
CE = 0;
}
// 配置函數(shù)
void nRF24L01_Config(void)
{
//initialio
CE = 0;//chipenable
CSN = 1;//Spidisable
SCK = 0;//Spiclockline inithigh
CE = 0;
SPI_RW_Reg(WRITE_REG CONFIG,0x0f);//SetPWR_UPbit,enableCRC(2bytes)&
Prim:RX.RX_DRenabled..
SPI_RW_Reg(WRITE_REG EN_AA,0x01);
SPI_RW_Reg(WRITE_REG EN_RXADDR,0x01);//EnablePipe0
SPI_RW_Reg(WRITE_REG SETUP_AW,0x02);//Setupaddresswidth=5bytes
SPI_RW_Reg(WRITE_REG SETUP_RETR,0x1a);//500us 86us,10retrans...
SPI_RW_Reg(WRITE_REG RF_CH,0);
SPI_RW_Reg(WRITE_REG RF_SETUP,0x07);//TX_PWR:0dBm,Datarate:1Mbps,
LNA:HCURR
SPI_RW_Reg(WRITE_REG RX_PW_P0,RX_PLOAD_WIDTH);
SPI_Write_Buf(WRITE_REG TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);
SPI_Write_Buf(WRITE_REG RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);CE=1;//
}
//////////////////第三維編輯/////////////////////////////////////////////////////
格式:pdf
大小:139KB
頁數(shù): 3頁
評(píng)分: 4.7
介紹一種利用nRF2401無線通信模塊實(shí)現(xiàn)PLC間數(shù)據(jù)無線傳輸?shù)姆椒?可使生產(chǎn)現(xiàn)場(chǎng)的PLC靈活布置,并節(jié)省布線成本。該系統(tǒng)設(shè)計(jì)是針對(duì)西門子S7-200PLC,單片機(jī)從PLC獲取現(xiàn)場(chǎng)數(shù)據(jù),再將數(shù)據(jù)傳輸?shù)絥RF2401以實(shí)現(xiàn)無線通信,由此實(shí)現(xiàn)PLC之間的無線數(shù)據(jù)傳輸。經(jīng)試驗(yàn)表明:該無線通信控制器可在9 m范圍實(shí)現(xiàn)PLC間數(shù)據(jù)的無線傳輸。
格式:pdf
大小:139KB
頁數(shù): 未知
評(píng)分: 4.7
針對(duì)環(huán)境溫度監(jiān)測(cè)傳感器傳輸距離較短的問題,設(shè)計(jì)一種基于nRF2401短距離無線傳輸模塊和GPRS遠(yuǎn)距離傳輸相結(jié)合的無線溫度監(jiān)測(cè)傳輸系統(tǒng),實(shí)現(xiàn)環(huán)境溫度的實(shí)時(shí)采集,以及溫度信息在監(jiān)測(cè)節(jié)點(diǎn)、匯聚節(jié)點(diǎn)和監(jiān)控中心之間的無線傳輸。
nRF2401A為nRF2401的改進(jìn)型號(hào)(nRF2401AG為無鉛工藝型號(hào))。nRF2401A工作在2.4GHz的國際通用ISM免申請(qǐng)頻段GFSK調(diào)制的無線數(shù)傳芯片。最高發(fā)射功率0dBm,接收靈敏度-90dBm,支持124個(gè)接收頻率與126個(gè)發(fā)射頻率。使用ShockBurst?傳輸模式,具備兩個(gè)獨(dú)立的數(shù)據(jù)接收通道。支持250kbps和1Mbps的空中數(shù)據(jù)速率。使用SPI接口與MCU完成數(shù)據(jù)通訊與通訊控制等功能。
nRF24L01是工作在2.4GHz的國際通用ISM免申請(qǐng)頻段GFSK調(diào)制的無線數(shù)傳芯片。最高發(fā)射功率0dBm,接收靈敏度為-85dBm,支持125個(gè)通訊頻率。使用增強(qiáng)型的 Enhanced ShockBurst?傳輸模式,支持6個(gè)數(shù)據(jù)通道(共用FIFO)。支持1Mbps和2Mbps的空中數(shù)據(jù)傳輸速率。使用SPI接口與MCU完成數(shù)據(jù)通訊與通訊控制等功能。
RF2401A、nRF24L01和nRF24L01 之間是可以完成相互通訊的。前提是,它們必須在配置的過程中使用相同的通訊頻率、空中傳輸速率、地址長(zhǎng)度、地址信息、數(shù)據(jù)長(zhǎng)度和CRC校驗(yàn)方式。