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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
. m8 d7 b8 X  h' v/ O2 D( a      下面我把A和B的主函数发一下
' I% V( ]; q8 |
: k. t. i2 @3 R: {5 lwhile(1)/ M; p! k' z: b8 v% k
{
1 ~& Z5 u5 \* n  q- G           SetTxMode();                                // Set Tx Mode! J# H: N: f5 j4 p0 N+ j
                     TxPacket();                        // Transmit Tx buffer data        
, m4 r& x# J. R, N               SetRxMode();
; T) |# m+ ^! ]. p2 ~2 |         //=====================等待NRF905接收4 m: y3 z. ~0 [, H4 W: r
           if (DR)                        // If recive data ready...) _9 Z7 }* K& I, ~
           RxPacket();                        // ... recive data, ~' r4 l; O5 q& A
            if(RxBuf[0]==0x01)* C+ P. U; _0 U# v+ {3 A+ @3 _
                 {3 m$ @8 ^+ Q2 A* Y
                         RxBuf[0] =0;
5 z, D4 K$ e# t# Y7 Y6 b$ _                         LED1 = 0 ;. E; R3 M# u5 e, _7 m  Y( P
                Delay(1000);                                        // ...light led. y2 z1 m3 t% P3 a
             LED1 = 1 ;
9 r9 E/ N' O1 e/ Y/ Q                      Delay(500);                                        // ...light led        
$ {" u: P" x4 J5 x- g2 y7 e
* \9 S1 s' M" m             }
/ s* f/ c/ z! c8 q1 K2 T1 E}& Y: V0 u- M2 u9 ?8 A4 r7 v
上面这个是A的程序,下面我把B的程序发一下1 }7 N" I6 Y, d' Z  e
while(1)
: L1 u( f  }( u* H2 e2 m' B4 l{
2 @& J" A% _4 |' S$ v                SetRxMode();1 [# V5 [$ S& x
         //=====================等待NRF905接收
9 A# f+ t- }/ Q           if (DR)                        // If recive data ready...
: k' d* w3 O& J5 O# A/ S           RxPacket();                        // ... recive data, l. b' c; i4 ]9 s; U' N" B, t0 c
           if(RxBuf[0]==0xaa)
3 o. T- L( h# J2 X# o1 q% j% K           {  , c8 c/ N' g% r
                   RxBuf[0]=0;
& `7 g% ~+ d; Z+ t2 C. O: }$ @             LED1 = 0;; |/ F9 v2 @/ m8 Z/ Q
                        Delay(1000);+ e' q, n* w& U" Y+ F
                 LED1 = 1;; Z1 U$ b: K  N$ B1 d2 e- j
                        Delay(500);
; b! `5 G# c8 O9 q- P3 Z3 {+ M3 W6 O        
9 v6 p' ^4 n, T$ y                         SetTxMode();                                // Set Tx Mode& \4 A! G- q3 r2 t2 J
                     TxPacket();                                // Transmit Tx buffer data
* F. H1 ~) L) c8 C( ~' G  q       }% v, ^* A. ?" @& N. G2 S% @6 v
}
% g1 W$ {/ X3 E$ j4 i8 B0 Y8 F% T上面这个是B的程序$ I' h# h$ S, U8 e* O: Y$ Z! B
我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
- Y. F% k+ O: |8 d' _现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用, p/ f* J5 i* I0 s

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
, X& s' U! Q9 i6 e

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?
; D7 m, B2 D: s3 X2 _  P

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
" b6 b: \( J. @, z- ^: b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-9 15:49 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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