NRFL使用方法.pdf
- 文档编号:3175776
- 上传时间:2022-11-19
- 格式:PDF
- 页数:8
- 大小:359.29KB
NRFL使用方法.pdf
《NRFL使用方法.pdf》由会员分享,可在线阅读,更多相关《NRFL使用方法.pdf(8页珍藏版)》请在冰豆网上搜索。
广东顺德春暖花开自动化开发设计工作室伍耀斌NRF24L01使用方法一、模块引脚二、电路原理图广东顺德春暖花开自动化开发设计工作室伍耀斌三、操作流程单片机需预留5个或6个端口给模块使用。
分别为CE、CSN、SCK、MOSI、MISO、IRQ。
CE:
芯片的模式控制线。
在CSN为低的情况下,CE协同NRF24L01的CONFIG寄存器共同决定NRF24L01的状态CSN:
芯片的片选线,CSN为低电平芯片工作。
SCK:
芯片控制的时钟线(SPI时钟)MOSI:
芯片控制数据线(Masteroutputslaveinput主机出从机入)MISO:
芯片控制数据线(Masterinputslaveoutput主机入从机出)IRQ:
中断信号。
无线通信过程中MCU主要是通过IRQ与NRF24L01进行通信。
(可省略)3.1发射:
1)写Tx节点的地址TX_ADDR2)写Rx节点的地址(主要是为了使能AutoAck)RX_ADDR_P03)写入需发送的数据TxDate4)使能AUTOACKEN_AA5)使能PIPE0EN_RXADDR6)配置自动重发次数SETUP_RETR7)选择通信频率RF_CH8)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP9)选择通道0有效数据宽度Rx_Pw_P010)配置24L01的基本参数以及切换工作模式CONFIG。
voidNRFSetTxMode(uchar*TxDate)/发送模式CE=0;NRFWriteTxDate(W_REGISTER+TX_ADDR,TxAddr,TX_ADDR_WITDH);/写寄存器指令+P0地址使能指令+发送地址+地址宽度NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH);/为了应答接收设备,接收通道0地址和发送地址相同NRFWriteTxDate(W_TX_PAYLOAD,TxDate,TX_DATA_WITDH);/写入数据TX_DATA_WITDH为数据长度/*下面有关寄存器配置*/NRFWriteReg(W_REGISTER+EN_AA,0x01);/使能接收通道0自动应答NRFWriteReg(W_REGISTER+EN_RXADDR,0x01);/使能接收通道0NRFWriteReg(W_REGISTER+SETUP_RETR,0x0a);/自动重发延时等待250us+86us,自动重发10次NRFWriteReg(W_REGISTER+RF_CH,0x40);/选择射频通道0x40NRFWriteReg(W_REGISTER+RF_SETUP,0x07);/数据传输率1Mbps,发射功率0dBm,低噪声放大器增益NRFWriteReg(W_REGISTER+CONFIG,0x0e);/CRC使能,16位CRC校验,上电CE=1;delayms(5);/NRFDelay(5);/保持10us秒以上广东顺德春暖花开自动化开发设计工作室伍耀斌3.2接收:
初始化步骤24L01相关寄存器1)写Rx节点的地址RX_ADDR_P02)使能AUTOACKEN_AA3)使能PIPE0EN_RXADDR4)选择通信频率RF_CH5)选择通道0有效数据宽度Rx_Pw_P06)配置发射参数(低噪放大器增益、发射功率、无线速率)RF_SETUP7)配置24L01的基本参数以及切换工作模式CONFIG。
voidNRFSetRXMode()CE=0;NRFWriteTxDate(W_REGISTER+RX_ADDR_P0,TxAddr,TX_ADDR_WITDH);/接收设备接收通道0使用和发送设备相同的发送地址NRFWriteReg(W_REGISTER+EN_AA,0x01);/使能接收通道0自动应答NRFWriteReg(W_REGISTER+EN_RXADDR,0x01);/使能接收通道0NRFWriteReg(W_REGISTER+RF_CH,0x40);/选择射频通道0x40NRFWriteReg(W_REGISTER+RX_PW_P0,TX_DATA_WITDH);/接收通道0选择和发送通道相同有效数据宽度NRFWriteReg(W_REGISTER+RF_SETUP,0x07);/数据传输率1Mbps,发射功率0dBm,低噪声放大器增益NRFWriteReg(W_REGISTER+CONFIG,0x0f);/CRC使能,16位CRC校验,上电,接收模式CE=1;delayms
(1);/NRFDelay(5);四、程序说明4.1发射:
/*PD3-20脚-CE-模块芯片开启信号激活RX或TX单片机输出PD2-19脚-CSN-模块SPI片选信号单片机输出PC7-17脚-SCK-模块SPI时钟信号单片机输出PC6-16脚-MOSI-模块SPI输入信号单片机输出PC5-15脚-MISO-模块SPI输出信号单片机输入PC4-14脚-IRQ-模块可屏蔽中断信号低电平有效单片机输入*/#include#includeucharRevTempDate5;/最后一位用来存放结束标志ucharTxAddr=0x34,0x43,0x10,0x10,0x02;/发送地址/*状态标志*/ucharsta;/状态标志广东顺德春暖花开自动化开发设计工作室伍耀斌/RX_DR=sta6;/TX_DS=sta5;PLC_BitState.BitState0.Bit.M4=1;/MAX_RT=sta4;structPLC_BITSTATE/-unionBITSTATE0charall;structBIT00ucharM0:
1;/ucharM1:
1;/ucharM2:
1;/ucharM3:
1;/ucharMAX_RT:
1;/不成功返回ACK信号,此为1.不成功为0ucharTX_DS:
1;/成功返回ACK信号,此为1.不成功为0ucharRX_DR:
1;/ucharM7:
1;/Bit;BitState0;PLC_BitState;/*SPI时序函数*/ucharNRFSPI(uchardate)/*NRF24L01初始化函数*/voidNRF24L01Int()/*SPI读寄存器一字节函数*/ucharNRFReadReg(ucharRegAddr)/*SPI写寄存器一字节函数*/ucharNRFWriteReg(ucharRegAddr,uchardate)/*SPI读取RXFIFO寄存器的值*/ucharNRFReadRxDate(ucharRegAddr,uchar*RxDate,ucharDateLen)/*SPI写入TXFIFO寄存器的值*/ucharNRFWriteTxDate(ucharRegAddr,uchar*TxDate,ucharDateLen)/*NRF设置为发送模式并发送数据*/voidNRFSetTxMode(uchar*TxDate)广东顺德春暖花开自动化开发设计工作室伍耀斌/*NRF设置为接收模式并接收数据*/接收模式voidNRFSetRXMode()/*检测是否有接收到数据*/ucharCheckACK()/*判断是否接收收到数据,接到就从RX取出*/用于接收模式ucharNRFRevDate(uchar*RevDate)/*端口配置*/voidIO_config(void)原理:
1、需要发射调用:
NRFSetTxMode(TxDate1);/发送数组1(其中TxDate1为存放所发的数据)while(CheckACK();/检测是否发送完毕2、voidNRFSetTxMode(uchar*TxDate)调用到:
ucharNRFWriteTxDate(ucharRegAddr,uchar*TxDate,ucharDateLen)写寄存器TXFIFOucharNRFWriteReg(ucharRegAddr,uchardate)写寄存器配置广东顺德春暖花开自动化开发设计工作室伍耀斌4.2接收:
/*PD3-20脚-CE-模块芯片开启信号激活RX或TX单片机输出PD2-19脚-CSN-模块SPI片选信号单片机输出PC7-17脚-SCK-模块SPI时钟信号单片机输出PC6-16脚-MOSI-模块SPI输入信号单片机输出PC5-15脚-MISO-模块SPI输出信号单片机输入PC4-14脚-IRQ-模块可屏蔽中断信号低电平有效单片机输入*/#include#includeucharRevTempDate5;/最后一位用来存放结束标志ucharTxAddr=0x34,0x43,0x10,0x10,0x02;/发送地址/*状态标志*/ucharsta;/状态标志/RX_DR=sta6;/TX_DS=sta5;PLC_BitState.BitState0.Bit.M4=1;/MAX_RT=sta4;structPLC_BITSTATE/-unionBITSTATE0charall;structBIT00ucharM0:
1;/ucharM1:
1;/ucharM2:
1;/ucharM3:
1;/ucharMAX_RT:
1;/ucharTX_DS:
1;/ucharRX_DR:
1;/ucharM7:
1;/Bit;BitState0;PLC_BitState;/*SPI时序函数*/ucharNRFSPI(uchardate)/*NRF24L01初始化函数*/voidNRF24L01Int()/*SPI读寄存器一字节函数*/广东顺德春暖花开自动化开发设计工作室伍耀斌ucharNRFReadReg(ucharRegAddr)/*SPI写寄存器一字节函数*/ucharNRFWriteReg(ucharRegAddr,uchardate)/*SPI读取RXFIFO寄存器的值*/ucharNRFReadRxDate(ucharRegAddr,uchar*RxDate,ucharDateLen)/*SPI写入TXFIFO寄存器的值*/ucharNRFWriteTxDate(ucharRegAddr,uchar*TxDate,ucharDateLen)/寄存器地址/写入数据存放变量/读取数据长度/用于发送/*NRF设置为发送模式并发送数据*/voidNRFSetTxMode(uchar*TxDate)/*NRF设置为接收模式并接收数据*/接收模式voidNRFSetRXMode()/*检测是否有接收到数据*/voidCheckACK()/用于发射模式接收应答信号/*判断是否接收收到数据,接到就从RX取出*/用于接收模式ucharNRFRevDate(uchar*RevDate)/*端口配置*/voidIO_config(void)GPIO_Init(GPIOD,GPIO_PIN_3,GPIO_MODE_OUT_PP_HIGH_FAST);/PB7高速推挽输出高电平-CEHIGHGPIO_Init(GPIOD,GPIO_PIN_2,GPIO_MODE_OUT_PP_HIGH_FAST);/PB6高速推挽输出高电平-CSN(片选)GPIO_Init(GPIOC,GPIO_PIN_7,GPIO_MODE_OUT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NRFL 使用方法