微型智能无线数传模块Word格式.docx
- 文档编号:16903288
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:10
- 大小:597.22KB
微型智能无线数传模块Word格式.docx
《微型智能无线数传模块Word格式.docx》由会员分享,可在线阅读,更多相关《微型智能无线数传模块Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
这是微型智能无线数传模块的内部电路图,点击这里可以下载NRF24L01的详细资料
二、接口电路:
(1)VCC脚接电压范围为1.9~3.6V之间,超过3.6V将会烧毁模块。
推荐电压3.3V左右。
(2)除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需电平转换。
当然对3V左右的单片机更加适用了。
(3)硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以了。
三、模块结构和引脚说明
四、模块的工作模式有四种:
收发模式、配置模式、空闲模式、关机模式由PWR_UPregister、PRIM_RXregister和CE决定,详见下表:
4.1收发模式有EnhancedShockBurstTM收发模式、ShockBurstTM收发模式和直接收发模式三种,收发模式由器件配置字决定,具体配置将在器件配置部分详细介绍。
4.1.1EnhancedShockBurstTM收发模式。
EnhancedShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。
与射
频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:
尽量节能;
低的系统费用(低速微处理器也能进行高速射频发射);
数据在空中停留时间短,抗干扰性高。
EnhancedShockBurstTM技术同时也减小了整个系统的平均工作电流。
在EnhancedShockBurstTM收发模式下,NRF24L01自动处理字头和CRC校验码。
在接收数据时,自动把字头和CRC校验码移去。
在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将时发送过程完成后。
4.1.1.1EnhancedShockBurstTM发射流程
A.把接收机的地址和要发送的数据按时序送入NRF24L01;
B.配置CONFIG寄存器,使之进入发送模式。
C.微控制器把CE置高(至少10us),激发NRF24L01进行EnhancedShockBurstTM发射;
D.N24L01的EnhancedShockBurstTM发射
(1)给射频前端供电;
(2)射频数据打包(加字头、CRC校验码);
(3)高速发射数据包;
(4)发射完成,NRF24L01进入空闲状态。
4.1.1.2EnhancedShockBurstTM接收流程
A.配置本机地址和要接收的数据包大小;
B.配置CONFIG寄存器,使之进入接收模式,把CE置高。
C.130us后,NRF24L01进入监视状态,等待数据包的到来;
D.当接收到正确的数据包(正确的地址和CRC校验码),NRF2401自动把字头、地址和CRC校验位移去;
E.NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;
F.微控制器把数据从NewMsg_RF2401读出;
G.所有数据读取完毕后,可以清除STATUS寄存器。
NRF2401可以进入四种主要的模式之一。
4.1.2ShockBurstTM收发模式ShockBurstTM收发模式可以与Nrf2401a,02,E1及E2兼容,具体看N-RF2401文档。
4.2空闲模式NRF24L01的空闲模式是为了减小平均工作电流而设计,其最大的优点是,实现节能的同时,缩短芯片的起动时间。
在空闲模式下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关。
4.4关机模式在关机模式下,为了得到最小的工作电流,一般此时的工作电流为900nA左右。
关机模式下,配置字的内容也会被保持在NRF2401片内,这是该模式与断电状态最大的区别。
五、配置NRF24L01模块NRF2401的所有配置工作都是通过SPI完成,共有30字节的配置字。
我们推荐NRF24L01工作于EnhancedShockBurstTM收发模式,这种工作模式下,系统的程序编制会更加简单,并且稳定性也会更高,因此,下文着重介绍把NRF24L01配置为EnhancedShockBurstTM收发模式的器件配置方法。
ShockBurstTM的配置字使NRF24L01能够处理射频协议,在配置完成后,在NRF24L01工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。
ShockBurstTM的配置字可以分为以下四个部分:
数据宽度:
声明射频数据包中数据占用的位数。
这使得NRF24L01能够区分接收数据包中的数据和CRC校验码;
地址宽度:
声明射频数据包中地址占用的位数。
这使得NRF24L01能够区分地址和数据;
地址:
接收数据的地址,有通道0到通道5的地址;
CRC:
使NRF24L01能够生成CRC校验码和解码。
当使用NRF24L01片内的CRC技术时,要确保在配置字(CONFIG的EN_CRC)中CRC校验被使能,并且发送和接收使用相同的协议。
NRF24L01配置字的CONFIG寄存器的位描述如下表所示。
NRF24L01CONFIG配置字描述
这是和89C2051单片机的应用线路图,点击这里可以下载51系列的C语言程序和汇编语言程序资料
配件:
调试电路用杜邦免焊接连接线(一捆20根优惠价:
6元,每根:
0.3元一根)
这是双头20厘米长的杜邦线,采用优质彩虹12股排线通过机器自动加工,品质有保证,现在的电子模块一般都采用标准的插针作为电路接口,杜邦线可以非常牢靠地和插针连接,无需焊接,可以快速进行电路试验,40位直排针1元一根。
六、参考源代码
#include<
reg51.h>
//<
nRF2401_Pins对应引脚>
sbitMISO=P1^3;
sbitMOSI=P1^4;
sbitSCK=P1^5;
sbitCE=P1^6;
sbitCSN=P3^7;
sbitIRQ=P1^2;
sbitLED2=P3^5;
sbitLED1=P3^4;
sbitKEY1=P3^0;
sbitKEY2=P3^1;
//SPI(nRF24L01)commands
#defineREAD_REG0x00//Definereadcommandtoregister
#defineWRITE_REG0x20//Definewritecommandtoregister
#defineRD_RX_PLOAD0x61//DefineRXpayloadregisteraddress
#defineWR_TX_PLOAD0xA0//DefineTXpayloadregisteraddress
#defineFLUSH_TX0xE1//DefineflushTXregistercommand
#defineFLUSH_RX0xE2//DefineflushRXregistercommand
#defineREUSE_TX_PL0xE3//DefinereuseTXpayloadregistercommand
#defineNOP0xFF//DefineNoOperation,mightbeusedtoreadstatusregister
//***************************************************//
//SPI(nRF24L01)registers(addresses)
#defineCONFIG0x00//'
Config'
registeraddress
#defineEN_AA0x01//'
EnableAutoAcknowledgment'
#defineEN_RXADDR0x02//'
EnabledRXaddresses'
#defineSETUP_AW0x03//'
Setupaddresswidth'
#defineSETUP_RETR0x04//'
SetupAuto.Retrans'
#defineRF_CH0x05//'
RFchannel'
#defineRF_SETUP0x06//'
RFsetup'
#defineSTATUS0x07//'
Status'
#defineOBSERVE_TX0x08//'
ObserveTX'
#defineCD0x09//'
CarrierDetect'
#defineRX_ADDR_P00x0A//'
RXaddresspipe0'
#defineRX_ADDR_P10x0B//'
RXaddresspipe1'
#defineRX_ADDR_P20x0C//'
RXaddresspipe2'
#defineRX_ADDR_P30x0D//'
RXaddresspipe3'
#defineRX_ADDR_P40x0E//'
RXaddresspipe4'
#defineRX_ADDR_P50x0F//'
RXaddresspipe5'
#defineTX_ADDR0x10//'
TXaddress'
#defineRX_PW_P00x11//'
RXpayloadwidth,pipe0'
#defineRX_PW_P10x12//'
RXpayloadwidth,pipe1'
#defineRX_PW_P20x13//'
RXpayloadwidth,pipe2'
#defineRX_PW_P30x14//'
RXpayloadwidth,pipe3'
#defineRX_PW_P40x15//'
RXpayloadwidth,pipe4'
#defineRX_PW_P50x16//'
RXpayloadwidth,pipe5'
#defineFIFO_STATUS0x17//'
FIFOStatusRegister'
//------------------------------------------------------------
//写一个字节到24L01,同时读出一个字节
ucharSPI_RW(ucharbyte)
{
ucharbit_ctr;
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;
//..thensetSCKlowagain
}
return(byte);
//returnreadbyte
//向寄存器reg写一个字节,同时返回状态字节
ucharSPI_RW_Reg(BYTEreg,BYTEvalue)
ucharstatus;
CSN=0;
//CSNlow,initSPItransaction
status=SPI_RW(reg);
//selectregister
SPI_RW(value);
//..andwritevaluetoit..
CSN=1;
//CSNhighagain
return(status);
//returnnRF24L01statusbyte
//读出bytes字节的数据
ucharSPI_Read_Buf(BYTEreg,BYTE*pBuf,BYTEbytes)
ucharstatus,byte_ctr;
//SetCSNlow,initSPItranaction
//Selectregistertowritetoandreadstatusbyte
for(byte_ctr=0;
byte_ctr<
bytes;
byte_ctr++)
pBuf[byte_ctr]=SPI_RW(0);
//
//写入bytes字节的数据
ucharSPI_Write_Buf(BYTEreg,BYTE*pBuf,BYTEbytes)
byte_ctr<
byte_ctr++)//
SPI_RW(*pBuf++);
//SetCSNhighagain
//接收函数,返回1表示有数据收到,否则没有数据接受到
unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf)
unsignedcharrevale=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
returnrevale;
//发送函数
voidnRF24L01_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);
TX.MAX_RT&
TX_DSenabled..
CE=1;
dalay10us();
//配置函数
voidnRF24L01_Config(void)
//initialio
//chipenable
CSN=1;
//Spidisable
SCK=0;
//Spiclocklineinithigh
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微型 智能 无线 模块