COCOFLY教程
——疯壳·无人机·系列
SPI(2.4G 双机通信)

图1
一、NRF24L01
1.1 NRF24L01 简介
NRF24L01 是由NORDIC 生产的工作在 2.4GHz~2.5GHz 的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。
NRF24L01 的输出功率频道选择和协议的设置均可以通过 SPI 接口进行设置,因此,其具有极高的兼容性,几乎可以连接到各种单片机芯片,并完成无线数据传送工作。除此之外,NRF24L01 的功耗也非常的低,当工作在发射模式下发射功率为 0dBm 时电流消耗仅为 11.3mA ,接收模式时为 12.3mA,掉电模式和待机模式下电流消耗更低。所以 NRF24L01 可以广泛地应用在无线键鼠、无线门禁、无线电台、智能工业设备、玩具等场合。
如下表所示列举了 NRF24L01 的特性参数。


表1
如下图所示为 NRF24L01 芯片实物图

图2
二、2.4G 双机通信
2.1 NRF24L01 使用方法
NRF24L01 是以包的形式进行发送的,具体的包格式如下表所示。

表2
NRF24L01 在通信前需要进行一系列的参数配置,而在配置其参数时,NRF24L01 必须工作待机模式,即 CE 脚拉低。在发送模式下的配置流程如下表所示。

表3
配置为接收模式的流程如下表所示。

表4
配置完后就是发送和接收的处理了,发送的流程如下表所示。

表5
接收流程如下表所示。

表6
三、2.4G 双机通信实验
2.4G 双机通信实验涉及到遥控器端和飞控端,两者的 2.4G 通道均设置为
110。首先配置遥控器端的左摇杆的按键为外部中断模式,一旦按下做摇杆按键, 就发送“Remoter”这个字符串到飞控上,飞控接收到后,把 LED 航情灯进行闪烁,然后再向遥控器回发“Airplane”这个字符串,遥控收到后,闪烁电源指示灯。无论是遥控器还是飞控使用 NRF24L01 均使用到了 STM32 的硬件 SPI,不同的是遥控器使用的是 SPI2,而飞控使用的是 SPI1。STM32 的 SPI 配置方法可以参考飞控开发基础《SPI(六轴传感器数据获取)》。
3.1遥控器端
本次实验中遥控器端触发无线数据的发送是通过外部中断实现的,具体的外
部中断配置可以参考《遥控器开发实战-中断》。在该中断中向飞控发送“Remoter” 字符串,具体代码如下图所示。

图3
遥控器端的 NRF24L01 的初始化代码如下图所示。

图4
遥控器端的接收处理是在主循环中轮询实现的,收到飞控发来的信息后,电源指示灯闪烁,具体代码如下图所示。

图5
3.2飞控端
飞控端的无线数据接收在主循环中实现,接收到遥控器发送的信息后,电源指示灯闪烁,且向遥控端回发“Airplane”,具体代码如下图所示。

图6
飞控端的 NRF24L01 的初始化代码如下。

图7
3.3实验现象
把遥控器端代码下载到遥控器内、飞控端代码下载到飞控内。上电,此时按下遥控器的左摇杆按键,可见飞控四个电机底部的 LED 航情灯闪烁,然后遥控的电源指示灯也闪烁。这就意味着飞控收到了来自遥控器端的信息并且回发了信息给遥控器,且遥控器也收到了来自飞控端的回发信息。如下图所示为飞控航情灯以及遥控左按键及电源指示灯。

图8
文件下载请点击:

热门资料
全部回复 0