中级会员 
   
	- 积分
 - 216
 
        - 金钱
 - 216 
 
       - 注册时间
 - 2023-5-13
 
      - 在线时间
 - 33 小时
 
 
 
 | 
 
 
 楼主 |
发表于 2024-8-27 10:06:16
|
显示全部楼层
 
 
 
 
大佬 你好 现在我把发送和接收的数据已经调试通了,传输的数据宽度为32字节,但还是遇到了传输速率的问题,我发送端设置的是1秒发送1000次采集的数据,但是实测了一下 发现接收的数据是在80-90个之间,请问这是什么原因 该怎么提高呢? 
- //发送代码
 
 - int main(void)
 
 - { 
 
 -         ALL_init();
 
 -         
 
 -         u8 TxBuffer[2];
 
 -         
 
 -         while(1)
 
 -   {
 
 -                 if(flagTime) //设置采集1s
 
 -                 {
 
 -                         if(flag)   //定义采样率
 
 -                         {
 
 -                                  flag=0;
 
 -                                  TxBuffer[0] = ADC_ConvertedValue[0]&0xFF;           //取低8位
 
 -                                  TxBuffer[1] = (ADC_ConvertedValue[0] >> 8) & 0xFF;  // 取高8位                
 
 -                                 
 
 -                                  NRF24L01_Send(TxBuffer);
 
 -                          }                
 
 -                 }
 
 -         }
 
 - }
 
  复制代码- //接收代码
 
 - int main(void)
 
 - { 
 
 -         ALL_init();
 
 -         
 
 -         u8 RxBuffer[2];
 
 -   u16 receivedValue;  // 用于存储组合后的16位数据
 
 -         //OLED_ShowString(1, 4, "Acc Test!");        
 
 -         while(1)
 
 -   {
 
 -                 if(NRF24L01_Receive(RxBuffer) ==0)
 
 -                 {                                                
 
 -                         receivedValue = (u16)((RxBuffer[1] << 8) | RxBuffer[0]);                                                
 
 -                         printf("%d\r\n",receivedValue);
 
 -     }                    
 
 -         }
 
 - }
 
 
  复制代码- //发送模式配置函数
 
 - void NRF24L01_TX_Mode(void)
 
 - {                                                                                                                 
 
 -           NRF_W_CE(0);                                                            //进入待机模式 可以改变模块属性
 
  
-           NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,5);      //配置TX地址
 
 -           NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,5);   //配置RX地址:目的为了使能自动应答        
 
 -           NRF_W_Reg(NRF_WRITE_REG+EN_AA,0x01);                              //开启自动应答   
 
 -           NRF_W_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);                                 //使能通道0接收地址 EN_RXADDR寄存器 0x01表示仅启用通道0
 
 -           NRF_W_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);                         //设置自动重发间隔 586us
 
 -           NRF_W_Reg(NRF_WRITE_REG+RF_CH,0);                                 //设置通信频率2.4G RF_CH 2.4GHz
 
 -           NRF_W_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);                           //设置TX发射参数:0dBm增益,2Mbps 低噪声增益开启
 
 -           NRF_W_Reg(NRF_WRITE_REG+CONFIG,0x0e);                             //设置工作模式:0x0e为发射模式
 
 -         
 
 -                 NRF_W_CE(1);                                                      //启动发送
 
 - }
 
  
- //接收模式配置函数
 
 - void NRF24L01_RX_Mode(void)
 
 - {
 
 -                 NRF_W_CE(0);
 
 -         
 
 -           NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,5);
 
 -           NRF_W_Reg(NRF_WRITE_REG+EN_AA,0x01); 
 
 -                 NRF_W_Reg(NRF_WRITE_REG+EN_RXADDR,0x01);         
 
 -                 NRF_W_Reg(NRF_WRITE_REG+RF_CH,0);
 
 -                 NRF_W_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);
 
 -           NRF_W_Reg(NRF_WRITE_REG+RF_SETUP,0x0f);        
 
 -           NRF_W_Reg(NRF_WRITE_REG+CONFIG, 0x0f);                
 
 -         
 
 -           NRF_W_CE(1);
 
 - }
 
 
  复制代码 
 |   
 
 
 
 |