wenzhouyxc 发表于 2014-2-24 15:19:17

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

本帖最后由 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管脚一直为高电平。。

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

wangjt1988 发表于 2014-2-24 16:30:28

本帖最后由 wangjt1988 于 2014-2-24 16:31 编辑

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

wenzhouyxc 发表于 2014-2-24 16:39:41

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

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

wenzhouyxc 发表于 2014-2-24 16:41:00

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

请问你说的心跳是什么?

wangjt1988 发表于 2014-2-24 17:04:15

心跳就是    发送方就是没什么需要发送的    也要不停发特定数据包给接收方    让接收方有机会发数据给发送方

wenzhouyxc 发表于 2014-2-24 17:07:32

wangjt1988 发表于 2014-2-24 17:04
心跳就是    发送方就是没什么需要发送的    也要不停发特定数据包给接收方    让接收方有机会发数据给发送 ...

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

wangjt1988 发表于 2014-2-24 17:18:41

这些驱动也是我一年前做好的了    细节都记不清了    先去理解通信的过程   再根据过程想怎么测试

wenzhouyxc 发表于 2014-2-24 17:23:55

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

嗯。好。太感谢你了

wangjt1988 发表于 2014-2-24 17:25:17

不客气   一起玩

jiang887786 发表于 2014-5-4 08:45:04

我目前遇到的问题,也是一对一收发短时间行,长时间不行!

dammon 发表于 2014-5-4 20:41:51

路过。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

xueju 发表于 2014-5-4 20:58:51

jiang887786 发表于 2014-5-4 08:45
我目前遇到的问题,也是一对一收发短时间行,长时间不行!

没充分考虑误码情况

绝对零度 发表于 2014-6-11 15:50:41

请问有这种自动ACk携带数据的方式 的资料吗

mazhenyu 发表于 2014-6-15 11:45:44

绝对零度 发表于 2014-6-11 15:50
请问有这种自动ACk携带数据的方式 的资料吗

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

xiay123 发表于 2015-7-6 01:01:02

我的各种模式都调了;能检测到NRF24l01存在;但就是不能通信,这有那些原因造成的啊;   使用的是NRF24L01+模块

索达客 发表于 2016-3-24 10:28:33

好呀, 我为后人提供一些资料吧 , 这个伪全双工挺诱人的,
NRF24L01+设置为带数据的ACK功能 <http://bbs.eeworld.com.cn/thread-443708-1-1.html>
官方手册对此详细的说明,请看英文原版第7.4节
页: [1]
查看完整版本: 求助:STM32下NRF24L01实现双向传输问题