当按下某一键时,STM32控制LED显示相应的数字,同时通过nRF24L01将该数字发送出去,另一个nRF24L01接收到该数字,经由STM32显示于数码管上。
本系统的工作流程图如下:
图1.2 系统工作流程图 nRF24L01无线通信模nRF24L01无线通信模开始 按下键盘 LED显示 中心模块 中心模块 LED显示 结束 1.6 关键技术
在本系统中,使用的关键技术如下: 1. 基于ARM7的STM32微处理器控制 2. nRF24L01 2.4G通信 3. 矩阵键盘
5
4. LED显示
二 nRF2401无线通信系统的硬件设计
本次设计使用的硬件主要是STM32开发板和nRF24L01无线通信模块,集成度较高,所以硬件设计的重点就在于nRF24L01与STM32的接口设计。 2.1 nRF24L01 引脚介绍
图 2-1 nRF24L01功能框图
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:芯片控制数据线(从机输入,主机输出)。
6
2.2.nRF24L01与STM32的接口设计
STM32的串行外设接口(SPI)提供与外部设备进行同步串行通讯的功能,通过接口可以被设置工作在主模式或者从模式。nRF24L01的控制电路与STM32控制器的SPI口相连接,以串行方式进行通信以交换信息,实现nRF24L01串行口高速通信。
该射频芯片与MCU的接口原理图如下图2-2所示。
图2-2 nRF24L01与MCU接口原理图
nRF24L01芯片的片选线CS与MCU的PB0相连接、芯片的片选线SCK与MCU的PA5相连接、中断信号IRQ与MCU的PB1相连接、芯片的模式控制线CE与MCU的PA4相连接,数据信号引脚MISO、MOSI分别和MCU的PA6和PA7相连接。
三、nRF2401无线通信系统的软件设计
3.1 nRF24L01无线通信分系统的软件结构
无线通信系统的软件模块主要包括,nRF24L01与STM32F103微处理器MCU串行外设接口(SPI )之间的通信程序,nRF24L01之间的收发程序,矩阵键盘程序,中断程序,数码管的显示程序以及STM32F103微处理器对收发到
7
数据的处理程序。建立在硬件的基础上,软件程序的设计完成了对硬件工作的调度和协调,实现了nRF24L01无线通信系统的通信。如下图3-1所示。
矩阵键盘 MCU SPI 数码管显示
射频芯片 双向通信
射频芯片 SPI
矩阵键盘 MCU 数码管显示
图3-1 nRF24L01无线通信系统软件设计结构
3.1.1 nRF24L01无线通信模块软件
nRF24L01无线通信模块所要实现的软件功能有:将主机数码管显示的数据发送到从机,从机进行接收,处理并显示在数码管上。如下图3-2所示
Nrf24L01通过nRF24L01接受数据
无线通信模块 显示于数码管 图4-2 nRF24L01无线通信模块软件结构
3.1.2.nRF24L01无线通信模块数据发送与接收
首先对MCU进行初始化配置,再对矩阵键盘初始化、数码管初始化、LED初始化、nRF24L01初始化、SPI初始化,然后检测nRF24L01它是否存在,当
8
不存在时LED灯就会亮提示24L01 Check Failed!当检测到nRF24L01射频芯片存在后,主机在自定义无线通信协议下发送数据,从机接收到数据信息后,取出数据,显示在数码管上。nRF24L01无线通信模块工作流程分别如下图3-3所示 系统时钟初始化、GPIO口初始化、开始
中断初始化 nRF24L01初始化、SPI初始化
处理数据 LED灯亮 接收数据 否 nRF24L01是否存在 是
返回 显示在数码管上 图3-3 nRF24L01无线通信模块软件流程图
3.2初始化程序的设计
嵌入式系统在正式工作前,都要进行一些初始化工作。因此在系统启动之初,为了能够让STM32单片机各项功能合理有序的工作,需要进行一系列的初始化配置。本文系统设计中初始化程序主要包括微处理器 STM32F103开发板的初始
9