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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
5 m2 w+ y. G% m( k' k: s      下面我把A和B的主函数发一下
! {+ V% G& g4 G
% [- \" A- A8 u' B: d7 h: `while(1)+ U" f+ }/ U; k! @- k1 h/ m
{- {! Q1 Z0 a* S$ O( t4 w
           SetTxMode();                                // Set Tx Mode8 {2 [# F( L. F, E6 y2 R7 Q
                     TxPacket();                        // Transmit Tx buffer data        % P* ^& ~6 h$ [" H0 ?' T, `
               SetRxMode();% w: }( o, f: C4 G4 k+ J6 P' B
         //=====================等待NRF905接收
7 {3 A  \3 F$ P           if (DR)                        // If recive data ready...
' M6 L& c. X) u, D2 W4 v           RxPacket();                        // ... recive data1 h5 \8 z2 q. n- x
            if(RxBuf[0]==0x01)0 j" K/ Z/ }; |: L# [$ P% i
                 {
% S% u! b" ~) u( B2 n$ N- M% b                         RxBuf[0] =0;
$ _* s) T: i. ^1 Z5 T                         LED1 = 0 ;
- `4 ?+ G6 @+ U. G( Q( ~/ [                Delay(1000);                                        // ...light led. u. K9 c9 _- u: Z7 V. T
             LED1 = 1 ;6 d; C! e( e  T, J
                      Delay(500);                                        // ...light led        
, W& l' g2 L1 S# |6 l: m; C! F4 B5 v9 s; h6 c' Y6 x
             }7 E" Q4 e* m: |3 C, L. N7 f7 B+ R
}
7 A  k. Q& [! @上面这个是A的程序,下面我把B的程序发一下; X5 q: ~% W0 j" b0 U7 Q$ y. V
while(1)/ g1 u: ^, ?" \9 U' ]) m4 F
{. N* s8 M! P/ _5 V2 h
                SetRxMode();' T; A% @- d/ b9 N4 b/ ?% Q
         //=====================等待NRF905接收" H0 v- x% M9 c$ b! N
           if (DR)                        // If recive data ready...# b" o  h% q) T) V4 A
           RxPacket();                        // ... recive data
1 r! a" _1 O1 j! N           if(RxBuf[0]==0xaa)
7 J' |% ]9 G3 `" ?           {    k4 q* w$ M9 l$ r/ ]' c
                   RxBuf[0]=0;
' g- ^0 |+ D5 H/ K. L             LED1 = 0;
6 O% x9 `8 m6 B- K                        Delay(1000);7 W$ C2 h* X6 B! t
                 LED1 = 1;
1 C% q4 v- [# h: I( m; }                        Delay(500);
% ?: h1 z( b& t; T        
* c: _* L9 I$ W9 \5 ]' t                         SetTxMode();                                // Set Tx Mode
* n% o% E5 R, a% ~                     TxPacket();                                // Transmit Tx buffer data
0 x( w; T# i6 h9 G, ]: t2 ~0 z, m       }
/ ~) l  U% f7 [+ ]- z}( t6 L1 ], T, E. A$ d
上面这个是B的程序
' b4 V2 B1 Q8 z- d我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。) ]; C0 R2 Y' l0 W9 m& W
现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用
8 z- R6 ~5 D# v

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
) G' m# c1 }2 x

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?
) r. L" W  {( I8 s0 O  I

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
. `! m9 K% \" Q2 d2 W
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-22 12:28 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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