搜索
bottom↓
回复: 15

求助:STM32下NRF24L01实现双向传输问题

[复制链接]

出0入0汤圆

发表于 2014-2-24 15:19:17 | 显示全部楼层 |阅读模式
本帖最后由 wenzhouyxc 于 2014-2-24 15:40 编辑

选用ACK加载一个数据包进行伪双工双向通讯时,其配置如下:
NRF_Write_Reg(NRF_WRITE_REG+CONFIG, 0x7E);                                           
NRF_Write_Reg(FLUSH_TX,0xFF);
NRF_Write_Reg(FLUSH_RX,0xFF);
               
SPI_RW(0x50);
SPI_RW(0x73);
NRF_Write_Reg(NRF_WRITE_REG+0x1C,0x01);
NRF_Write_Reg(NRF_WRITE_REG+0x1D,0x06);

发送函数为:
void NRF_TxPacket_AP(uint8_t * tx_buf, uint8_t len)
{       
        SPI_CE_L();                 //StandBy Iģʽ       
        NRF_Write_Buf(0xa8, tx_buf, len);                          // ×°ÔØÊý¾Ý
        SPI_CE_H();                 //ÖøßCE
}

但执行完这条语句后就停在irq!=0,等待发送完成的循环语句里。。。
用万用表测发现IRQ管脚一直为高电平。。

请问将半双工模式改成这种双方通讯,除了发送的函数和上述配置不同,还要改动哪里么?

出0入0汤圆

发表于 2014-2-24 16:30:28 来自手机 | 显示全部楼层
本帖最后由 wangjt1988 于 2014-2-24 16:31 编辑

这是伪双工    发送方主发送    接收方接受到数据   会返回一个ack   利用这个ack   接收方也能向发送方发送数据     但是    通信发起者   都是发送方     接收方想主动发数据是不行的      加入心跳可以解决这个问题      你的代码应该是我们匿名的    我没开中断    用的查询式

出0入0汤圆

 楼主| 发表于 2014-2-24 16:39:41 | 显示全部楼层
wangjt1988 发表于 2014-2-24 16:30
这是伪双工    发送方主发送    接收方接受到数据   会返回一个ack   利用这个ack   接收方也能向发送方发 ...

是用的你们匿名的。我想在自己画的板子上街上NRF24L01调通伪双工的传输功能。但这方面的具体传输过程不是很了解,请问哪里可以找到相关的资料。
还有就是寄存器1c,1d两个的配置,在手册里找不到这两个寄存器。
如果用模式3和4的话,要验证它是否能双向传输,请问要怎么验证?完全的新手,刚调完模式1和2

出0入0汤圆

 楼主| 发表于 2014-2-24 16:41:00 | 显示全部楼层
wangjt1988 发表于 2014-2-24 16:30
这是伪双工    发送方主发送    接收方接受到数据   会返回一个ack   利用这个ack   接收方也能向发送方发 ...

请问你说的心跳是什么?

出0入0汤圆

发表于 2014-2-24 17:04:15 来自手机 | 显示全部楼层
心跳就是    发送方就是没什么需要发送的    也要不停发特定数据包给接收方    让接收方有机会发数据给发送方

出0入0汤圆

 楼主| 发表于 2014-2-24 17:07:32 | 显示全部楼层
wangjt1988 发表于 2014-2-24 17:04
心跳就是    发送方就是没什么需要发送的    也要不停发特定数据包给接收方    让接收方有机会发数据给发送 ...

那请问这种验证伪双工的该怎么去写调试代码?也像验证模式1和2一样一个主函数写发数据的代码,一个写接收函数的代码么?
在调试中如果把1D寄存器设置成0X06的话就一直在while(IRQ!=0)中无法发送数据,而设置成你们的0x07就可以发送,查看手册说是一个允许错误的应答信号,是这样么?

出0入0汤圆

发表于 2014-2-24 17:18:41 来自手机 | 显示全部楼层
这些驱动也是我一年前做好的了    细节都记不清了    先去理解通信的过程   再根据过程想怎么测试

出0入0汤圆

 楼主| 发表于 2014-2-24 17:23:55 | 显示全部楼层
wangjt1988 发表于 2014-2-24 17:18
这些驱动也是我一年前做好的了    细节都记不清了    先去理解通信的过程   再根据过程想怎么测试 ...

嗯。好。太感谢你了

出0入0汤圆

发表于 2014-2-24 17:25:17 来自手机 | 显示全部楼层
不客气   一起玩

出0入0汤圆

发表于 2014-5-4 08:45:04 | 显示全部楼层
我目前遇到的问题,也是一对一收发短时间行,长时间不行!

出0入0汤圆

发表于 2014-5-4 20:41:51 | 显示全部楼层
路过。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

出0入0汤圆

发表于 2014-5-4 20:58:51 | 显示全部楼层
jiang887786 发表于 2014-5-4 08:45
我目前遇到的问题,也是一对一收发短时间行,长时间不行!

没充分考虑误码情况

出0入0汤圆

发表于 2014-6-11 15:50:41 | 显示全部楼层
请问有这种自动ACk携带数据的方式 的资料吗  

出0入0汤圆

发表于 2014-6-15 11:45:44 | 显示全部楼层
绝对零度 发表于 2014-6-11 15:50
请问有这种自动ACk携带数据的方式 的资料吗

楼主贴出的代码就是可以含数据的

出0入0汤圆

发表于 2015-7-6 01:01:02 | 显示全部楼层
我的各种模式都调了;能检测到NRF24l01存在;但就是不能通信,这有那些原因造成的啊;   使用的是NRF24L01+模块

出0入0汤圆

发表于 2016-3-24 10:28:33 | 显示全部楼层
好呀, 我为后人提供一些资料吧 , 这个伪全双工挺诱人的,
NRF24L01+设置为带数据的ACK功能 <http://bbs.eeworld.com.cn/thread-443708-1-1.html>  
官方手册对此详细的说明,请看英文原版第7.4节  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 07:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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