初级会员
- 积分
- 170
- 金钱
- 170
- 注册时间
- 2023-5-13
- 在线时间
- 28 小时
|
楼主 |
发表于 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);
- }
复制代码
|
|