完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
nrf24l01断电重新上电才能接收数据及最大重发次数问题
最近在调试NRF24L01模块,使用的芯片是公司研发的GPCM1F芯片,M0内核,32位单片机,参考正点原子的例程移植代码,调试过程遇到很多问题,其中有2个问题较为深刻,首先是移植完后发现nrf24l01只能接收一次数据,接收的数据是正确的,但是无法接收第二次,而且发送端发送三次后就再也无法发送了,原因是达到了最大重发次数,即使是清除了清除TX FIFO寄存器也不行,但是将接收端断电后,重新上电后,又可以正常接收和发送了,但是也只能接收发送一次。而且即使将接收端重新编译下载或者复位,也不可以接收和发送,调试许久,终于解决问题了。 以下为个人理解,若有说的不对的地方,请各位多多包含。 关于为什么将接收端断电后重新上电就可以接收数据了,我个人的理解是对NRF24L01的寄存器进行写操作或者接收数据时触发某些中断或者标志位时,如果没有及时的清除,就会影响通信,即使你按复位键或者将程序重新编译下载,这些中断为和标志位依旧在,寄存器并不会因为复位或者重新下载而恢复原来初始化的状态,你必须要下清除的命令才行,但是如果重新断电再上电,寄存器回到初始化的状态(即复位时的状态)。 解决方法:本人参考移植的是正点原子无线通信例程,关于接收端基本没什么改动,主要是修改发射端程序,在例程中加入 NRF24L01_TX_Mode()中加入该函数NRF24L01_Write_Reg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//选择通道0的有效数据宽度 在NRF24L01_TxPacket()中CE为高,延时130us以上后再启动发送。 其他的程序基本上就没有修改了,基本和正点原子的例程一样 通过串口看到,数据发送接收正常,发送时要看看这两个状态标志位,确定数据是不是已经发送出去,一定要保证发射端是正常的。如果有时间在写一下发射接收的调试过程吧,谢谢。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1760 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1058 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1932浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
723浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
564浏览 3评论
590浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 12:54 , Processed in 2.080512 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号