天线|RF射频
直播中

杨晓静

7年用户 161经验值
私信 关注
[问答]

两块板子如何实现NRF24L01半双工通信?


        两个板子,一个做客户机,一个做服务器。



        客户机的运行原则是,先发送,再等响应,一般等响应会有超时设置。



        
[C] 纯文本查看 复制代码
int main(void){  _Init();    // 客户端程序,先发送,然后等待接收响应(一般规定超时)。如此循环。  {    u8 lBuffer[33];    u8 i = 0;        while(i < 100)    {      oWireless(WIRELESS1, gEnvironment.Channel, "%032d", i);       if(iWireless(WIRELESS1, gEnvironment.Channel, lBuffer) == TRUE) // iWireless 内部差不多 700ms 会超时        i = fun_StringToNumber(lBuffer, 0, 32) + 1;    }  }      while(TRUE)  {    LED1 = !LED1;    Wait_s(2);  }      }
        




        服务器的运行原则是,先无限等, 收到后,再发送响应,一般发送后可不理会。



        
[C] 纯文本查看 复制代码
int main(void){  _Init();    oVoice("sound218[p1000]欢迎使用欧文特斯体质测试系统");  l5_SetTestRunningState(FALSE);  // 服务器程序,无限收,收到后发送。如此循环  {    u8 lBuffer[33];    u8 i;        while(i < 100)    {      while(iWireless(WIRELESS1, gEnvironment.Channel, lBuffer) == FALSE) { ;}            i = fun_StringToNumber(lBuffer, 0, 32) + 1;      oWireless(WIRELESS1, gEnvironment.Channel, "%032d", i);     }  }    while(TRUE)  {    LED1 = !LED1;    Wait_s(2);  }      }
        




双方通信的过程是在互相发送一个数,收到后递增返回,对方收到后再递增返回。最终双方将这个数增加到100,退出。

回帖(3)

h1654155275.5795

2020-4-24 07:28:34


        信息显示的是客户机程序的调试输出



       



       



        可以看出,信号接收到不是很顺畅,有丢包现象。当我身体处在某个位置时,信号特别好。看来受干扰还还挺严重的。不知道怎么解决?难道要加天线么?

举报

李姜芫

2020-4-24 07:34:58
谢谢分享....
举报

刘琬婷

2020-4-24 07:50:47
楼主,客户端和服务器 是用NRF24L01通道几  进行通信,若不是采用通道0 请教下如何配置其他通道通信,比如通道1
举报

更多回帖

相关问答

nRF24L01
发帖
登录/注册
×
20
完善资料,
赚取积分