<a name="_Toc342394300">37.1 NRF24L01无线模块简介
NRF24L01无线模块,采用的芯片是NRF24L01,该芯片的主要特点如下:
1)2.4G全球开放的ISM频段,免许可证使用。
2)最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。
3)125个可选的频道,满足多点通信和调频通信的需要。
4)内置CRC检错和点对多点的通信地址控制。
5)低工作电压(1.9~3.6V)。
6)可设置自动应答,确保数据可靠传输。
该芯片通过SPI与外部MCU通信,最大的SPI速度可以达到10Mhz。本章我们用到的模块是深圳云佳科技生产的NRF24L01,该模块已经被很多公司大量使用,成熟度和稳定性都是相当不错的。该模块的外形和引脚图如图37.1.1所示:
图37.1.1 NRF24L01无线模块外观引脚图
模块VCC脚的电压范围为1.9~3.6V,建议不要超过3.6V,否则可能烧坏模块,一般用3.3V电压比较合适。除了VCC和GND脚,其他引脚都可以和5V单片机的IO口直连,正是因为其兼容5V单片机的IO,故使用上具有很大优势。
关于NRF24L01的详细介绍,请参考NRF24L01的技术手册。
<a name="_Toc342394302">37.3 软件设计
打开上一章的工程,首先在HARDWARE文件夹下新建一个NRF24L01的文件夹。然后新建一个24l01.c和24l01.h的文件保存在NRF24L01文件夹下,并将这个文件夹加入头文件包含路径。
打开24l01.c文件,输入如下代码:
#include "24l01.h"
#include "lcd.h"
#include "delay.h"
#include "spi.h"
const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
const u8 RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //发送地址
//初始化24L01的IO口
void NRF24L01_Init(void)
{
RCC->APB2ENR|=1ODR|=1CRL|=0X33000000; //PG6 7 推挽
GPIOG->CRH&=0XFFFFFFF0;
GPIOG->CRH|=0X00000008; //PG8 输入
GPIOG->ODR|=7 |