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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
9 s# v5 B) u( v9 h. i  b      下面我把A和B的主函数发一下$ d9 q! Q* N9 D7 I, w

/ w  g+ r# q% N# X# _3 f0 jwhile(1): L+ E! W, }) T4 q
{* J: N* a6 o3 W. J# I5 ?; U
           SetTxMode();                                // Set Tx Mode
" Z5 e0 K) M$ i) h0 G4 u                     TxPacket();                        // Transmit Tx buffer data        - k# O$ F" `7 B# ?! D
               SetRxMode();
5 J5 G7 i* {8 y5 \7 Z4 K+ l         //=====================等待NRF905接收
6 x) ~9 n( g0 u$ Y' S9 W/ ?; C7 s; Z           if (DR)                        // If recive data ready...
6 [4 g! f- y7 u           RxPacket();                        // ... recive data
3 F, m( F' r$ G5 ~5 [3 Q9 W4 w            if(RxBuf[0]==0x01)
# Q! L" z. x' p. y+ k& H                 {
7 S1 P, N% F, F: @9 z                         RxBuf[0] =0;
) ^6 m; V& `9 S0 ]                         LED1 = 0 ;' l9 H9 N  R+ m! @( q
                Delay(1000);                                        // ...light led
* }7 V- `# T, {7 G  O7 r/ K% T& v             LED1 = 1 ;
9 l) T  D) W+ K" `                      Delay(500);                                        // ...light led        " Z, S) ?8 t3 l4 u9 S/ C

' F+ X8 K/ U7 L$ w# [             }
. m+ n( \: ~' k; r5 Q1 P0 q}
; r; {( w* v- q$ x; d1 f上面这个是A的程序,下面我把B的程序发一下: H3 Y. Q4 e( l" ~  ]3 E/ J
while(1)
9 G9 j5 H+ }* O: H7 K/ ^{+ A, M' M; L* J: J. c$ l) i% E
                SetRxMode();
, y+ T9 x" h4 k1 Y- H         //=====================等待NRF905接收
7 k, {4 X1 U, C: Q4 ?' K# f           if (DR)                        // If recive data ready...
/ z% [/ w; w' H9 {           RxPacket();                        // ... recive data
6 n0 M9 s. }0 _* G! h           if(RxBuf[0]==0xaa)
+ s& M$ \" ^; F) n$ ?  y           {  
1 i! ?6 }0 a9 u1 D7 |! y; J5 X                   RxBuf[0]=0;2 V, u( W& I( l
             LED1 = 0;
- C+ a* ?5 t5 h) f% k4 s/ A                        Delay(1000);3 V/ ]" O4 p! @# p7 S6 y# V" S
                 LED1 = 1;
) H4 ~" }" {0 k/ l4 l; r5 D  b                        Delay(500);( Y& u3 h/ h9 X9 G/ Q
        3 @1 a- N) f* n: C7 _" L
                         SetTxMode();                                // Set Tx Mode
" w( B( [8 ~3 n; z! I' V                     TxPacket();                                // Transmit Tx buffer data
. x0 l, Z+ Q0 a/ z+ s7 q       }. ?  c0 a6 ]1 F1 X  F
}1 e0 N0 B& P1 P5 i1 R1 Z
上面这个是B的程序* }& |, V! c5 r! L) }) e1 x# h) }: c
我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
( }: O# H, G3 a0 v* z) o现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用
" J, P0 ]0 f; b3 c% O

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!0 K5 a" u3 P& d# u: s) j+ v

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?( b/ J% e5 w  H: j

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
& b$ q9 h5 C1 F- Q% `6 A, \
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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