找回密码
 注册
查看: 197|回复: 3
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题' L% k9 i! _% F
      下面我把A和B的主函数发一下
  _( U3 T1 D5 Q9 Y" t( r0 U5 g; ^" Z$ e" e
while(1)
! C" s( [" \- j4 s{' ~  p* h$ w# G! ~
           SetTxMode();                                // Set Tx Mode
& v7 T8 S( W& O                     TxPacket();                        // Transmit Tx buffer data        ( a  e0 D+ u% m  _3 I
               SetRxMode();
5 \  ^. r. ^  N0 x; I( }& q  X         //=====================等待NRF905接收" I0 T* a+ F" W# `6 T0 ]
           if (DR)                        // If recive data ready...
5 U' C1 E! A4 N% F; {           RxPacket();                        // ... recive data
( F) m! E8 _* u; f            if(RxBuf[0]==0x01)
- @# Q1 E5 m. a$ ?9 c. x2 i                 {2 T7 X" R9 A# R- B( e+ B
                         RxBuf[0] =0;. j1 j+ \0 P6 z0 X6 ~. d7 Z9 k
                         LED1 = 0 ;
, q. q: [$ Z5 c6 y' N                Delay(1000);                                        // ...light led
% ]$ k3 U4 J- f' D/ J& f9 x! g             LED1 = 1 ;
8 B" G+ p9 b- B' b                      Delay(500);                                        // ...light led        + ^0 b/ h( w( y' ?1 u0 V

/ H4 W3 U2 g& Z8 E$ N6 s             }
- r8 V9 U/ v6 }$ N4 X" ]' G! S}0 l3 `9 m" ~& V
上面这个是A的程序,下面我把B的程序发一下
& T4 a; B& ~: w0 g7 Wwhile(1)4 s# t4 E3 z0 O) \; E9 n
{& v# K" j3 D3 I9 e2 J8 O
                SetRxMode();
' F! y1 w+ P& w/ h4 G: }/ s         //=====================等待NRF905接收7 Z2 k! i9 c' I& X
           if (DR)                        // If recive data ready...
' E* |. R. w( G, c7 T           RxPacket();                        // ... recive data
2 B9 S. @$ o9 R; ?           if(RxBuf[0]==0xaa)) N, {. p4 V. |
           {  
- t( t% }8 m+ C  ?- ^6 |& }+ Q                   RxBuf[0]=0;" T4 p% h5 N' i. |# J
             LED1 = 0;
2 X, d, o' W1 r- |5 f! _# k' E                        Delay(1000);2 [3 @$ j2 N5 f4 Y8 q4 X$ u
                 LED1 = 1;
( z& n; K( G, ~  V) m9 U( B                        Delay(500);- W$ j9 y  g, \& f3 V
        
+ Y, D' c$ Y& s: K, I* D# n                         SetTxMode();                                // Set Tx Mode# E9 Z* \" Y5 h% R$ ~1 j
                     TxPacket();                                // Transmit Tx buffer data/ a; i7 Z- C6 R  R% R
       }
" c% }: j, G) \" |: u! F0 E+ }}2 J/ d& J1 {4 F6 F) R
上面这个是B的程序, H, _9 b8 L/ Y4 r) X/ o/ O& Y
我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
" \/ B% l$ L' R# ~% Z: Q4 [5 Q现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用& g5 i4 p& F1 L: X. b

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
; I  e* F* O. I1 k+ ?6 ]+ C

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?# l( o! t# u) p# A) \

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
! k( [& e" V4 @9 F8 y* D! r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-3 01:24 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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