2.4GHz无线模块(5)

2019-03-15 17:04

P3_4=0; P3_5=0;

P3_7=0;

break;

case 6:

P1_1=0; P1_4=1; P3_0=0; P3_1=0; P3_3=0; P3_4=0; P3_5=0;

P3_7=0;

break;

case 7:

P1_1=0; P1_4=0; P3_0=0; P3_1=1; P3_3=1; P3_4=1; P3_5=1;

P3_7=0;

break;

case 8:

P1_1=0; P1_4=0; P3_0=0; P3_1=0; P3_3=0; P3_4=0; P3_5=0;

P3_7=0;

break; default: break; } } }

}

五、工作原理

1、发送原理

由源程序主函数可知,当系统执行完初始化函数 init_NRF24L01() 后,将自动进入发送模式,再调用nRF24L01_TxPacket(unsigned char * tx_buf) 发送函数,将以定义的无字符型字符数组TxBuf数据和地址RX_ADDRESS按照时序由SPI口写入nRF24L01缓冲区,TxBuf必须在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时,就将数据包存储在RX FIFO中,利用接收函数将其读取到指定的地址,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据,函数将返回1。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。

数据存放地

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

接收函数

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

本机地址

参考源程序:

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

3、抢答器原理

发送部分利用if语句判断8个端口是否有控制信号,当某个端口有信号输入,则执行相应的语句,通过改变数组TxBuf来达到发送指定信息的目的。同时标志位Flag置1,函数进入死循环,从而达到锁定其余端口的目的。只有程序复位重新执行后,才能进行下一轮抢答。

接收部分才用循环接收的方法实现实时信号追踪,利用if语句判断数据是否接收成功,当成功接收后利用switch语句读取接收到的TxBuf信息,从而执行相应的语句实现数码管的显示和蜂鸣器的发声。


2.4GHz无线模块(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:筏板基础大体积混凝土施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: