完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
搞了两天的NRF24L01了,基本上算是可以发送和接收了,但是仅仅是没有自动应答的模式下。寄存器配置和读取都没有问题,发送端禁止自动应答功能,禁止所有通道接收,禁止自动重发,使能发送模式(0x02),不做CRC校验。接收端禁止自动应答,开启0通道接收,禁止自动重发,使能接收模式(0x03)。发送地址寄存器和接收地址寄存器数据相同,两个模块除了模式和自动应答不同以外其他的都相同。现在的问题很奇怪,在这种配置模式下,发送和接收端数据可以同步传输,且调试中也没有数据错误的问题,但是一旦使能自动应答功能,问题就来了。发送端总是进入重发次数最大中断,这就表示接收端没有响应!为什么呢?不自动应答都能正常接收,反而自动应答后却不能响应了!配置为自动应答时,发送端配置为0通道自动应答,重发配置为0xFF,模式寄存器配置为0x0E(接收端是0X0F)。其他保持不变。现象时通信失败,但偶尔能看到接收端接收(发送和接收都是有指示灯的),通信成功率基本是算是失败,只要改为原先的模式(即禁止自动应答)则通信成功率100%!郁闷呀,总不能就这么用吧!一开始我以为是无线干扰(办公楼有好多的无线WIFI包括我公司),于是我就改了频道,但是还不如不改,改成其他的频道,接收根本就是0%,改回原来的40,还能偶尔通信的上(通信上的数据是对的)。搞了两天了,啥都没弄成,没辙了,还望高手指教啊,这个芯片从资料上看不难,但是调起来却不是一般的难啊!
|
|
相关推荐
4个回答
|
|
自动应答我们的NRF24L01例程就开启了哦。
|
|
|
|
|
|
|
|
顺带问一下,如果在设置好自动应答和发送模式后,直接开启CE端,那么模块是否直接就发送了,由于这时候发送缓冲区还没有数据也就是缓冲区空,我经过调试是会进最大发送次数中断的,说明模块确实在进行发送,只是没有数据发送出去,一直再重发。将数据写入缓冲区后,同样能进入重发中断,清除标志位后,是否这个数据还会重发直到再次进入重发中断呢? |
|
|
|
有人吗?别沉了呀!
通过两天的调试终于找到原因了,不过很奇怪,暂时无法解决,只能重新换两个模块试试来验证一下了。 是这样的,只要在设置CONFIG时,接收端不开启CRC校验就能够正常通信,经过示波器的观察,两个模块之间的响应≥100us,也就是说发送端发出数据后,接收端会在100us以后置低IRQ引脚。只要控制100us以后就可以确定接收端已经收到数据了。由于接收端不使用CRC校验功能因此只要不使能CRC校验或不使用自动应答(自动应答是强制使用CRC功能的),那么不管发送端使用哪种CRC校验方式(8位和16位),接受端都能正常接收!但是发送端不能使用自动应答功能,因为内部硬件链路层的协议关系,在使用自动应答时必须要等到接收端响应才能表示通信成功,而接收不能使用CRC校验功能,且注明了只有在地址和校验正确的情况下,接收端才会响应,所以就出现了我一开始的问题,单发单收时没有问题,一旦使能自动应答通信失败!这个问题我就搞不懂怎么回事了?有知道的大神给个解释吧! 除了另外购买两个无线模块重新测试外,不过还有一个方法可以试试,那就是再买一个24l01的无线串口模块,监测发送端发送出来的数据,然后手动计算校验码,那就知道问题出在哪里了!或者手动发送数据到接收模块看看是否能够接收到。可惜的是,NRF24L01资料上并没有说明通信链路的协议方式,所以做起来就有点难办了! |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2530 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2317 浏览 5 评论
3116 浏览 3 评论
2784 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2742 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
579浏览 1评论
837浏览 0评论
944浏览 0评论
599浏览 0评论
419浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-9 01:37 , Processed in 1.103173 second(s), Total 88, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号