|
|
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 |
|