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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
# G/ \# v0 `* m0 E7 N, J0 X      下面我把A和B的主函数发一下  _( T) O- F' ?! l9 ^2 L5 l) R

8 E% x- ]" Z" B, o* g3 q, e; xwhile(1)
9 Q9 Q6 o$ w' T- f/ w# F" o2 g{4 `3 V; `1 D8 L4 E) B+ G# j
           SetTxMode();                                // Set Tx Mode
) Y! J/ U2 ?9 y% K) C                     TxPacket();                        // Transmit Tx buffer data        + G- O+ r- S- Q1 v2 ]
               SetRxMode();; m! c1 J5 R4 S, R! z
         //=====================等待NRF905接收
0 T2 W  r# t8 _+ R           if (DR)                        // If recive data ready...* e: y! e5 Q& v: Z3 ]
           RxPacket();                        // ... recive data! f0 M+ }  n# A# e8 L
            if(RxBuf[0]==0x01)
2 ~/ R  z! @4 {/ G- N' A                 {# }& B  h5 E: r" e. G/ b$ V
                         RxBuf[0] =0;$ g8 J( z3 Y2 M7 {( B5 K; d4 F
                         LED1 = 0 ;% |' B$ Q) w" p
                Delay(1000);                                        // ...light led8 A% o0 E3 D. O3 w: Z
             LED1 = 1 ;
' K# M" D- n/ v- [                      Delay(500);                                        // ...light led        
1 `9 a& v- ~7 A% L! x3 E; S
1 ], V& P9 _- R+ m             }
# c& z$ U" @" V1 X% o% w  G$ ~+ S}/ n: G( P4 ~7 b9 V# h# j* f0 j9 P
上面这个是A的程序,下面我把B的程序发一下) y5 T2 O# t1 v5 ]2 D
while(1)( C4 I: ]. @% N( G- }3 D2 m
{
- Z4 U$ x; R; K                SetRxMode();4 |% g+ f2 c3 U# f, J  b" \9 S1 e
         //=====================等待NRF905接收0 H& w. L( L& n8 g. i* z8 w
           if (DR)                        // If recive data ready...# B8 h. S( r$ z5 I+ {" q( C
           RxPacket();                        // ... recive data
6 L" m2 O3 ]3 i  c  O2 U0 t4 k           if(RxBuf[0]==0xaa)
% k& p  g+ P$ n1 P           {  
4 e' b" n; {4 r. Z* N0 n; K; F                   RxBuf[0]=0;( |) f( B& H' ~. s4 `
             LED1 = 0;8 j, i9 E/ Y# C: z  Q
                        Delay(1000);
4 D" }; h5 m) d                 LED1 = 1;9 U7 `0 ~7 r: \
                        Delay(500);% d# l( f; S; f1 f( ^9 a
        
5 e$ o2 F4 c4 u) F/ ?                         SetTxMode();                                // Set Tx Mode6 n$ [( w( q4 f: l( I/ z2 i
                     TxPacket();                                // Transmit Tx buffer data) a0 C! f, `+ c; [
       }/ \4 H, w' G) B5 A6 D7 g% P& C
}# x5 \) a3 o, ]6 R2 U
上面这个是B的程序
5 a$ C7 z5 _  N7 _+ {3 l我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
* j" @4 ^, ]8 {  K现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用$ O4 A% |. a9 J# l) C4 i' h0 r

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
' ?  d$ U# j. V

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?
6 _) K  h# I4 ~  H

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试/ b0 |4 S; K$ Z3 k
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-11 07:15 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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