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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题6 a6 g2 i6 U8 c. d1 B
      下面我把A和B的主函数发一下" W$ g" o. D" I3 D
' K7 K, w$ ~3 O+ D8 [6 m
while(1)4 K- J- A/ W/ z; H; F
{" p: v9 u6 S$ b1 e% A
           SetTxMode();                                // Set Tx Mode4 q% L7 Q5 Y( H# V3 R9 G" P' R
                     TxPacket();                        // Transmit Tx buffer data        
3 d: A, L2 `3 l( ~' j  S               SetRxMode();6 T, `0 m+ M- W
         //=====================等待NRF905接收& i1 |" d* n* b7 o8 ?4 D
           if (DR)                        // If recive data ready...7 O" _2 P$ Q( t) A% X
           RxPacket();                        // ... recive data: j; K! T$ m( @  o8 ]% i# R, ?( b
            if(RxBuf[0]==0x01)- ]( |8 T7 R! o. \: v/ }
                 {, c, {6 j8 m4 @. S: x3 {( I
                         RxBuf[0] =0;
9 M2 ]+ t/ l& M: D* z; e- _                         LED1 = 0 ;1 K3 y5 y2 l% X
                Delay(1000);                                        // ...light led$ A: W1 D2 [2 q, t, h1 u9 v
             LED1 = 1 ;7 |% ^% F# u$ W4 x( h% I$ k
                      Delay(500);                                        // ...light led        
6 k7 B0 Z7 z# `  p  g; e2 @* D& b, l( f
             }2 s: {# P# L) |1 c  U5 N* N5 P
}
$ o/ {+ k- @- I. G8 O上面这个是A的程序,下面我把B的程序发一下( \' S' x; H# Z: f0 ^8 f
while(1)
0 x5 l* g) o6 s8 W1 y. K{
6 h( T0 e4 p( F6 h) K                SetRxMode();
, L5 M, @' F7 N/ R! s         //=====================等待NRF905接收% \& s, ]$ N3 A3 g" w3 m
           if (DR)                        // If recive data ready...
& T! a- e% B3 }4 K           RxPacket();                        // ... recive data- K- H0 w  B- ]6 ?9 _' X: g
           if(RxBuf[0]==0xaa)% O3 B! X+ F- Z/ I! [9 L
           {  
: X3 x4 `' `8 `' Y                   RxBuf[0]=0;
- Z+ k! X+ F/ |( M* e/ c             LED1 = 0;! z; L( ~! P( t: |0 y' K
                        Delay(1000);( R- E, Q& C/ h: H% c2 C2 o3 H
                 LED1 = 1;
- p2 H5 P& D: s8 B, c, g- I# j                        Delay(500);. z# u! H/ a- X: }
        
5 K6 I9 i4 f. J; H2 N) w: J4 r                         SetTxMode();                                // Set Tx Mode' @2 h! s% q0 G8 Q
                     TxPacket();                                // Transmit Tx buffer data
' C! c2 \4 g" B4 x       }
" W0 _: a; B# \}! L/ i, ]" `; q" [3 }' |
上面这个是B的程序
& F8 o8 |+ q/ l, d- S我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
* b. u8 T  ^' [% }) X$ B  w现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用7 x2 K3 U  w6 f# Z" D

该用户从未签到

2#
发表于 2022-10-31 13:07 | 只看该作者
A此时没有处于接受状态!
' c! T; e5 v1 Y" \0 A9 Y

该用户从未签到

3#
发表于 2022-10-31 14:47 | 只看该作者
B收到数据LED灯亮一下,你确定B发送的数据是01H吗?是A想要的吗?- O) A) Q5 A: i( E' g4 K$ ~

该用户从未签到

4#
发表于 2022-10-31 14:57 | 只看该作者
A 发送完成以后,设置 REN=1,允许接收,试一试2 \, k$ ?8 o9 V& ]- `6 T9 e  a2 v0 ^
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-27 13:36 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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