![Nrf24L01无线收发子程序_第1页](http://file4.renrendoc.com/view/cd67cfbd9309471bd8ba2dea1c6b16c6/cd67cfbd9309471bd8ba2dea1c6b16c61.gif)
![Nrf24L01无线收发子程序_第2页](http://file4.renrendoc.com/view/cd67cfbd9309471bd8ba2dea1c6b16c6/cd67cfbd9309471bd8ba2dea1c6b16c62.gif)
![Nrf24L01无线收发子程序_第3页](http://file4.renrendoc.com/view/cd67cfbd9309471bd8ba2dea1c6b16c6/cd67cfbd9309471bd8ba2dea1c6b16c63.gif)
![Nrf24L01无线收发子程序_第4页](http://file4.renrendoc.com/view/cd67cfbd9309471bd8ba2dea1c6b16c6/cd67cfbd9309471bd8ba2dea1c6b16c64.gif)
![Nrf24L01无线收发子程序_第5页](http://file4.renrendoc.com/view/cd67cfbd9309471bd8ba2dea1c6b16c6/cd67cfbd9309471bd8ba2dea1c6b16c65.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——Nrf24L01无线收发子程序
本程序整理于无线收发模块包括api.h和89lv51.c已通过开发板调试
Nrf24L01无线收发子程序
2023-01-2221:39
本程序整理于无线收发模块包括api.h和89lv51.c已通过开发板调试
api.h
//BYTEtypedefinition
#ifndef_BYTE_DEF_
#define_BYTE_DEF_
typedefunsignedcharBYTE;
#endif/*_BYTE_DEF_*/
//****************************************************************//
//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'registeraddress
#defineEN_RXADDR0x02//'EnabledRXaddresses'registeraddress
#defineSETUP_AW0x03//'Setupaddresswidth'registeraddress
#defineSETUP_RETR0x04//'SetupAuto.Retrans'registeraddress
#defineRF_CH0x05//'RFchannel'registeraddress
#defineRF_SETUP0x06//'RFsetup'registeraddress
#defineSTATUS0x07//'Status'registeraddress
#defineOBSERVE_TX0x08//'ObserveTX'registeraddress
#defineCD0x09//'CarrierDetect'registeraddress
#defineRX_ADDR_P00x0A//'RXaddresspipe0'registeraddress
#defineRX_ADDR_P10x0B//'RXaddresspipe1'registeraddress
#defineRX_ADDR_P20x0C//'RXaddresspipe2'registeraddress
#defineRX_ADDR_P30x0D//'RXaddresspipe3'registeraddress
#defineRX_ADDR_P40x0E//'RXaddresspipe4'registeraddress
#defineRX_ADDR_P50x0F//'RXaddresspipe5'registeraddress
#defineTX_ADDR0x10//'TXaddress'registeraddress
#defineRX_PW_P00x11//'RXpayloadwidth,pipe0'registeraddress
#defineRX_PW_P10x12//'RXpayloadwidth,pipe1'registeraddress
#defineRX_PW_P20x13//'RXpayloadwidth,pipe2'registeraddress
#defineRX_PW_P30x14//'RXpayloadwidth,pipe3'registeraddress
#defineRX_PW_P40x15//'RXpayloadwidth,pipe4'registeraddress
#defineRX_PW_P50x16//'RXpayloadwidth,pipe5'registeraddress
本程序整理于无线收发模块包括api.h和89lv51.c已通过开发板调试
{
j=108;
;
while(j--);
}
}
/**************************************************
Function:SPI_RW();
Description:
WritesonebytetonRF24L01,andreturnthebyteread
fromnRF24L01duringwrite,accordingtoSPIprotocol
/**************************************************/
ucharSPI_RW(ucharbyte)
{
ucharbit_ctr;
for(bit_ctr=0;bit_ctr8;bit_ctr++)//output8-bit
{
MOSI=(byte0x80);//output'byte',MSBtoMOSI
byte=(byte1);//shiftnextbitintoMSB..
SCK=1;//SetSCKhigh..
byte|=MISO;//capturecurrentMISObit
SCK=0;//..thensetSCKlowagain
}
return(byte);//returnreadbyte
}
/**************************************************/
/**************************************************
Function:SPI_RW_Reg();
Description:
Writesvalue'value'toregister'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
}
/**************************************************/
/**************************************************
Function:SPI_Read();
Description:
本程序整理于无线收发模块包括api.h和89lv51.c已通过开发板调试
ReadonebytefromnRF24L01register,'reg'
/**************************************************/
BYTESPI_Read(BYTEreg)
{
BYTEreg_val;
CSN=0;//CSNlow,initializeSPIcommunication...
SPI_RW(reg);//Selectregistertoreadfrom..
reg_val=SPI_RW(0);//..thenreadregistervalue
CSN=1;//CSNhigh,terminateSPIcommunication
return(reg_val);//returnregistervalue
}
/**************************************************/
/**************************************************
Function:SPI_Read_Buf();
Description:
Reads'bytes'#ofbytesfromregister'reg'
TypicallyusedtoreadRXpayload,Rx/Txaddress
/**************************************************/
ucharSPI_Read_Buf(BYTEreg,BYTE*pBuf,BYTEbytes)
{
ucharstatus,byte_ctr;
CSN=0;//SetCSNlow,initSPItranaction
status=SPI_RW(reg);//Selectregistertowritetoandreadstatusbyte
for(byte_ctr=0;byte_ctrbytes;byte_ctr++)
pBuf[byte_ctr]=SPI_RW(0);//PerformSPI_RWtoreadbytefromnRF24L01CSN=1;//SetCSNhighagain
return(status);//returnnRF24L01statusbyte
}
/**************************************************/
/**************************************************
Function:SPI_Write_Buf();
Description:
Writescontentsofbuffer'*pBuf'tonRF24L01
TypicallyusedtowriteTXpayload,Rx/Txaddress
/**************************************************/
ucharSPI_Write_Buf(BYTEreg,BYTE*pBuf,BYTEbytes)
{
ucharstatus,byte_ctr;
CSN=0;//SetCSNlow,initSPItranaction
status=SPI_RW(reg);//Selectregistertowritetoandreadstatusbyte
for(byte_ctr=0;byte_ctrbytes;byte_ctr++)//thenwriteallbyteinbuffer(*pBuf)
SPI_RW(*pBuf++);
CSN=1;//SetCSNhighagain
return(status);//returnnRF24L01statusbyte
本程序整理于无线收发模块包括api.h和89lv51.c已通过开发板调试
}
/**************************************************/
/**************************************************
Function:RX_Mode();
Description:
ThisfunctioninitializesonenRF24L01deviceto
RXMode,setRXaddress,writesRXpayloadwidth,
selectRFchannel,datarateLNAHCURR.
Afterinit,CEistoggledhigh,whichmeansthat
thisdeviceisnowreadytoreceiveadatapacket.
/**************************************************/
voidRX_Mode(void)
{
CE=0;
SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//UsethesameaddressontheRXdeviceastheTXdevice
SPI_RW_Reg(WRITE_REG+EN_AA,0x01);//EnableAuto.Ack:Pipe0
SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);//EnablePipe0
SPI_RW_Reg(WRITE_REG+RF_CH,40);//SelectRFchannel40
SPI_RW_Reg(WRITE_REG+RX_PW_P0,TX_PLOAD_WIDTH);//SelectsameRXpayloadwidthasTXPayloadwidth
SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//TX_PWR:0dBm,Datarate:2Mbps,LNA:HCURR
SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);//SetPWR_UPbit,enableCRC(2bytes)Prim:RX.RX_DRenabled..
CE=1;//SetCEpinhightoenableRXdevice
//Thisdeviceisnowreadytoreceiveonepacketof16bytespayloadfromaTXdevicesendingtoaddress
//'3443101001',withautoacknowledgment,retransmitcountof10,RFchannel40anddatarate=2Mbps.
}
/**************************************************/
/**************************************************
Function:TX_Mode();
Description:
ThisfunctioninitializesonenRF24L01deviceto
TXmode,setTXaddress,setRXaddressforauto.ack,
fillTXpayload,selectRFchannel,datarateTXpwr.
PWR_UPisset,CRC(2bytes)isenabled,PRIM:TX.
ToDo:Onehighpulse(10us)onCEwillnowsendthis
packetandexpextanacknowledgmentfromtheRXdevice.
/************************
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- SHMT-IN-3-生命科学试剂-MCE-3565
- 2025年度知识产权合同变更补充协议书
- 2025年度员工股份激励与股权锁定协议
- 二零二五年度荒山承包造林生态保护合同
- 二零二五年度教育投资银行担保协议
- 施工现场施工防事故制度
- 父母如何培养孩子的批判性思维与决策能力
- 科技领域安全风险评估及保障措施
- DB6528T 074-2024库尔勒香梨人工授粉技术规程
- XX市幼儿园学生家长安全责任合同2025
- 雕塑采购投标方案(技术标)
- 演艺项目投资计划书
- 医疗器械耗材售后服务承诺书
- 北京房地产典当合同书
- 文学类文本阅读 高一语文统编版暑假作业
- 文明施工考核标准
- 《雾都孤儿人物分析4000字(论文)》
- MZ/T 039-2013老年人能力评估
- GB/T 6329-1996胶粘剂对接接头拉伸强度的测定
- 2023年辽宁铁道职业技术学院高职单招(语文)试题库含答案解析
- (2019新教材)人教A版高中数学必修第二册全册学案
评论
0/150
提交评论