找回密码
 注册
关于网站域名变更的通知
查看: 259|回复: 3
打印 上一主题 下一主题

NRF905多点通信中由于发送过数据而导致接收不到数据了,这要咋解决呢?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-10-31 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题8 M9 R: p. u. P/ S+ D3 z
      下面我把A和B的主函数发一下* {# K0 }: v! c& T) l1 ~! f, j% d

8 j, {" H" ?' twhile(1)+ l- m' ]0 f. B% l2 E8 S& W# y& R
{
! x8 _+ W* e2 Z$ y6 `8 l           SetTxMode();                                // Set Tx Mode1 z2 _- N% u4 i0 D* A
                     TxPacket();                        // Transmit Tx buffer data        . U8 a, q* h0 J
               SetRxMode();
; \6 f% R- p( ~6 t$ ?- u5 z) @6 J         //=====================等待NRF905接收
- h9 T7 _& `* ^8 u8 L6 K6 _) L           if (DR)                        // If recive data ready...% m5 L0 B; T4 ]' x
           RxPacket();                        // ... recive data! e* i' @' c) J, W" L
            if(RxBuf[0]==0x01)
: }, a4 V2 N! m                 {8 O; `1 S, _  e- a( A3 ~
                         RxBuf[0] =0;5 O2 c; O$ R+ ^9 y% l
                         LED1 = 0 ;# U1 s2 ]* W* I: y; c% M! G4 p
                Delay(1000);                                        // ...light led  \4 @% K3 w! X6 ~7 ?6 ^5 L! L; ]2 H
             LED1 = 1 ;7 K8 u8 w: R3 f, ?" w6 M
                      Delay(500);                                        // ...light led        9 [1 c! F* Q' @3 }2 C1 ]

9 T: y5 Z* e* k+ O             }9 V1 p6 Y; n5 l  k3 b+ a
}3 F1 T8 S; I* S! r0 t
上面这个是A的程序,下面我把B的程序发一下$ g* H: c: W3 b( U' h' P
while(1)8 E1 y: D: B- L$ E" V. Z
{
" v; O) E* c$ u' q6 ~) o2 J                SetRxMode();
1 ~5 R) i4 g9 Y# V8 L0 Q# l         //=====================等待NRF905接收/ B% i1 N. W! [, i& [% y
           if (DR)                        // If recive data ready...( k% X" o; D6 k( ]8 @! O
           RxPacket();                        // ... recive data- T. b# b2 d' A- }
           if(RxBuf[0]==0xaa)
, s; F7 s$ F8 I( j3 l& i4 e; ^, T           {  
- R% a; y& w3 f% s                   RxBuf[0]=0;/ m0 s; G" o8 ?
             LED1 = 0;) y3 s, w$ c2 x- Z2 s
                        Delay(1000);
4 y# ]0 [3 h% X. g2 W2 M) Y                 LED1 = 1;5 j% S) J8 t9 Q% W8 C+ m2 O% M) c
                        Delay(500);0 K% P. P1 D! G( L) B6 _
        8 O- w0 N3 O, r$ K. [; [
                         SetTxMode();                                // Set Tx Mode: y, z1 ~8 R" k
                     TxPacket();                                // Transmit Tx buffer data1 B: d% ?# C. x: `
       }
. I5 q# x8 b9 D% k9 x; T1 A}
. O* J- P* ~3 E, F& T) u8 I上面这个是B的程序
1 M; P0 W8 U) q' g  b我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。0 b- I! }% o5 W: K
现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用
9 v0 K( u/ g4 ?# y3 W

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!# s; C  V9 n( ~. i

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?1 I. A2 V) s$ g6 O  ]

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
& Q; F+ T8 |: }. H& r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-22 15:04 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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