<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 |