OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3735|回复: 3

24L01+发送端PTX收不到ACK数据包(选不了求助帖)已解决,删除内容

[复制链接]

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-8-31
在线时间
23 小时
发表于 2018-10-15 15:03:31 | 显示全部楼层 |阅读模式
本帖最后由 yangnandong 于 2018-10-17 08:04 编辑

接收和发送配置基本采用参考例程
[mw_shl_code=c,true]

[/mw_shl_code]


发送端主体
[mw_shl_code=c,true]
[/mw_shl_code]

接收端主体
[mw_shl_code=c,true]
  [/mw_shl_code]


每次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;
}
有没有起作用


已自行解决!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-8-31
在线时间
23 小时
 楼主| 发表于 2018-10-16 09:04:13 | 显示全部楼层
检查了PRX端的TX FIFO
TX_FULL
TX_EMPTY
TX_FULL 始终为零,正常
TX_EMPTY在FIFO写入ack数据之前(NRF24L01_TxPacket_AP(tmp_buf))为1,写入后为0,TX_DS也会置位,说明也正常

看来问题还是在PTX端

回复 支持 反对

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2018-8-31
在线时间
23 小时
 楼主| 发表于 2018-10-17 08:01:28 | 显示全部楼层
本帖最后由 yangnandong 于 2018-10-17 08:20 编辑

昨天自己找到原因了,使用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长度
回复 支持 反对

使用道具 举报

0

主题

167

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2019-4-2
在线时间
4 小时
发表于 2019-4-19 11:34:15 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 10:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表