版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——Nrf24L01無線收發(fā)子程序
本程序整理于無線收發(fā)模塊包括api.h和89lv51.c已通過開發(fā)板調(diào)試
Nrf24L01無線收發(fā)子程序
2023-01-2221:39
本程序整理于無線收發(fā)模塊包括api.h和89lv51.c已通過開發(fā)板調(diào)試
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
本程序整理于無線收發(fā)模塊包括api.h和89lv51.c已通過開發(fā)板調(diào)試
{
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:
本程序整理于無線收發(fā)模塊包括api.h和89lv51.c已通過開發(fā)板調(diào)試
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
本程序整理于無線收發(fā)模塊包括api.h和89lv51.c已通過開發(fā)板調(diào)試
}
/**************************************************/
/**************************************************
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬教版必修1歷史上冊月考試卷含答案
- 二零二五版電力工程安全風(fēng)險評估咨詢合同4篇
- 二零二五年度勞動合同管理專項(xiàng)審計(jì)與優(yōu)化合同3篇
- 2025年度高新技術(shù)產(chǎn)業(yè)研發(fā)中心項(xiàng)目派遣人員勞動合同簽訂及調(diào)整協(xié)議3篇
- 2025版內(nèi)部股權(quán)激勵與員工股權(quán)激勵計(jì)劃合同4篇
- 2025年度門衛(wèi)崗位績效考核合同范本3篇
- 二零二五年度農(nóng)業(yè)蔬菜大棚租賃與農(nóng)業(yè)科技推廣合同4篇
- 二零二五年度古法工藝木屋建造技藝傳承合同3篇
- 二零二五版養(yǎng)老產(chǎn)業(yè)綜合服務(wù)合同匯編4篇
- 二零二五版門面鋪面租賃合同-含物業(yè)維護(hù)服務(wù)條款4篇
- 勞務(wù)協(xié)議范本模板
- 2024年全國職業(yè)院校技能大賽高職組(生產(chǎn)事故應(yīng)急救援賽項(xiàng))考試題庫(含答案)
- 2025大巴車租車合同范文
- 老年上消化道出血急診診療專家共識2024
- 人教版(2024)數(shù)學(xué)七年級上冊期末測試卷(含答案)
- 2024年國家保密培訓(xùn)
- 2024年公務(wù)員職務(wù)任命書3篇
- CFM56-3發(fā)動機(jī)構(gòu)造課件
- 會議讀書交流分享匯報(bào)課件-《殺死一只知更鳥》
- 2025屆撫州市高一上數(shù)學(xué)期末綜合測試試題含解析
- 《霧都孤兒人物分析4000字(論文)》
評論
0/150
提交評論