2.4G NRF2401的无线通讯实现

描述

  RF24L01+,是工作在2.4~2.5GHz 频段的,具备自动重发功能,6 个数据传输通道,最大无线传输速率为2Mbits。MCU 可与该芯片通过SPI 接口访问芯片的寄存器进行配置,达到控制模块、通过该模块实现无线通讯的目的。

  具体细节参考《《野火STM32--2.4G无线传输》》

  优点:不需要建立连接就可以进行收发

  PCB管脚

 

无线通讯

 

  其中各个接口作用如下

 

无线通讯

 

  在应用中我们需要一对收发,也就是一个主机和一个从机。主机和从机的驱动部分是一样的(配置文件SPI_NRF.c 文件相同),区别是main函数中调用的模式不同,主机一般是发送模式NRF_TX_Mode();,而从机采用的是接收模式 NRF_RX_Mode();

  应用的基本流程

  注意事项:

  (1)首先要检查接线,一般配置的是SPI1,然后要对应程序里面的配置来接线

  SPI1

  SCK = PA5 MISO = PA6 MOSI = PA7

  CE = PA4 CSN =PC4 IRQ = PC5

 

无线通讯

 

  后两个是作为普通IO口,任意管脚均可

  从机部分:

  (1)SPI_NRF_Init(); //初始化SPI接口

  (2)NRF_RX_Mode(); // 设置为接收模式

  (3)while循环里等待接收,判断接收状态,并进行接收

  #include “stm32f10x.h”#include “bsp_usart1.h”#include “bsp_spi_nrf.h”u8 status; //用于判断接收/发送状态u8 rxbuf[4]; //接收缓冲u8 i;

  int main(void)

  {

  /* 串口1初始化 */

  USART1_Config();

  /*SPI接口初始化*/

  SPI_NRF_Init();

  printf(“\r\n 这是一个 NRF24L01 无线传输实验 \r\n”);

  printf(“\r\n 这是无线传输 从机端 的反馈信息\r\n”);

  printf(“\r\n 正在检测NRF与MCU是否正常连接。。。\r\n”); /*检测NRF模块与MCU的连接*/

  status = NRF_Check();

  if(status == SUCCESS)

  printf(“\r\n NRF与MCU连接成功\r\n”);

  else

  printf(“\r\n 正在检测NRF与MCU是否正常连接。。。\r\n”);

  NRF_RX_Mode(); // 设置为接收模式

  printf(“\r\n 从机端 进入接收模式\r\n”); while(1)

  {

  /*等待接收数据*/

  status = NRF_Rx_Dat(rxbuf); /*判断接收状态*/

  switch(status)

  { case RX_DR: for(i=0;i《4;i++)

  {

  printf(“\r\n 从机端 接收到 主机端 发送的数据为:%d \r\n”,rxbuf[i]);

  }break;

  case ERROR:

  printf(“\r\n 从机端 接收出错。 \r\n”);break;

  }

  }

  }

  主机部分:

  (1)SPI_NRF_Init(); //初始化SPI接口

  (2)NRF_TX_Mode(); // 设置为发送模式

  (3)发送数据,查看发送状态,否则重发。比如用按键中断来进行一次发送

  注:一般都会显示超时,但是实际接收端有接收到。

  初始化和配置与从机相同,除了TX模式

  发送部分的代码:

  void EXTI0_IRQHandler(void)

  { int i=0; if(EXTI_GetITStatus(EXTI_Line0) != RESET) // 确保是否产生了EXTI Line中断!! { for(i=0;i《4;i++)

  txbuf[i]+=1;

  printf(“\r\n exit \r\n”);

  status = NRF_Tx_Dat(txbuf);

  switch(status)

  { case MAX_RT:

  printf(“\r\n 主机端 没接收到应答信号,发送次数超过限定值,发送失败。 \r\n”); break; case ERROR:

  printf(“\r\n 未知原因导致发送失败。 \r\n”); break; case TX_DS:

  printf(“\r\n 主机端 接收到 从机端 的应答信号,发送成功! \r\n”);

  break;

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分