|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
A发给B或B发给A都可以实现,但是A发给B,B收到后再发给A,A就收不到了,可以确定B确实发出去了,但A没有收到数据,地址和发送接收状态都没问题# H& M2 |' C* q
下面我把A和B的主函数发一下
7 v$ S; z# a7 R/ c3 S+ `0 q4 O5 k( {! B0 {; t4 t: z
while(1)# m' o' s4 r: ]
{! D! q) b+ Z; T; o
SetTxMode(); // Set Tx Mode* r. I7 x0 g" n$ g6 @6 ~1 t1 n m5 k
TxPacket(); // Transmit Tx buffer data
) B, a+ T9 o( B$ o8 `6 z' p SetRxMode();8 J2 n9 a& {4 ]2 @$ B; l6 y3 d7 {
//=====================等待NRF905接收
* {) Q2 @* [) N- D if (DR) // If recive data ready...
4 a+ ~ O# n5 M0 S. ?: X/ M RxPacket(); // ... recive data
* E/ t$ [) X$ n+ m; z# } if(RxBuf[0]==0x01)
6 Z& ?- l1 J8 ]4 [# _1 E7 E {
# ^" m1 C% W/ J& |1 k! O- s; D1 D RxBuf[0] =0;4 z. Q# v. a/ ], h. y3 X
LED1 = 0 ;( P3 l/ v6 J) Q1 o+ X! l
Delay(1000); // ...light led% ?# F' j3 y8 I% J! |: o( p
LED1 = 1 ;' l/ y V$ ]1 g, y9 q% r! ?
Delay(500); // ...light led
7 k# T/ E- \ I+ o) y( X. q
* G0 m1 P6 s7 m( m" Y9 x5 C8 F }; t$ y4 ?) t5 M" w! R4 Q
}$ M# E- R$ G+ m0 |
上面这个是A的程序,下面我把B的程序发一下
1 t+ w- M- P: R5 {; Owhile(1)
B, b: v5 n1 N+ O{: l. H2 `3 b6 d; Y0 ^
SetRxMode();
8 t# }3 s2 d! Z; S# R* @9 |# H //=====================等待NRF905接收& g/ h7 a0 ?2 q" _
if (DR) // If recive data ready...6 w2 T6 N3 {) i/ r: |% u* t1 o* {
RxPacket(); // ... recive data
$ P2 K; t' [4 K8 o N$ m# | if(RxBuf[0]==0xaa)1 X+ Q3 `1 ]+ ]1 f6 O9 o% n
{
7 [+ K Z9 n1 H) W3 u8 U RxBuf[0]=0;
! l5 e; A( E5 G+ [$ n; N+ o7 l LED1 = 0;: X! T, M' W% X; \2 l& k0 f
Delay(1000);2 {" e8 I# m& r9 S, }0 x
LED1 = 1;
# P. V3 Q9 G7 t. F* X Delay(500);
k0 [: z$ l/ [7 `2 b9 P
: k, y, m5 S1 T; ?/ W8 J SetTxMode(); // Set Tx Mode
/ j0 s1 R# L3 n/ p6 _9 _& g) ` TxPacket(); // Transmit Tx buffer data
6 w3 b0 z7 {* i# q! { }
$ m9 l5 K) }0 x- P. f, n1 R! }) Z}
3 A7 \! ^5 w2 t4 H9 W4 N# l; W/ x1 Y上面这个是B的程序
" ^8 r7 a( c3 o, |5 ]( V我的目的是通过A发送给B一个命令,B在接收到特定的数据后返回给A数据,在这个过程中可以确定的是B确实收到了,而且B也发出来了,但是A却收不到,而且地址和模式都是对的,这点可以由上面程序看到。" T( b! Z9 K, Z- P; Y
现在我感觉就是由于A发送过而导致A不能接收到数据了,但是我不知道是不是要重新设置什么东西,我曾经试过重新初始化和重新配置寄存器但是都没用0 x9 S7 L4 |5 i- X& {
|
|