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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题% @/ ^5 h3 F9 N2 B$ g0 l8 X
      下面我把A和B的主函数发一下1 Z& M3 n; P3 h

( r) L/ ^2 ?7 o: `0 k+ U/ Bwhile(1)* I1 [5 L: H: i1 b5 k% L+ ]# t
{
+ v4 y% n9 }) S' U           SetTxMode();                                // Set Tx Mode. A0 F# I+ F3 k! I% h7 N: c
                     TxPacket();                        // Transmit Tx buffer data        - `( k/ I4 C5 x9 D, g- _
               SetRxMode();  B0 I1 ~* J, Y
         //=====================等待NRF905接收4 u; a% S! k$ s0 }5 J' q
           if (DR)                        // If recive data ready...
+ H1 j( Z2 X# a' J9 {) }           RxPacket();                        // ... recive data0 ~; k8 \1 m8 i8 ~/ ~
            if(RxBuf[0]==0x01)* _! H& Q3 `! j" l/ r
                 {% M. U) _. Z" `* ~" |
                         RxBuf[0] =0;
: |* ?5 x5 ?- H# F, _' W6 f                         LED1 = 0 ;
0 O2 U0 S. J/ q                Delay(1000);                                        // ...light led
4 r' }7 T" V' f2 O$ M+ T9 R             LED1 = 1 ;% @" X, g# r3 q1 _8 N; P
                      Delay(500);                                        // ...light led        
: I6 U9 W5 H' g5 U! I$ Y& A3 k. N$ x& ^- O
             }
6 D& A6 ^3 M, w9 W; Q  V}% l. Z2 U2 w4 t
上面这个是A的程序,下面我把B的程序发一下; u, t" ^0 h8 m* ]
while(1)
, c- e. v( j4 D{
4 S. \5 ^: K# m                SetRxMode();. f7 s! \, t0 B6 L8 ?. _) [) t8 g
         //=====================等待NRF905接收$ L2 @* h, ~  |
           if (DR)                        // If recive data ready...
1 e. I+ R1 E  L2 a, J           RxPacket();                        // ... recive data" N# }3 A1 |  v) Y4 u
           if(RxBuf[0]==0xaa)
1 f) h. {! o# i$ g# r: y; V           {  5 T0 R- |* B, S" Q$ W
                   RxBuf[0]=0;8 G. ^0 X$ n. [8 Z  I
             LED1 = 0;
6 Q. }4 V% B3 ?+ F7 d                        Delay(1000);* J) L/ f' B7 U, D9 m: ]* Z
                 LED1 = 1;/ f5 p# V% j5 O# `$ l% K8 ?& L
                        Delay(500);9 q" u  A) u$ W5 R6 j& p) W6 P  f' z9 N
        
' L4 N! t" y& a& E. y                         SetTxMode();                                // Set Tx Mode
( I/ Y  S& ?. C! E2 A                     TxPacket();                                // Transmit Tx buffer data; j& s& U1 K" P' Q
       }8 |1 L7 v; b4 s' M
}
6 n8 k% T9 h- e' }8 ^/ |5 g上面这个是B的程序
( @8 \7 l- a* l) b( {3 \9 [% m我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。) L2 `0 Y6 s. {5 u
现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用
3 C' U$ o+ g* x  U$ L* U

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
- r1 C$ E$ ^, y0 C) Q

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?
2 k8 _/ e. |$ t5 P

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试9 t' l9 M" [, p, }0 g- T5 M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 16:56 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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