|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题' L% k9 i! _% F
下面我把A和B的主函数发一下
_( U3 T1 D5 Q9 Y" t( r0 U5 g; ^" Z$ e" e
while(1)
! C" s( [" \- j4 s{' ~ p* h$ w# G! ~
SetTxMode(); // Set Tx Mode
& v7 T8 S( W& O TxPacket(); // Transmit Tx buffer data ( a e0 D+ u% m _3 I
SetRxMode();
5 \ ^. r. ^ N0 x; I( }& q X //=====================等待NRF905接收" I0 T* a+ F" W# `6 T0 ]
if (DR) // If recive data ready...
5 U' C1 E! A4 N% F; { RxPacket(); // ... recive data
( F) m! E8 _* u; f if(RxBuf[0]==0x01)
- @# Q1 E5 m. a$ ?9 c. x2 i {2 T7 X" R9 A# R- B( e+ B
RxBuf[0] =0;. j1 j+ \0 P6 z0 X6 ~. d7 Z9 k
LED1 = 0 ;
, q. q: [$ Z5 c6 y' N Delay(1000); // ...light led
% ]$ k3 U4 J- f' D/ J& f9 x! g LED1 = 1 ;
8 B" G+ p9 b- B' b Delay(500); // ...light led + ^0 b/ h( w( y' ?1 u0 V
/ H4 W3 U2 g& Z8 E$ N6 s }
- r8 V9 U/ v6 }$ N4 X" ]' G! S}0 l3 `9 m" ~& V
上面这个是A的程序,下面我把B的程序发一下
& T4 a; B& ~: w0 g7 Wwhile(1)4 s# t4 E3 z0 O) \; E9 n
{& v# K" j3 D3 I9 e2 J8 O
SetRxMode();
' F! y1 w+ P& w/ h4 G: }/ s //=====================等待NRF905接收7 Z2 k! i9 c' I& X
if (DR) // If recive data ready...
' E* |. R. w( G, c7 T RxPacket(); // ... recive data
2 B9 S. @$ o9 R; ? if(RxBuf[0]==0xaa)) N, {. p4 V. |
{
- t( t% }8 m+ C ?- ^6 |& }+ Q RxBuf[0]=0;" T4 p% h5 N' i. |# J
LED1 = 0;
2 X, d, o' W1 r- |5 f! _# k' E Delay(1000);2 [3 @$ j2 N5 f4 Y8 q4 X$ u
LED1 = 1;
( z& n; K( G, ~ V) m9 U( B Delay(500);- W$ j9 y g, \& f3 V
+ Y, D' c$ Y& s: K, I* D# n SetTxMode(); // Set Tx Mode# E9 Z* \" Y5 h% R$ ~1 j
TxPacket(); // Transmit Tx buffer data/ a; i7 Z- C6 R R% R
}
" c% }: j, G) \" |: u! F0 E+ }}2 J/ d& J1 {4 F6 F) R
上面这个是B的程序, H, _9 b8 L/ Y4 r) X/ o/ O& Y
我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。
" \/ B% l$ L' R# ~% Z: Q4 [5 Q现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用& g5 i4 p& F1 L: X. b
|
|