51单片机+NRF2401收发程序

[复制链接]
查看17 | 回复0 | 2021-4-21 03:28:05 | 显示全部楼层 |阅读模式
NRF2401收发程序只需要修改参数即可实现收发功能。
  1. void NRF_SendMode(void)
  2. {
  3.         NRF_WriteBytes(TX_ADDR,TxAddr,5);    //设置发送地址               
  4.         NRF_WriteReg(EN_AA,0x01);                         //允许P0自动应答
  5.         NRF_WriteReg(EN_RXADDR,0x01);                 //P0接收
  6.         NRF_WriteBytes(RX_ADDR_P0,RxAddr,5); //自动应答地址
  7.         NRF_WriteReg(RF_CH,40);                         //频率
  8.         NRF_WriteReg(RF_SETUP,0x07);                 //功率和速度
  9.         NRF_WriteReg(CONFIG,0x0e);                 //发送模式      

  10. }

  11. void NRF_RecvMode(void)
  12. {
  13.         NRF_WriteReg(EN_RXADDR,0x01);                 //P0接收
  14.         NRF_WriteBytes(RX_ADDR_P0,RxAddr,5); //接收地址
  15.         NRF_WriteReg(EN_AA,0x01);                         //允许P0自动应答
  16.         NRF_WriteReg(RF_CH,40);                         //频率
  17.         NRF_WriteReg(RF_SETUP,0x07);                 //功率和速度                       
  18.         NRF_WriteReg(RX_PW_P0,32);         //数据有效宽度
  19.         NRF_WriteReg(CONFIG,0x0f);                 //接收模式

  20. }


  21. //返回值 0 存在设备 1 设备有问题
  22. //参数 0 发送模式   1接收模式
  23. u8 NRF_CONFIG(u8 mode)
  24. {
  25.          
  26.                 NRF_IO_Init();
  27.                 if(NRF_CheckDev()) //检测设备存在
  28.           {
  29.                                 return 0xff;
  30.                 }

  31.                 switch(mode)
  32.                 {

  33.                         case NRF_TX:NRF_SendMode();                             
  34.                                      break; //发送
  35.                         case NRF_RX:NRF_RecvMode();
  36.                                                                          break; //接收
  37.                        
  38.                         default: return 0xff;
  39.                 }
  40.                
  41.           return 0x00;
  42. }


  43. void NRF_SendData(u8 *sbuf,u8 len)
  44. {
  45.                 CE = 0;
  46.     CSN = 0;
  47.                 if(len>32)len = 32; //限制最大32个字节
  48.           NRF_SPI_RW(WR_TX_PLOAD); //发送fifo地址
  49.           while(len--)
  50.                 {
  51.                   NRF_SPI_RW(*sbuf++);
  52.                 }
  53.                 CSN = 1;
  54.                 CE = 1;
  55. }
复制代码
1.png 51d单片机_NRF24L01程序源码(整理后).zip (90.47 KB, 售价: 1 工控币)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则