NRF工作原理

NRF工作原理
NRF工作原理

五、工作原理

1、发送原理

由源程序主函数可知,当系统执行完初始化函数init_NRF24L01() 后,将自动进入发送模式,再调用nRF24L01_TxPacket(unsignedchar * tx_buf) 发送函数,将以定义的无字符型字符数组TxBuf数据和地址RX_ADDRESS按照时序由SPI口写入nRF24L01缓冲区,Tx Buf必须在CSN为低时连续写入,而RX_ADDRESS在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据,若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号。如果收到应答,则认为此次通信成功,TX_ DS置高,同时TxBuf从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便在次重发; MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE 为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。

数据

参考源程序:uchar TxBuf[2]={0x01,0x02,};

发送函数

参考源程序:nRF24L01_TxPacket(TxBuf);

接收地址

参考源程序:

uint const RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};

2、接收原理

接收数据时,首先将nRF24L01配置为接收模式SetRX_Mode(),接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RXFIFO 中,利用接收函数将其读取到指定的地址,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据,函数将返回1。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。

数据存放地

参考源程序:uchar RxBuf[2];

接收函数

参考源程序:unsigned char nRF24L01_RxPacket(unsignedchar* rx_buf)

本机地址

参考源程序:

uint const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};

相关主题
相关文档
最新文档