|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
nRF24l01无线通信的实现6 @7 `; n: |- a9 {* G/ v5 V
4 Z4 {3 N7 n' B$ t
9 K% c3 D% V* {+ M* H+ Jnrf24l01无线通信实现,基于51单片机,实现矩阵键盘与数码管的显示,矩阵键盘按下几对应的接收端收到数据后相应的在数码管上显示按键号,从而实现无线通信。通信过程中,大致原理如下:1 Y) }0 n) r1 f0 D
1、发送方9 m. ?. h: T2 X& n
+ M" G7 ]5 v9 N5 w4 \
: A ?+ d9 {- L5 j7 a* Y首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TX FIFO中数据保留以便再次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知mcu。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。
+ p' Y. |# k% c" [0 ?2,接收方 5 U$ _$ x. L; ]( b; A
. m5 l; y& c) x" \8 r/ ?
首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RX FIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。
. p' h! c3 Y ~$ R& u9 O/ n $ N B) c% a) K. h5 \2 w( L1 L* G
) @" G) d, z! g. r! |6 k
7 G% U5 i1 b- U% r& w
$ g% B N3 q1 S* O5 L
' g8 k4 M% R }. ~; I( B
* D: S# q0 ]" }9 g' h8 L9 S8 C- `! w
. e1 ~* G) [( Z) F) B% a6 {
- s4 M$ ?: V0 Q M: x$ ^" t4 y( I; N. ^/ Q9 L
) _0 `% c$ p# `+ L/ s( p. [& U/ g! j$ E! B* o! x- G
6 l6 T% x/ w x5 j# b' ~0 g
0 i7 G, ^- K, k9 m9 ^9 B" O. h
9 t; }/ J. a2 m |
|