绿色nrf24l01开发包-24l01kl-技术开发_第1页
绿色nrf24l01开发包-24l01kl-技术开发_第2页
绿色nrf24l01开发包-24l01kl-技术开发_第3页
绿色nrf24l01开发包-24l01kl-技术开发_第4页
绿色nrf24l01开发包-24l01kl-技术开发_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、模块介绍KL_NRF24L01尺寸图(单位KL_NRF24L01SE模块实物图(SMA接口KL_NRF24L01SE模块尺寸图(单位2.4Ghz全球开放ISM频段免证使126内置硬件CRC低功耗1.9-3.6V工作,待机模式下状态为22uA;掉电模内置2.4Ghz供中断指示),可直接接各种单片机使用,编程非常方便标准DIP间距接口,便于应EnhancedShockBurstAutomaticpackethandling,Autopackettransactionhandling,具有可选的内烧毁模果是3.3V的,可以直接和RF2401模块的IO口线请注意模请注意模块插接的方向与接头座子的连接方通信成功接口VCC脚接电压范围为1.9V~3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。电压3.3V左右。除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口硬件上面没有I的单片机也可以控制本模块,用普通单片机口模拟P9脚接地脚,需要和母板的逻辑地连接起来;2脚和9密脚插针,或者其他形式的接口,可以们定做。KL_NRF24L01模块使用Nordic公司的nRF24L01开发而成KL_NRF2401有工作模式有四种收发模式配置模式空闲模式工作模式PWR_UPregister、PRIM_RXregisterCE定,详见收发收发模式有EnhancedShockBurstTM收发模式、ShockBurstTM收发模式EnhancedShockBurstTM收发模EnhancedShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据在空中停留时间短,性高。EnhancedShockBurstTM技术在EnhancedShockBurstTM收发模式下,KL_NRF24L01自动处理字头EnhancedShockBurstTM发射流把的地址和要发送的数据按时序送入配置CONFIG寄存器,使之进入发送模式。C.微控制器把CE置(至少10us),激发KL_NRF24L01进行 ShockBurstTM发射D.KL_NRF24L01的EnhancedShockBurstTM发射(1)给射频前端供(4)射完成KL_NRF24L01进入空闲状态。4.1.1.2EnhancedShockBurstTM接收流程A.置本机地址和要接收的数据包大B.130us后,KL_NRF24L01进入监视状态,等待数据当接收到正确的数据包(正确的地址和CRC自动把字头、地址和CRC校验位移去KL_NRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;F.微控制器把数据从KL_NRF24L01读出;G.所有数据完毕后,可以清除STATUS寄存器KL_NRF24L01可以进入四种主要的模式之一ShockBurstTM空闲模4.4机模900nA左右。关机模式下,配置字的内容也会被保持在KL_NRF24L01片五、配置KL_NRF24L01模KL_NRF24L01工作于EnhancedShockBurstTM收发模式,这因此,下文着重介绍把KL_NRF24L01配置为EnhancedShockBurstTMShockBurstTM的配置字可以分为以下四个部分地址:接收数据的地址,有通道0到通道5CRC:使KL_NRF24L01能够生成CRC和KL_NRF24L01配置字的CONFIG寄存器的位描述如下表所示。:#include<reg52.h>#includetypedefunsignedcharuchar;typedefunsignedcharuint;sbitMISO sbitMOSI sbit sbit sbit sbit sbitKEY1=P2^6;sbitsbitled1=P2^4;sbit#defineTX_ADR_WIDTH //5uintsTXaddresswidth#defineRX_ADR_WIDTH //5uintsRXaddresswidth#defineTX_PLOAD_WIDTH //20uintsTXpayload#defineRX_PLOAD_WIDTH 20 //20uintsTXpayloaduintconstTX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; #defineREAD_REG //读寄存器指令#defineWRITE_REG //写寄存器指令#defineRD_RX_PLOAD //接收数据指令#defineWR_TX_PLOAD //写待发数据指令#defineFLUSH_TX //冲洗发送FIFO指令#define 0xE2 //冲洗接收FIFO指#define //#define ////*******************SPI(nRF24L01)寄存器地址#define //配置收发状态,CRC#defineEN_AA 0x01 //自动应答功能设置#defineEN_RXADDR //可用信道设置#defineSETUP_AW //收发地址宽度设置#defineSETUP_RETR //自动重发功能设置#defineRF_CH //工作频率设置#define //#defineSTATUS //状态寄存器#defineOBSERVE_TX //发送监测功能#defineCD //地址检测#defineRX_ADDR_P0 0x0A//频道0接收数据地址#defineRX_ADDR_P1 0x0B//频道1接收数据地址#defineRX_ADDR_P2 0x0C//频道2接收数据地址#defineRX_ADDR_P3 0x0D//频道3接收数据地址#defineRX_ADDR_P4 0x0E//频道4接收数据地址#defineRX_ADDR_P5 0x0F//频道5接收数据地址#defineTX_ADDR 0x10//发送地址寄存器#defineRX_PW_P0 //接收频道0接收数据长度#defineRX_PW_P1 //接收频道0接收数据长度#defineRX_PW_P2 //接收频道0接收数据长度#defineRX_PW_P3 //接收频道0接收数据长度#defineRX_PW_P4 //接收频道0接收数据长度#defineRX_PW_P5 //接收频道0接收数据长度#defineFIFO_STATUS voidDelay(unsignedints);voidinerDelay_us(unsignedcharn);voidinit_NRF24L01(void);uintSPI_RW(uintuchar);voidSetRX_Mode(void);uintSPI_RW_Reg(ucharreg,ucharuintSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars);uintSPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars);unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf);voidnRF24L01_TxPacket(unsignedchar*tx_buf);voidDelay(unsignedints){unsignedinti;for(i=0;i<s;} bdatasta; sbitRX_DR=sta^6;sbitTX_DSsbit voidinerDelay_us(unsignedcharn){for(;n>0;n--}voidinit_NRF24L01(void){ //Spi SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS, SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);SPI_RW_Reg(WRITE_REG+EN_AA, 频道0自 ACK应答允+, 需要多频道可以参考Page21SPI_RW_Reg(WRITE_REG+RF_CH,0); SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//设置接收数据长度,+, //设置发射速率为1MHZ,发}/*函数:uintSPI_RW(uintuintSPI_RW(uintuchar){uintfor(bit_ctr=0;bit_ctr<8;bit_ctr++)//output8-{MOSI=(uchar&0x80); //output'uchar',MSBtoMOSIuchar=(uchar<<1); //shiftnextbitintoMSB..SCK= //SetSCKuchar|= //capturecurrentMISOSCK= //..thensetSCKlow} //returnread}/*函数:ucharSPI_Read(ucharucharSPI_Read(uchar{ucharCSN= //CSNlow,initializeSPI //Selectregistertoreadfrom..reg_val=SPI_RW(0); //..thenreadregistervalueCSN= //CSNhigh,terminateSPI //returnregister}uintSPI_RW_Reg(ucharreg,ucharvalue){uintCSN=0; //CSNlow,initSPItransactionstatus=SPI_RW(reg); //selectregister //..andwritevaluetoCSN= //CSNhigh }/*函数:uintSPI_Read_Buf(ucharreg,uchar*pBuf,uchar/*功能:用于读数据,reg:为寄存器地址,pBuf:为待读出数据地址,uchars:读出数据的uintSPI_Read_Buf(ucharreg,uchar*pBuf,uchar{uintCSN= //SetCSNlow,initSPIstatus= //SelectregistertowritetoandreadstatuspBuf[uchar_ctr]=SPI_RW(0); CSN= }/*函数:uintSPI_Write_Buf(ucharreg,uchar*pBuf,uchar/*功能:用于写数据:为寄存器地址,pBuf:为待写入数据地址,ucharsuintSPI_Write_Buf(ucharreg,uchar*pBuf,uchar{uintCSN //SPI使status=for(uchar_ctr=0;uchar_ctr<uchars;uchar_ctr++)//CSN=1; }/*函数:voidvoidSetRX_Mode(void){SPI_RW_Reg(WRITE_REG+CONFIG,0x0f); //IRQ收发完成中断响应,16位CRC,主接收CE=}/*函数:unsignedcharnRF24L01_RxPacket(unsignedchar*unsignedcharnRF24L01_RxPacket(unsignedchar*{unsignedchar //状态寄存其来判断数据接收状 //{CE //SPI使 //read RX_FIFOrevale //数据完成标} return}/*函数:voidnRF24L01_TxPacket(unsignedchar*/*tx_bufvoidnRF24L01_TxPacket(unsignedchar*{ //StandByISPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);,, //装载数SPI_RW_Reg(WRITE_REG+CONFIG, }voidmain(void){unsignedchartfunsignedcharTxBuf[20]={0}; unsignedcharRxBuf[20]={0};init_NRF24L01();TxBuf[1]=1;TxBuf[2]=1 {if(KEY1==0{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论