NRF L 多通道通信文档格式.docx
- 文档编号:15100716
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:15
- 大小:1.64MB
NRF L 多通道通信文档格式.docx
《NRF L 多通道通信文档格式.docx》由会员分享,可在线阅读,更多相关《NRF L 多通道通信文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
typedefunsignedcharuchar;
typedefunsignedcharuint;
/*****************NRF24L01端口定义*****************************************/
sbitMISO=P0^4;
sbitMOSI=P0^3;
sbitSCK=P0^2;
sbitCE=P0^0;
sbitCSN=P0^1;
sbitIRQ=P0^5;
/*************LCD5110I/O定义***********************************************/
sbitLCD_RST=P1^4;
sbitLCD_CE=P1^3;
sbitLCD_DC=P1^2;
sbitLCD_SCLK=P1^0;
sbitLCD_Din=P1^1;
/******************按键****************************************************/
sbitKEY1=P3^6;
sbitKEY2=P3^7;
/******************发光二极管*********************************************/
sbitled1=P1^6;
sbitled2=P1^7;
/******************NRF24L01地址宏定义*************************************/
#defineTX_ADR_WIDTH5)右移一位,准备传送下一个数据
SCK=1;
)设置SCK为高
uchar|=MISO;
thensetSCKlowagain)拉低SCK时钟产生下降沿,从MSOI送出数据,在下一次SCK为高时读入MISO
}
return(uchar);
.)CSN拉低,启动SPI通信
NRF24L01_SPI_RW(reg);
)设置读取的寄存器
reg_val=NRF24L01_SPI_RW(0);
thenreadregistervalue)读出寄存器中的数据
CSN=1;
andwritevaluetoit..)向选择的寄存器中写入数据
)右移一位,准备传送下一个数据
//(CSNhighagain)CSN拉高,终止SPI通信
return(status);
//(returnnRF24L01statusuchar)返回2401reg寄存器的状态
}
/****************************************************************************************************/
/*函数:
uintSPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars)
/*功能:
用于读数据,reg:
为寄存器地址,pBuf:
为待读出数据地址,uchars:
读出数据的个数
uintNRF24L01_SPI_Read_Buf(ucharreg,uchar*pBuf,ucharuchars)
{
uintstatus,uchar_ctr;
CSN=0;
//SetCSNlow,initSPItranaction
status=NRF24L01_SPI_RW(reg);
//Selectregistertowritetoandreadstatusuchar
for(uchar_ctr=0;
uchar_ctr<
uchars;
uchar_ctr++)
pBuf[uchar_ctr]=NRF24L01_SPI_RW(0);
//
//returnnRF24L01statusuchar
/*********************************************************************************************************
uintSPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars)
用于写数据,reg:
为待写入数据地址,uchars:
写入数据的个数
/*********************************************************************************************************/
uintNRF24L01_SPI_Write_Buf(ucharreg,uchar*pBuf,ucharuchars)
//SPI使能
uchar_ctr<
uchar_ctr++)//
NRF24L01_SPI_RW(*pBuf++);
//指向下一个数据
//关闭SPI
//返回24L01的状态
voidSetRX_Mode(void)
/*功能:
数据接收配置
voidNRF24L01_SetRX_Mode(void)
CE=0;
//片选使能
NRF24L01_SPI_RW_Reg(WRITE_REG+CONFIG,0x0f);
//IRQ收发完成中断响应,16位CRC,主接收
CE=1;
//片选失能
inerDelay_us(130);
/******************************************************************************************************/
unsignedcharnRF24L01_RxPacket(unsignedchar*rx_buf)
数据读取后放如rx_buf接收缓冲区中
unsignedcharNRF24L01_RxPacket(unsignedchar*rx_buf)
unsignedcharrevale=0;
NRF24L01_SetRX_Mode();
Delay(1000);
sta=NRF24L01_SPI_Read(STATUS);
//读取状态寄存其来判断数据接收状?
if(RX_DR)//判断是否接收到数据
{
CE=0;
//SPI使能
NRF24L01_SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);
//(readreceivepayloadfromRX_FIFObuffer)从接收缓冲器中读出数据
revale=1;
//读取数据完成标志
led2=0;
//二极管显示接没接收到数据
NRF24L01_SPI_RW_Reg(WRITE_REG+STATUS,sta);
//接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标志
CSN=0;
NRF24L01_SPI_RW(FLUSH_RX);
//用于清空FIFO!
!
关键!
防止接收先前的数据!
CSN=1;
Delay(100);
led2=1;
returnrevale;
/***********************************************************************************************************
voidnRF24L01_TxPacket(unsignedchar*tx_buf)
发送tx_buf中数据
/**********************************************************************************************************/
voidNRF24L01_TxPacket(unsignedchar*tx_buf)
//(StandByI模式)待机I模式
NRF24L01_SPI_RW(FLUSH_TX);
防止发送先前的数据!
NRF24L01_SPI_Write_Buf(WRITE_REG+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NRF 多通道通信 通道 通信