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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
( q2 P, [& h8 ~7 L      下面我把A和B的主函数发一下9 r0 \, q- T+ k8 L+ Y0 _. r

  t3 K3 k  B, Mwhile(1)
, t* v2 f% r, H) b" R& ~{
8 l0 i/ ^. [$ {9 n  s           SetTxMode();                                // Set Tx Mode, a$ ^5 `( r6 w3 D5 |* r
                     TxPacket();                        // Transmit Tx buffer data        
, R; U+ j% M/ Z: _/ f9 G5 r               SetRxMode();
: y( u& S, h) W+ v/ }% W0 L; C( L         //=====================等待NRF905接收# K3 W7 }- l7 Z& p2 }3 P" a/ E
           if (DR)                        // If recive data ready...0 u" T9 r- M2 z5 H* c4 i( S% V
           RxPacket();                        // ... recive data
$ W  l6 h* e# x. z            if(RxBuf[0]==0x01)" c7 z  C5 G: Z1 |
                 {0 w( R: @. A; C3 P1 B
                         RxBuf[0] =0;
+ ~5 q3 {1 c' ]! Q9 z) A                         LED1 = 0 ;& o6 p, R) \8 y* z6 B' `
                Delay(1000);                                        // ...light led# K+ d+ T$ m; Z+ H7 f3 R
             LED1 = 1 ;
$ ]# I: d4 \* U; \: A6 b) J5 E                      Delay(500);                                        // ...light led        ! m; N5 Q3 d. t2 q

* G8 @9 s6 x/ o$ x: {; J             }
2 g  r3 v" U( n: k4 R. W+ i}
9 K% ]0 P$ ]) z上面这个是A的程序,下面我把B的程序发一下. ]( X, t( t9 m, e/ N- {
while(1)$ \! E8 i: {. T# F$ k
{' b7 C& i+ W* P, H% {
                SetRxMode();
# B, e5 a% h) c  T  a0 h         //=====================等待NRF905接收
9 ^# O0 W/ t# y( V           if (DR)                        // If recive data ready...
* P- ~* m) F# h- F5 D! Q           RxPacket();                        // ... recive data, i! r5 |  N7 ]0 ]! e$ S  c7 f6 G
           if(RxBuf[0]==0xaa)
8 ?( z6 m6 [# p1 U! c& t3 |/ ]! r           {  
" \& p/ ?& h. U! a9 p, w                   RxBuf[0]=0;
5 h- n) F, s' c! k7 d/ j5 Y" B             LED1 = 0;7 Z7 O6 t* w8 C* P9 w& z! s2 a
                        Delay(1000);  m, ~3 E+ m2 t- I! F* }
                 LED1 = 1;! Q* a6 _( r' r8 b3 m6 o7 R  ^
                        Delay(500);
/ L, V- W' w) Z& N        . u# ^( t2 T3 E  O7 A
                         SetTxMode();                                // Set Tx Mode6 I% d: A  U* K& K# s9 L
                     TxPacket();                                // Transmit Tx buffer data
0 o+ z, N$ V7 \5 I: B- {5 O( F       }9 \1 O$ h+ S( X3 a; a
}, e$ r+ Z5 O7 I: F0 p
上面这个是B的程序
. F. z- G) }- ^, ?+ z我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
5 ?- B8 E2 Q( w+ [% e4 f1 F现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用& x( m5 U; w+ A9 h  P

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
+ `$ l# E! G( C5 P+ _5 }$ Y3 ~' g

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?6 N! @- q) L# n' v0 Y- q

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试
- q3 @, j! R2 f- X* W* @2 w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-31 17:05 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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