|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题
. m8 d7 b8 X h' v/ O2 D( a 下面我把A和B的主函数发一下
' I% V( ]; q8 |
: k. t. i2 @3 R: {5 lwhile(1)/ M; p! k' z: b8 v% k
{
1 ~& Z5 u5 \* n q- G SetTxMode(); // Set Tx Mode! J# H: N: f5 j4 p0 N+ j
TxPacket(); // Transmit Tx buffer data
, m4 r& x# J. R, N SetRxMode();
; T) |# m+ ^! ]. p2 ~2 | //=====================等待NRF905接收4 m: y3 z. ~0 [, H4 W: r
if (DR) // If recive data ready...) _9 Z7 }* K& I, ~
RxPacket(); // ... recive data, ~' r4 l; O5 q& A
if(RxBuf[0]==0x01)* C+ P. U; _0 U# v+ {3 A+ @3 _
{3 m$ @8 ^+ Q2 A* Y
RxBuf[0] =0;
5 z, D4 K$ e# t# Y7 Y6 b$ _ LED1 = 0 ;. E; R3 M# u5 e, _7 m Y( P
Delay(1000); // ...light led. y2 z1 m3 t% P3 a
LED1 = 1 ;
9 r9 E/ N' O1 e/ Y/ Q Delay(500); // ...light led
$ {" u: P" x4 J5 x- g2 y7 e
* \9 S1 s' M" m }
/ s* f/ c/ z! c8 q1 K2 T1 E}& Y: V0 u- M2 u9 ?8 A4 r7 v
上面这个是A的程序,下面我把B的程序发一下1 }7 N" I6 Y, d' Z e
while(1)
: L1 u( f }( u* H2 e2 m' B4 l{
2 @& J" A% _4 |' S$ v SetRxMode();1 [# V5 [$ S& x
//=====================等待NRF905接收
9 A# f+ t- }/ Q if (DR) // If recive data ready...
: k' d* w3 O& J5 O# A/ S RxPacket(); // ... recive data, l. b' c; i4 ]9 s; U' N" B, t0 c
if(RxBuf[0]==0xaa)
3 o. T- L( h# J2 X# o1 q% j% K { , c8 c/ N' g% r
RxBuf[0]=0;
& `7 g% ~+ d; Z+ t2 C. O: }$ @ LED1 = 0;; |/ F9 v2 @/ m8 Z/ Q
Delay(1000);+ e' q, n* w& U" Y+ F
LED1 = 1;; Z1 U$ b: K N$ B1 d2 e- j
Delay(500);
; b! `5 G# c8 O9 q- P3 Z3 {+ M3 W6 O
9 v6 p' ^4 n, T$ y SetTxMode(); // Set Tx Mode& \4 A! G- q3 r2 t2 J
TxPacket(); // Transmit Tx buffer data
* F. H1 ~) L) c8 C( ~' G q }% v, ^* A. ?" @& N. G2 S% @6 v
}
% g1 W$ {/ X3 E$ j4 i8 B0 Y8 F% T上面这个是B的程序$ I' h# h$ S, U8 e* O: Y$ Z! B
我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
- Y. F% k+ O: |8 d' _现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用, p/ f* J5 i* I0 s
|
|