完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
接收和发送配置基本采用参考例程
[C] 纯文本查看 复制代码 发送端主体 [C] 纯文本查看 复制代码 接收端主体 [C] 纯文本查看 复制代码 每次PTX发送 PRX端能接收到数据,但是PTX端收不到PRX发出的ACK数据,PTX的STATUS寄存器为0x2E,说明发送成功,收到了ACK,但是没有ACK中的数据 不知道时什么问题,也不知道如果确认 //PRX发送ACK数据包 void NRF24L01_TxPacket_AP(u8 *ackbuf) { NRF24L01_CE=0; NRF24L01_Write_Buf(CMD_W_ACK_PAYLOAD(0),ackbuf,RX_PLOAD_WIDTH); NRF24L01_CE=1; } 有没有起作用 已自行解决! |
|
相关推荐
3个回答
|
|
检查了PRX端的TX FIFO
TX_FULL TX_EMPTY TX_FULL 始终为零,正常 TX_EMPTY在FIFO写入ack数据之前(NRF24L01_TxPacket_AP(tmp_buf))为1,写入后为0,TX_DS也会置位,说明也正常 看来问题还是在PTX端 |
|
|
|
昨天自己找到原因了,使用Enhanced ShockBurst™,ACK packet包含payload,PTX、PRX都必须Enable dynamic payload length,设置寄存器DYNPD、FEATURE
手册中有如下描述 Enhanced ShockBurst™ provides two alternatives for handling payload lengths; static and dynamic. An ACK packet can contain an optional payload from PRX to PTX. In order to use this feature, the Dynamic Payload Length (DPL) feature must be enabled. 说明静态长度也是可以的,PTX能接收到ACK packet。 但是ACK packet要包含payload的话就必须使能动态payload长度 |
|
|
|
我和你的情况相同,也设置了PTX、PRX,Enable dynamic payload length,但是还是:每次PTX发送 PRX端能接收到数据,但是PTX端收不到PRX发出的ACK数据,PTX的STATUS寄存器为0x2E,说明发送成功,收到了ACK,但是没有ACK中的数据
我同时设置了: NRF24L01_Write_Reg(nRF_WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); // 设置通道 0 的有效负载宽度,据说两个是不冲突的,但就是没法收到ACK PAYLOAD |
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2574 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2367 浏览 5 评论
3220 浏览 3 评论
2841 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2795 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
675浏览 1评论
912浏览 0评论
1033浏览 0评论
676浏览 0评论
508浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 14:06 , Processed in 1.187176 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号