1nRF24L01无线通信系统设计学院:电子信息学院专业:电子信息工程姓名:学号:指导老师:1摘要本文介绍了一套基于STM32微处理器,结合nRF24L01无线通信模块的无线数据传输系统。nRF24L01无线通信系统是基于nRF24L01无线收发芯片,以STM32F103单片机为核心的半双工无线通信系统,文中详细阐述了该无线通信系统的硬件和软件设计。该系统主要由一个nRF24L01无线通信模块组成,在硬件基础上,结合nRF24L01的特点,实现了两个nRF24L01无线通信模块之间的通信。关键字:nRF24L0l;STM32;无线通信AbstractThispaperintroducesawirelesscommunicationsystem,asystembasedonSTM32microprocessor,combinedwithnRF24L01wirelesscommunicationmodule.nRF24L01wirelesscommunicationsystemisbasedonnRF2L01wirelesstransceiverchip,halfduplexwirelesscommunicationsystemwithacontrolcoreofSTM32F103MCU.Thispaperdescribesthehardwareandsoftwaredesignofthewirelesscommunicationsystem.ThesystemmainlyconsistsofanRF24L01wirelesscommunicationmodule,basingonthehardwareandcombiningwiththecharacteristicsofnRF24L01,andrealizetheimplementationofcommunicationbetweentwonRF24L01wirelesscommunicationmodules.Keywords:nRF24L01;STM32;WirelessCommunication2前言无线方案适用于布线繁杂或者不允许布线的场合,目前在遥控遥测、门禁系统、无线抄表、小区传呼、工业数据采集、无线遥控系统、无线鼠标键盘等应用领域,都采用了无线方式进行远距离数据传输。目前,蓝牙技术和Zigbee技术已经较为成熟的应用在无线数据传输领域,形成了相应的标准。然而,这些芯片相对昂贵,同时在应用中,需要做很多设计和测试工作来确保与标准的兼容性,如果目标应用是点到点的专用链路,如无线鼠标到键盘,这个代价就显得毫无必要。本无线数据传输系统采用挪威Nordic公司推出的工作于2.4GHzISM频段的nRF2401射频芯片。与蓝牙和Zigbee相比,nRF2401射频芯片没有复杂的通信协议,它完全对用户透明,同种产品之间可以自由通信。更重要的是,nRF2401射频芯片比蓝牙和Zigbee所用芯片更便宜。系统由单片机STM32F103控制无线数字传输芯片nRF2401,通过无线方式进行数据双向远程传输,两端采用半双工方式通信,该系统具有成本低,功耗低,软件设计简单以及通信可靠等优点。34一、nRF2401无线通信系统设计方案与论证1.1CPU的选择本设计中MCU使用的CPU是STM32F103xx增强型系列。STM32系列微控制器是由ST意法半导体公司一ARMCortex-M3为内核开发生产的32位微控制器(单片机),专为高性能、低成本、低功耗的嵌入式应用专门设计。工作频率为72MHz,内置高速存储器(最高可达512K字节的内存和64K字节的SRAM),可以用于存储程序和节点在工作过程中采集到的数据和无线传输的数据。具有丰富的增强型I/O端口和连接到两条高性能外设总线(AdvancedPeripheralBus,APB)的外设。串行外设接口(SPI)提供与外部设备进行同步串行通讯的功能,可实现nRF24L01串行口高速通信,通过接口可以被设置工作在主模式或者从模式。该系列单片机还内置了快速的中断控制器,使得中断间的延迟时间大大降低。因此系统设计中选用STM32F103RBT6微处理器拥有如下如下优点:7组16位GPIO口、5组USART串口、多个外部中断口;外设包含多个定时器、SPI通信口、FSMC液晶控制口、12位ADC转换口;最大功耗118mW,待机功耗7uW,属于高性能低功耗微处理器,在很大程度上提高了系统设计的nRF24L01无线通信分系统的工作性能。1.2无线通信模块的选择系统选用nRF24L01无线射频收发模块来实现nRF24L01无线通信分系统的通讯,它使用Nordic公司的nRF24L01芯片开发而成。nRF24L01是一款工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器芯片,集无线收发一体可用于短距离无线数据传输。该芯片内部集成了2.4GHz无线收发内核。体积小,功耗较低,外围电路简单。单收发,使用GFSK调制方式,内置了链路层,具有自动应答以及自动重发功能,地址及CRC检测功能,数据传输为1或2Mbps,使用SPI接口与微控制器连接进行芯片的配置和数据的传输,SPI接口的数据速率0~8Mbps,具有125个可选的射频通道,工作电压为1.9~3.6V。无线收发器包括:频率发生器增强型SchockBurstTM模式控制器功率放大器、晶体振荡器调制器、解调器输出功率频道选择和协议的设置。可以通过SPI接口进行设置,5极低的电流消耗当工作在发射模式下发射功率为-6dBm时电流消耗为9.0mA。接收模式时为12.3mA掉电模式和待机模式下电流消耗更低。nRF24L01芯片已经被广泛应用到无线鼠标、键盘、遥控器等小型电子设备以及安防系统、门禁系统、遥感勘测系统等大型系统中,这些设备已占有很强的市场优势,相关技术也已趋于成熟。随着人们对低成本无线网络需求的不断增强,目前国内外研究机构已对nRF24L01在组网技术上的研究已形成新的热点,并在相关领域取得一定成就,因此本次设计中选择此射频芯片进行无线通信,以确保短距离通信的有效性和可靠性。1.3显示模块的选择LED数码管具有功耗低,亮度高,显示稳定,编程简单等优点,完全可以满足本次设计的要求,所以采用LED显示。1.4系统整体的最终方案综合考虑以上各个模块的设计方案,nRF24L01无线通信系统的系统结构框图如下:图1.1系统结构图根据功能不同,可以把整个系统分为中心模块、nRF24L01无线通信模块、LED显示模块。中心模块为STM32,主要功能是控制nRF24L01无线通信和LED显示。nRF24L01无线通信模块与中心模块连接。LED显示模块显示数据。1.5系统工作流程图中心模块nRF24L01无线通信模块LED显示nRF24L01无线通信模块中心模块LED显示显示6当按下某一键时,STM32控制LED显示相应的数字,同时通过nRF24L01将该数字发送出去,另一个nRF24L01接收到该数字,经由STM32显示于数码管上。本系统的工作流程图如下:图1.2系统工作流程图1.6关键技术在本系统中,使用的关键技术如下:1.基于ARM7的STM32微处理器控制2.nRF24L012.4G通信3.矩阵键盘开始按下键盘中心模块LED显示nRF24L01无线通信模块nRF24L01无线通信模块中心模块LED显示结束74.LED显示二nRF2401无线通信系统的硬件设计本次设计使用的硬件主要是STM32开发板和nRF24L01无线通信模块,集成度较高,所以硬件设计的重点就在于nRF24L01与STM32的接口设计。2.1nRF24L01引脚介绍图2-1nRF24L01功能框图nRF24L01功能框图如图3-3所示,从单片机控制的角度来看,我们只需要关注框图右面的六个控制和数据信号,分别为CSN(PG7)、SCK(PB13)、MISO(PB14)、MOSI(PB15)、IRQ(PG8)、CE(PG6)。控制线:CSN:芯片的片选线,CSN为低电平芯片工作。SCK:芯片控制的时钟线(SPI时钟)。CE:芯片的模式控制线。在CSN为低的情况下,CE协同NRF24L01的CONFIG寄存器共同决定NRF24L01的状态。IRQ:中断信号。无线通信过程中MCU主要是通过IRQ与NRF24L01进行通信。数据线:MISO:芯片控制数据线(主机输入,从机输出)。MOSI:芯片控制数据线(从机输入,主机输出)。82.2.nRF24L01与STM32的接口设计STM32的串行外设接口(SPI)提供与外部设备进行同步串行通讯的功能,通过接口可以被设置工作在主模式或者从模式。nRF24L01的控制电路与STM32控制器的SPI口相连接,以串行方式进行通信以交换信息,实现nRF24L01串行口高速通信。该射频芯片与MCU的接口原理图如下图2-2所示。图2-2nRF24L01与MCU接口原理图nRF24L01芯片的片选线CS与MCU的PB0相连接、芯片的片选线SCK与MCU的PA5相连接、中断信号IRQ与MCU的PB1相连接、芯片的模式控制线CE与MCU的PA4相连接,数据信号引脚MISO、MOSI分别和MCU的PA6和PA7相连接。三、nRF2401无线通信系统的软件设计3.1nRF24L01无线通信分系统的软件结构无线通信系统的软件模块主要包括,nRF24L01与STM32F103微处理器MCU串行外设接口(SPI)之间的通信程序,nRF24L01之间的收发程序,矩阵键盘程序,中断程序,数码管的显示程序以及STM32F103微处理器对收发到9数据的处理程序。建立在硬件的基础上,软件程序的设计完成了对硬件工作的调度和协调,实现了nRF24L01无线通信系统的通信。如下图3-1所示。SPI双向通信SPI图3-1nRF24L01无线通信系统软件设计结构3.1.1nRF24L01无线通信模块软件nRF24L01无线通信模块所要实现的软件功能有:将主机数码管显示的数据发送到从机,从机进行接收,处理并显示在数码管上。如下图3-2所示图4-2nRF24L01无线通信模块软件结构3.1.2.nRF24L01无线通信模块数据发送与接收首先对MCU进行初始化配置,再对矩阵键盘初始化、数码管初始化、LED初始化、nRF24L01初始化、SPI初始化,然后检测nRF24L01它是否存在,当MCU数码管显示矩阵键盘射频芯片射频芯片MCU数码管显示矩阵键盘Nrf24L01无线通信模块通过nRF24L01接受数据显示于数码管10不存在时LED灯就会亮提示24L01CheckFailed!当检测到nRF24L01射频芯片存在后,主机在自定义无线通信协议下发送数据,从机接收到数据信息后,取出数据,显示在数码管上。nRF24L01无线通信模块工作流程分别如下图3-3所示否是图3-3nRF24L01无线通信模块软件流程图3.2初始化程序的设计嵌入式系统在正式工作前,都要进行一些初始化工作。因此在系统启动之初,为了能够让STM32单片机各项功能合理有序的工作,需要进行一系列的初始化配置。本文系统设计中初始化程序主要包括微处理器STM32F103开发板的初始开始系统时钟初始化、GPIO口初始化、中断初始化nRF24L01初始化、SPI初始化nRF24L01是否存在接收数据处理数据显示在数码管上返回LED灯亮11化程序、串行外设接口(SPI)的初始化程序、nRF24L01芯片的初始化程序、矩阵键盘的初始化程序、数码管显示模块的初始化程序等。其中STM32F103单片机的初始化又包括复位和时钟初始化配置、GPIO口初始化配置、中断初始化配置。接下来,本节将详细介绍各部分初始化程序的内容。3.2.1RCC时钟初始化配置初始化配置中首先要进行时钟配置,以保证后续程序的正常运行,STM32中,共有五种时钟源,分别是:1.HSI高速内部时钟,频率为8MHz2.HSE外部告诉时钟,一般为石英晶振,频率为4-16MHz3.LSI低速内部时钟,频率为40KHz4.LSE低速外部时钟,一般