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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
% a+ X" `, |! F7 K% r; e1 P) n      下面我把A和B的主函数发一下
- C, p7 ], P4 a( K" s9 [1 j9 h9 q3 Q2 F) }5 M
while(1)
1 h5 [1 H- J6 H! c{3 |% _+ f" l0 L% X* R; Q- K
           SetTxMode();                                // Set Tx Mode
' a  W$ c5 T0 c0 K  H                     TxPacket();                        // Transmit Tx buffer data        
, V2 d' m3 Z6 V' a2 M3 V6 I8 `9 I               SetRxMode();- f- \' |0 |* C' D$ T+ Q, Q; f/ m) }% E
         //=====================等待NRF905接收
# a3 c; C' o# D           if (DR)                        // If recive data ready...
  s; \. L5 E+ v+ J9 `# G# @           RxPacket();                        // ... recive data' D, \8 [. x% K
            if(RxBuf[0]==0x01)9 L) ^1 n6 }# u+ Z& j4 u, F
                 {8 D. m# D, t0 Q3 r
                         RxBuf[0] =0;8 a; t8 f: V/ W, x# U1 f
                         LED1 = 0 ;
1 B( N+ Y8 y( I8 K5 i# v$ A1 z) a                Delay(1000);                                        // ...light led
) Q* v& u% }/ D. t% \' Q0 ~             LED1 = 1 ;# N4 z+ T8 H7 J
                      Delay(500);                                        // ...light led        
! r! f# W  x, C9 J
% ?" k% a+ b% h, n& ]9 G1 b3 W             }
  L* z1 Q5 J5 [3 v7 u. `/ c}
( t* n1 y% h' f+ P上面这个是A的程序,下面我把B的程序发一下5 o1 ?! }" N2 C% _0 `
while(1)
9 Z9 g" K6 a* y/ |{: x0 C5 ~, f3 V% n; ~/ @! S& c0 q; a
                SetRxMode();
4 z- N- a7 ~" C* `. e1 Q: O4 O         //=====================等待NRF905接收  ^+ N, y  m: u0 _( U: m; g. ?
           if (DR)                        // If recive data ready...+ U/ u& {! H& X+ y$ A
           RxPacket();                        // ... recive data+ \& L4 c7 R/ t9 L8 L3 Z1 g
           if(RxBuf[0]==0xaa)
4 p- t: I( @! J0 J- R  `           {  
9 U$ M3 c! _, l, P, h                   RxBuf[0]=0;
3 D1 N; ~0 r) T: r/ J             LED1 = 0;
% ^! Z8 H+ i  {' d( A' y% T; L                        Delay(1000);
- G# F0 f1 R+ ]2 v! l                 LED1 = 1;
6 \" K9 E/ o/ E1 c, C7 d" w$ Y7 G                        Delay(500);
6 y) A2 G0 ]/ N        - S) T! ~9 {2 c, Q
                         SetTxMode();                                // Set Tx Mode% Q# }( M7 g9 h# P
                     TxPacket();                                // Transmit Tx buffer data, |6 ~( f" b4 y
       }. J, b1 e. F0 a5 r+ ]
}* {+ @% D7 i! q& p
上面这个是B的程序
8 Z; `$ |& f2 g6 U/ n3 K! m我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
+ Z+ D$ r3 e1 _现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用
! S* t. q' w5 ]( ]* y

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
1 K4 g" t- \3 r8 w- k

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?
5 |0 L& m' W) R* J5 m

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!+ ~+ m6 N; M( j) M; Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-22 07:56 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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