NRF24L01只能设置为发射模式,或者接收模式,可以设置手动应答,笔者这里只从逻辑上写一种最简单的通信方式,对数据的时效性要求不是很高,所以采用这种方式,为各位提供一种思路
思想如下:
核心思想就是发送一次,然后等待接收,如长时间没有接收到数据就再发送一次,会存在主从两机同时处于发送接收状态,不过这种概率较低,当有一次数据传输成功后,就进入“默契配合”状态了,即:
主:发送->接收->发送->接收->发送
从:接收->发送->接收->发送->接收
伪代码:
int count=0;
for(;;)
{
TX_Mode();//设置为发送模式
osDelay(1);
NRF_SEND();//发送数据
osDelay(1);
RX_Mode();//设置为接收模式
while(1)
{
if(RC_Analy()==1) count++;//进行数据接收,若接收失败则计数一次
else {count=0;break;}//接收到数据提前接收接收,跳出进入发射模式
if(count>=10) {count=0;break;}//计数超过十次认为对方也处于接收模式,直接跳出重新发荣数据让对方接收数据
osDelay(1);
}
}