一、NRF24l01的双向通信
NRF24l01zu最基本的使用是:一个NRF24l01模块作为数据传输方,另一个NRF24l01作为数据接收方。但有的时候我们需要两个NRF24l01无线传输模块能够进行实时的双向通信,这个时候我们该怎么做呢?
1、首先我们可以把两个NRF24L01无线传输模块都设置为Enhanced ShockBurstTM收发模式,其中一个初始设为发送端我们可以称之为A端,另一个NRF24l01无线传输模初始设置为接收端我们称之为B端。
2、首先A端开始发送数据给B端,如果A端发送数据成功,A端接收到B端发送过来的应答信号,那么A端完成了第一次发送而B端完成了第一次接收,紧接着让A端设置成接收模式,B端设置成发送模式,如果B端发送数据给A端成功并且接收到应答信号那么说明B端完成发送A端完成接收,再让A设置为发送端,B端设置成接收端。如此循环就能够让两个NRF无线传输模块互传信息。原理非常简单就像两个人利用对讲机通讯,你讲话的时候我仔细听,我讲话的时候你仔细听,利用这个方式完成方通信。
3但有的时候因为某些原因比如某些干扰使得一次通信失败使得A和B两端同时设置为一个模式,这时就像是两个人在用对讲机的时候同时说话没有一个人去倾听对方,或者两个人同时倾听对方保持沉默,没有一个人说话,这都会导致程序卡在这里运行不下去。解决这个BUG的方法也很简单:将A端设置为发送数据失败或者接收数据失败到一定次数的时候自动转跳为另一模式。
4、下面给出简单的代码
A端要发送的数据可以在利用中断或者在死循环里面利用按键什么的更新
#define MAX 2 //接收或发送失败后