野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13150|回复: 2

NRF传输问题

[复制链接]
发表于 2017-4-8 22:16:43 | 显示全部楼层 |阅读模式
最近在用stm32做四轴,现在卡在nrf传输问题身上,参考了其他开源飞控的nrf代码,nrf可以与单片机通信,但是,两块nrf之间传输不了数据。

飞控方:初始化成功后,检测与单片机的通信,结果是成功的,定时检测接收中断标志位,发现一直是0.

遥控方:初始化成功后,检测与单片机的通信,结果是成功的,定时发送摇杆数据,定时接收飞控传下来的数据,也是0.
回复

使用道具 举报

 楼主| 发表于 2017-4-8 22:17:43 | 显示全部楼层
  1. void Nrf24l01_Init(u8 model, u8 ch)
  2. {
  3.         SPI_CE_L();
  4.         NRF_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);        //D′RX½úμãμØÖ·
  5.         NRF_Write_Buf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);                 //D′TX½úμãμØÖ·  
  6.         NRF_Write_Reg(NRF_WRITE_REG+EN_AA,0x01);                                                                                                         //ê1Äüí¨μà0μÄ×Ô¶ˉó|′e
  7.         NRF_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);                                                                                        //ê1Äüí¨μà0μĽóêÕμØÖ·
  8.         NRF_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);                                                                                        //éèÖÃ×Ô¶ˉÖØ·¢¼ä¸ôê±¼ä:500us;×î′ó×Ô¶ˉÖØ·¢′Îêy:10′Î
  9.         NRF_Write_Reg(NRF_WRITE_REG+RF_CH,ch);                                                                                                                //éèÖÃRFí¨μàÎaCHANAL
  10.         NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);                                                                                                 //éèÖÃTX·¢éä2Îêy,0dbÔöòæ,2Mbps,μíÔëéùÔöòæ¿aÆô
  11.         //NRF_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x07);                                                                                                 //éèÖÃTX·¢éä2Îêy,0dbÔöòæ,1Mbps,μíÔëéùÔöòæ¿aÆô
  12. /////////////////////////////////////////////////////////
  13.         if(model==1)                                //RX
  14.         {
  15.                 NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);                                                                //Ñ¡Ôñí¨μà0μÄóDD§êy¾Y¿í¶è
  16.                 NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f);                    // IRQêÕ·¢íê3éÖD¶Ï¿aÆô,16λCRC,Ö÷½óêÕ
  17.         }
  18.         else if(model==2)                //TX
  19.         {
  20.                 NRF_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);                                                                //Ñ¡Ôñí¨μà0μÄóDD§êy¾Y¿í¶è
  21.                 NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);                    // IRQêÕ·¢íê3éÖD¶Ï¿aÆô,16λCRC,Ö÷·¢Ëí
  22.         }
  23.         else if(model==3)                //RX2
  24.         {
  25.                 NRF_Write_Reg(FLUSH_TX,0xff);
  26.                 NRF_Write_Reg(FLUSH_RX,0xff);
  27.                 NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0f);                    // IRQêÕ·¢íê3éÖD¶Ï¿aÆô,16λCRC,Ö÷½óêÕ
  28.                
  29.                 Spi_RW(0x50);
  30.                 Spi_RW(0x73);
  31.                 NRF_Write_Reg(NRF_WRITE_REG+0x1c,0x01);
  32.                 NRF_Write_Reg(NRF_WRITE_REG+0x1d,0x06);
  33.         }
  34.         else                                                                //TX2
  35.         {
  36.                 NRF_Write_Reg(NRF_WRITE_REG + CONFIG, 0x0e);                    // IRQêÕ·¢íê3éÖD¶Ï¿aÆô,16λCRC,Ö÷·¢Ëí
  37.                 NRF_Write_Reg(FLUSH_TX,0xff);
  38.                 NRF_Write_Reg(FLUSH_RX,0xff);
  39.                
  40.                 Spi_RW(0x50);
  41.                 Spi_RW(0x73);
  42.                 NRF_Write_Reg(NRF_WRITE_REG+0x1c,0x01);
  43.                 NRF_Write_Reg(NRF_WRITE_REG+0x1d,0x06);
  44.         }
  45.         SPI_CE_H();
  46.         delay_ms(100);
  47. }
  48. //初始化代码
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-8 22:18:56 | 显示全部楼层
  1. void Nrf_Check_Event(void)
  2. {
  3.         u8 sta = NRF_Read_Reg(NRF_READ_REG + NRFRegSTATUS);
  4.         ////////////////////////////////////////////////////////////////
  5.         ////////////////////////////////////////////////////////////////
  6.         if(sta & (1<<RX_DR))      //&#189;óê&#213;&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;
  7.         {
  8.                 u8 rx_len = NRF_Read_Reg(R_RX_PL_WID);
  9.                 if(rx_len<33)
  10.                 {
  11.                         NRF_Read_Buf(RD_RX_PLOAD,NRF24L01_RXDATA,rx_len);// read receive payload from RX_FIFO buffer
  12.                         Data_Receive_Anl(NRF24L01_RXDATA,rx_len);
  13.                 }
  14.                 else
  15.                 {
  16.                         NRF_Write_Reg(FLUSH_RX,0xff);//&#199;&#229;&#191;&#213;&#187;o3&#229;&#199;&#248;
  17.                 }
  18.         }
  19.         ////////////////////////////////////////////////////////////////
  20.         ////////////////////////////////////////////////////////////////
  21.         if(sta & (1<<TX_DS))
  22.         {
  23.                
  24.         }
  25.         ////////////////////////////////////////////////////////////////
  26.         ////////////////////////////////////////////////////////////////
  27.         if(sta & (1<<MAX_RT))
  28.         {
  29.                 if(sta & 0x01)        //TX FIFO FULL
  30.                 {
  31.                         NRF_Write_Reg(FLUSH_TX,0xff);
  32.                 }
  33.         }//这个是定时检查标志位的代码,
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-15 18:08 , Processed in 0.046528 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表