完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于采用NRF24L01+无线模块做无线语音广播,所以设置成“不自动应答”,现在发现广播时,接收端只能收到40%左右的数据帧,请指教。
【附上部分代码】 ----------------- 发送端:----------------- void NRF24L01_Set_TxMode(unsigned char *TxAddress) { ClrCE; //设置发送地址和地址长度 NRF24L01_Write_TxData(W_REGISTER+TX_ADDR,TxAddress,TX_ADDR_WITDH); /******下面有关寄存器配置**************/ NRF24L01_Write_Reg(W_REGISTER+EN_AA,0x00); /* 使能接收通道P0 不 自动应答 */ NRF24L01_Write_Reg(W_REGISTER+EN_RXADDR,0x01); /* 使能接收通道P0 */ NRF24L01_Write_Reg(W_REGISTER+SETUP_RETR,0x0a); /* 自动重发延时等待250us+86us,自动重发10次 */ NRF24L01_Write_Reg(W_REGISTER+RF_CH,0x40); /* 选择射频通道0x40 */ NRF24L01_Write_Reg(W_REGISTER+RF_SETUP,0x0F); /* 数据传输率2Mbps,发射功率0dBm,低噪声放大器增益 */ NRF24L01_Write_Reg(W_REGISTER+CONFIG,0x0e); /* CRC使能,16位CRC校验,上电 */ SetCE; delay_us(12); // 按照芯片手册要求 保持10us秒以上 } ----------------- 接收端:----------------- void NRF24L01_Set_RxMode_MultiChannel() { ClrCE; NRF24L01_Write_TxData(W_REGISTER+RX_ADDR_P0, RxAddr0, TX_ADDR_WITDH); /* 接收设备接收通道0使用和发送设备相同的发送地址 */ NRF24L01_Write_TxData(W_REGISTER+RX_ADDR_P1, RxAddr1, TX_ADDR_WITDH); /* 接收设备接收通道1使用和发送设备相同的发送地址 */ NRF24L01_Write_Reg(W_REGISTER+RX_ADDR_P2,0x02); NRF24L01_Write_Reg(W_REGISTER+RX_ADDR_P3,0x03); NRF24L01_Write_Reg(W_REGISTER+RX_ADDR_P4,0x04); NRF24L01_Write_Reg(W_REGISTER+RX_ADDR_P5,0x05); NRF24L01_Write_Reg(W_REGISTER+EN_AA,0x00); /* 使能数据通道0~5 不 自动应答 */ NRF24L01_Write_Reg(W_REGISTER+EN_RXADDR,0x3F); /* 使能接收通道0~5 */ NRF24L01_Write_Reg(W_REGISTER+RX_PW_P0, TX_DATA_WITDH); /* 接收通道0选择和发送通道相同有效数据宽度 */ NRF24L01_Write_Reg(W_REGISTER+RX_PW_P1, TX_DATA_WITDH); /* 接收通道1选择和发送通道相同有效数据宽度 */ NRF24L01_Write_Reg(W_REGISTER+RX_PW_P2, TX_DATA_WITDH); /* 接收通道2选择和发送通道相同有效数据宽度 */ NRF24L01_Write_Reg(W_REGISTER+RX_PW_P3, TX_DATA_WITDH); /* 接收通道3选择和发送通道相同有效数据宽度 */ NRF24L01_Write_Reg(W_REGISTER+RX_PW_P4, TX_DATA_WITDH); /* 接收通道4选择和发送通道相同有效数据宽度 */ NRF24L01_Write_Reg(W_REGISTER+RX_PW_P5, TX_DATA_WITDH); /* 接收通道5选择和发送通道相同有效数据宽度 */ NRF24L01_Write_Reg(W_REGISTER+RF_CH,0x40); /* 选择射频通道0x40 */ NRF24L01_Write_Reg(W_REGISTER+RF_SETUP,0x0F); /* 数据传输率2Mbps,发射功率0dBm,低噪声放大器增益 */ NRF24L01_Write_Reg(W_REGISTER+CONFIG,0x0f); /* CRC使能,16位CRC校验,上电,接收模式 */ SetCE; delay_us(12); /* 按照芯片手册要求 保持10us秒以上 */ } |
|
相关推荐
1个回答
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2544 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2331 浏览 5 评论
3158 浏览 3 评论
2803 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2761 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
608浏览 1评论
853浏览 0评论
968浏览 0评论
621浏览 0评论
447浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 08:32 , Processed in 0.950308 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号