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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题# H& M2 |' C* q
      下面我把A和B的主函数发一下
7 v$ S; z# a7 R/ c3 S+ `0 q4 O5 k( {! B0 {; t4 t: z
while(1)# m' o' s4 r: ]
{! D! q) b+ Z; T; o
           SetTxMode();                                // Set Tx Mode* r. I7 x0 g" n$ g6 @6 ~1 t1 n  m5 k
                     TxPacket();                        // Transmit Tx buffer data        
) B, a+ T9 o( B$ o8 `6 z' p               SetRxMode();8 J2 n9 a& {4 ]2 @$ B; l6 y3 d7 {
         //=====================等待NRF905接收
* {) Q2 @* [) N- D           if (DR)                        // If recive data ready...
4 a+ ~  O# n5 M0 S. ?: X/ M           RxPacket();                        // ... recive data
* E/ t$ [) X$ n+ m; z# }            if(RxBuf[0]==0x01)
6 Z& ?- l1 J8 ]4 [# _1 E7 E                 {
# ^" m1 C% W/ J& |1 k! O- s; D1 D                         RxBuf[0] =0;4 z. Q# v. a/ ], h. y3 X
                         LED1 = 0 ;( P3 l/ v6 J) Q1 o+ X! l
                Delay(1000);                                        // ...light led% ?# F' j3 y8 I% J! |: o( p
             LED1 = 1 ;' l/ y  V$ ]1 g, y9 q% r! ?
                      Delay(500);                                        // ...light led        
7 k# T/ E- \  I+ o) y( X. q
* G0 m1 P6 s7 m( m" Y9 x5 C8 F             }; t$ y4 ?) t5 M" w! R4 Q
}$ M# E- R$ G+ m0 |
上面这个是A的程序,下面我把B的程序发一下
1 t+ w- M- P: R5 {; Owhile(1)
  B, b: v5 n1 N+ O{: l. H2 `3 b6 d; Y0 ^
                SetRxMode();
8 t# }3 s2 d! Z; S# R* @9 |# H         //=====================等待NRF905接收& g/ h7 a0 ?2 q" _
           if (DR)                        // If recive data ready...6 w2 T6 N3 {) i/ r: |% u* t1 o* {
           RxPacket();                        // ... recive data
$ P2 K; t' [4 K8 o  N$ m# |           if(RxBuf[0]==0xaa)1 X+ Q3 `1 ]+ ]1 f6 O9 o% n
           {  
7 [+ K  Z9 n1 H) W3 u8 U                   RxBuf[0]=0;
! l5 e; A( E5 G+ [$ n; N+ o7 l             LED1 = 0;: X! T, M' W% X; \2 l& k0 f
                        Delay(1000);2 {" e8 I# m& r9 S, }0 x
                 LED1 = 1;
# P. V3 Q9 G7 t. F* X                        Delay(500);
  k0 [: z$ l/ [7 `2 b9 P        
: k, y, m5 S1 T; ?/ W8 J                         SetTxMode();                                // Set Tx Mode
/ j0 s1 R# L3 n/ p6 _9 _& g) `                     TxPacket();                                // Transmit Tx buffer data
6 w3 b0 z7 {* i# q! {       }
$ m9 l5 K) }0 x- P. f, n1 R! }) Z}
3 A7 \! ^5 w2 t4 H9 W4 N# l; W/ x1 Y上面这个是B的程序
" ^8 r7 a( c3 o, |5 ]( V我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。" T( b! Z9 K, Z- P; Y
现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用0 x9 S7 L4 |5 i- X& {

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!: U0 x# H! U) l: t* F  ^, L

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?% d- L& I4 ?7 C

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
2 L! b* C4 I; E. }9 f9 H9 G' u( _
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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