完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用两个nRF24L01通讯,自动重送、自动应答;发送端单片机使用IO模拟SPI与nRF24L01通讯,接收端使用硬件SPI;发送端发送完后,STATUS寄存器内容为0x1e,按道理应该是发送出去未收到应答,达到最大重发次数,发送失败了,但是接收端竟然能正常接收到数据,难道这个状态寄存器不可靠?各位有没有遇到这种问题?
|
|
相关推荐
5个回答
|
|
帮顶!!
|
|
|
|
这个并不是没有可能,
接收端收到数据并应答ACK, 但发端始终没有收到ACK就会出现这种情况。 检查一下收端的发,以及发端的收。 地址设置正确了没有? 配置有没有问题? |
|
|
|
昨天试了一下,把发送端的发送地址和接收地址,与接收端的发送地址和接收地址,这4个地址改成一样的就没问题了,我使用的是通道0,按道理只要发送端的发送地址和接收端的接收地址一样就行了呀,百思不得其解,还有就是改成使用通道1后,接收端我都没启动,发送端竟然能发送成功,再研究研究,总感觉这个STATUS不靠谱
|
|
|
|
谢谢楼主的分享,不断的学习
|
|
|
|
那是你没有真正搞懂2401地址的含义:
其实2401并没有地址, 所谓地址,可以看成报文ID, 发送端发ID为01的报文,接收端收ID为01的报文, 如果设置了自动应答,则接收端必须应答01,ACK报文的ID也只能是01,所以原发送端也必须收01才能收到ACK完成整个过程。 每个2401可以同时收6个不同ID的报文,发送时地址可以临时填写。 所以你可以这样理解, 每个2401有六个收件箱,可以对应六个ID, 发送方发报文时需要填写一个ID,如果这个ID正好是接收方的6个ID之一, 它就会收到这个报文,注意发方只发了一个ID,相当于寄件时只填写了收件人,没有填发件人 收方收到后,如果设置了自动应答,它回ACK时,会自动填写原ID(因为信封上只有收件人,没有发件人),意思是“注意,我收到了收件人为某ID的报文”,原发方只有把接收通道设置成该ID才能收到这一报文。 这就是必须4个地址都一样的原因。但其实是变化无穷的。 熟悉了这一套路后,你就可以灵活运用了。 |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2575 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2387 浏览 5 评论
3237 浏览 3 评论
2849 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2801 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
694浏览 1评论
924浏览 0评论
1055浏览 0评论
688浏览 0评论
521浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-7 07:37 , Processed in 0.954207 second(s), Total 53, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号