1
nRF24L01无线通信系统设计
学院:电子信息学院
专业:电子信息工程
姓名:
学号:
指导老师:
1
摘要
本文介绍了一套基于STM32微处理器,结合nRF24L01无线通信模块的无线数据传输
系统。nRF24L01无线通信系统是基于nRF24L01无线收发芯片,以STM32F103单片机为
核心的半双工无线通信系统,文中详细阐述了该无线通信系统的硬件和软件设计。该系统
主要由一个nRF24L01无线通信模块组成,在硬件基础上,结合nRF24L01的特点,实现了
两个nRF24L01无线通信模块之间的通信。
关键字:nRF24L0l;STM32;无线通信
Abstract
Thispaperintroducesawirelesscommunicationsystem,asystem
badonSTM32microprocessor,combinedwithnRF24L01wireless
24L01wirelesscommunicationsystemis
badonnRF2L01wirelesstransceiverchip,halfduplexwireless
paperdescribesthehardwareandsoftwaredesignofthewireless
temmainlyconsistsofanRF24L01
wirelesscommunicationmodule,basingonthehardwareandcombining
withthecharacteristicsofnRF24L01,andrealizetheimplementationof
communicationbetweentwonRF24L01wirelesscommunication
modules.
Keywords:nRF24L01;STM32;WirelessCommunication
2
前言
无线方案适用于布线繁杂或者不允许布线的场合,目前在遥控遥测、门禁
系统、无线抄表、小区传呼、工业数据采集、无线遥控系统、无线鼠标键盘等
应用领域,都采用了无线方式进行远距离数据传输。目前,蓝牙技术和Zigbee技
术已经较为成熟的应用在无线数据传输领域,形成了相应的标准。然而,这些
芯片相对昂贵,同时在应用中,需要做很多设计和测试工作来确保与标准的兼
容性,如果目标应用是点到点的专用链路,如无线鼠标到键盘,这个代价就显
得毫无必要。
本无线数据传输系统采用挪威Nordic公司推出的工作于2.4GHzISM频段的
nRF2401射频芯片。与蓝牙和Zigbee相比,nRF2401射频芯片没有复杂的通
信协议,它完全对用户透明,同种产品之间可以自由通信。更重要的是,nRF2401
射频芯片比蓝牙和Zigbee所用芯片更便宜。系统由单片机STM32F103控制无线
数字传输芯片nRF2401,通过无线方式进行数据双向远程传输,两端采用半双工
方式通信,该系统具有成本低,功耗低,软件设计简单以及通信可靠等优点。
3
一、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。无线收发器包
括:频率发生器增强型SchockBurst
TM
模式控制器功率放大器、晶体振荡器调制器、解调
器输出功率频道选择和协议的设置。可以通过SPI接口进行设置,极低的电流消耗当工作
在发射模式下发射功率为-6dBm时电流消耗为9.0mA。接收模式时为12.3mA掉电模式和
待机模式下电流消耗更低。
nRF24L01芯片已经被广泛应用到无线鼠标、键盘、遥控器等小型电子设备以及安防系
统、门禁系统、遥感勘测系统等大型系统中,这些设备已占有很强的市场优势,相关技术
也已趋于成熟。随着人们对低成本无线网络需求的不断增强,目前国内外研究机构已对
nRF24L01在组网技术上的研究已形成新的热点,并在相关领域取得一定成就,因此本次设
计中选择此射频芯片进行无线通信,以确保短距离通信的有效性和可靠性。
4
1.3显示模块的选择
LED数码管具有功耗低,亮度高,显示稳定,编程简单等优点,完全可以
满足本次设计的要求,所以采用LED显示。
1.4系统整体的最终方案
综合考虑以上各个模块的设计方案,nRF24L01无线通信系统的系统结构框图如
下:
图1.1系统结构图
根据功能不同,可以把整个系统分为中心模块、nRF24L01无线通信模块、LED显示模
块。
中心模块为STM32,主要功能是控制nRF24L01无线通信和LED显示。
nRF24L01无线通信模块与中心模块连接。
LED显示模块显示数据。
1.5系统工作流程图
当按下某一键时,STM32控制LED显示相应的数字,同时通过nRF24L01将该数字发
送出去,另一个nRF24L01接收到该数字,经由STM32显示于数码管上。
本系统的工作流程图如下:
中心模块
nRF24L01无线通信模块
LED显示
nRF24L01无线通信模块
中心模块
LED显示
显示
开始
按下键盘
中心模块
LED显示
nRF24L01无线通信模
块
nRF24L01无线通信模
块
中心模块
5
图1.2系统工作流程图
1.6关键技术
在本系统中,使用的关键技术如下:
1.基于ARM7的STM32微处理器控制
24L012.4G通信
3.矩阵键盘
显示
二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进行通信。
数据线:
6
MISO:芯片控制数据线(主机输入,从机输出)。
MOSI:芯片控制数据线(从机输入,主机输出)。
24L01与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微处理器对收发到数据的处理程序。建立在硬件的基础
上,软件程序的设计完成了对硬件工作的调度和协调,实现了nRF24L01无线通信系统的
通信。如下图3-1所示。
MCU
数码管显示
矩阵键盘
7
SPI
双向通信
SPI
图3-1nRF24L01无线通信系统软件设计结构
3.1.1nRF24L01无线通信模块软件
nRF24L01无线通信模块所要实现的软件功能有:将主机数码管显示的数据发送到从机,
从机进行接收,处理并显示在数码管上。如下图3-2所示
图4-2nRF24L01无线通信模块软件结构
24L01无线通信模块数据发送与接收
首先对MCU进行初始化配置,再对矩阵键盘初始化、数码管初始化、LED初始化、
nRF24L01初始化、SPI初始化,然后检测nRF24L01它是否存在,当不存在时LED灯就会
亮提示24L01CheckFailed!当检测到nRF24L01射频芯片存在后,主机在自定义无线通信协
议下发送数据,从机接收到数据信息后,取出数据,显示在数码管上。nRF24L01无线通
信模块工作流程分别如下图3-3所示
射频芯片
射频芯片
MCU
数码管显示
矩阵键盘
Nrf24L01
无
线
通
信
模
块
通过nRF24L01接受数据
显示于数码管
开始
系统时钟初始化、GPIO口初始化、
中断初始化
8
否
是
图3-3nRF24L01无线通信模块软件流程图
3.2初始化程序的设计
嵌入式系统在正式工作前,都要进行一些初始化工作。因此在系统启动之初,为了能够
让STM32单片机各项功能合理有序的工作,需要进行一系列的初始化配置。本文系统设计
中初始化程序主要包括微处理器STM32F103开发板的初始化程序、串行外设接口(SPI)
的初始化程序、nRF24L01芯片的初始化程序、矩阵键盘的初始化程序、数码管显示
模块的初始化程序等。其中STM32F103单片机的初始化又包括复位和时钟初始化配
置、GPIO口初始化配置、中断初始化配置。接下来,本节将详细介绍各部分初始化程
序的内容。
3.2.1RCC时钟初始化配置
初始化配置中首先要进行时钟配置,以保证后续程序的正常运行,STM32中,共有五
种时钟源,分别是:
高速内部时钟,频率为8MHz
外部告诉时钟,一般为石英晶振,频率为4-16MHz
nRF24L01初始化、SPI初始化
nRF24L01是否存在
接收数据
处理数据
显示在数码管上
返回
LED灯亮
9
低速内部时钟,频率为40KHz
低速外部时钟,一般为外接的低速晶振,频率为32.768KHz
锁相环倍频输出,时钟输入源可为HSI/2、HSE、HSE/2,倍频范围2~16
倍,最大频率为72MHz
时钟初始化配置的流程如图3-4所示。
3.2.2SPI的初始化配置
STM32F103的串行SPI接口置配置时,设SPI为主,串行时钟在SCK脚产生。配置程
序软件及步骤如下:
1.配置nRF24L01的MOSI、MISO输入输出线和SCLK时钟线分别同CPU的SPI对应的
外设线相连接,即SPI1与SCK(PA5/SPI1_SCK)、MISO(PA6/SPI1_MISO)、MOSI(PA7/
SPI1_MOSI)相连接。
2.通过SPI_CR1寄存器的BR位定义串行时钟波特率分频值为256。
3.选择CPOL和CPHA位,定义数据传输和串行时钟的相位关系,选择了串行时钟的稳态,
时钟悬空低电平,数据捕获于第一个时钟沿。
4.设置DRR位来定义为8位。
5.配置SPI_CR1寄存器的LSBFIRST位定义帧格式。
6.如果NSS引脚需要工作在输入模式,硬件模式中在整个数据帧传输器件应把NSS脚连接
到高电平;在软件模式中,需设置SPI_CR1寄存器的SSM和SSI位,如果NSS引脚工作
在输出模式,则只需设置SSOE位。
7.设置MSTR和SPE位在这个配置中,MOSI脚是数据输出,而MISO脚是数据输入。SPI
串行口初始化流程图如3-5所示:
打开HSE时钟
开始
配置AHB时钟
配置PLL为HSE的9倍频
开启PLL
打开要使用的外设时钟
结束
图3-4RCC时钟初始化流程图
GPIO口配置
设定为双向通信
设定为主模式
设定数据位为8
选择串行时钟的相位
CPOL=0和极性CPHA=1
开始
10
3.2.3NVIC中断配置
为了能让系统程序的执行效率更高,所以必须尽量使用STM32的中断响应函数来取代
传统的循环判断方式。STM32中断种类丰富,数量充足,另有多种复用功能,给系统的整
体设计带来了极大方便。
STM32中断配置以抢占优先级与响应优先级这两项为主要参数,抢占优先级代表了中
断的嵌套关系,抢占优先级较高(数值较小)的中断能够在优先级较低的中断里面嵌套执
行。响应优先级表示了当中断同时发生的时候STM32响应的顺序,数值较小的中断优先响
应。
3.2.4nRF24L01初始化配置
nRF24L01初始化程序包括其与MCU的GPIO的配置、通信频率配置和SPI的初始化
配置等。nRF24L01初始化流程图如图3-6所示:在配置过程中使能APB2外围端口
GPIOB,GPIOA总线时钟,配置GPIO口PB0(CSN)、PA4(CE)推免输出,PB1(IRQ)
上拉输出,输出频率均为50MHz,初始化SPI,使能nRF24L01,SPI片选取消。
3.3nRF24L01无线通信软件设计
3.3.1nRF24L01射频芯片特性
1.射频通道
外围时钟总线配置
GPIO口配置
SPI初始化
使能nRF24L01
SPI片选取消
结束
开始
图3-6nRF24L01初始化流程图
11
nRF24L01的工作频率可选择的范围是2.400GHz到2.483GHz,每个频道的带宽是1Mhz
(1Mbps速率是)或2MHz(2Mbps速率时),射频通道通过寄存器RF_CH设置,设置后
模块的工作中心频率为F
0
=2400+RF
CH
[MHz]
发送方与接收方的射频通道号必须设为一致,当工作在2Mbps模式时,两对收发模块的
RF_CH设置必须小于2才能时两对模块通信互不影响。
2.工作模式
模式PWR_UPPRIM_RXCEFIFO寄存器状态
接收模式111—
发送模式101数据在TXFIFO寄存器中
发送模式101→0停留在发送模式直至数据发送完
待机模式Ⅱ101TXFIFO为空
待机模式Ⅰ1—0无数据传输
掉电模式0———
表3-1nRF24L01工作模式表
nRF24L01可设置为多种工作模式,通过寄存器PWR_UP、PRIM_RX和引脚CE设置,
详见上表3-1:
3.载波检测
nRF24L01具有载波检测功能,通过读取寄存器CD可知道空间中是否有对应频道的射
频信号,CD为高表示有信号,内部CD信号是经过载波的,高电平会保持128us以上。
4.数据通道
nRF24L01配置为接收模式时可以接收最多6个不同地址相同频率的数据,每个数据通
道拥有自己的地址并且可以通过寄存器来进行分别配置。数据通道的开启和关闭是通过寄
存器EN_RXADDR来设置的,低6位每一位控制一个通道,每个数据通道的地址通过寄存
器RX_ADDR_Px来配置(x为0到5,其中RX_ADDR_P0和RX_ADDR_P1是40位,
RX_ADDR_P2到第5通道的第8位到第39位于通道1相同,只有低8位可以设置。
5.数据包处理方式
nRF24L01有两种处理数据包的方式,ShockBurst
TM
模式和增强型ShockBurst
TM模式,
两种方式都是通过SPI接口与微控制器连接。
在
ShockBurst
TM
接收模式下,当接收到有效的地址和数据时IRQ通知MCU,随后MCU
可将接收到的数据从RXFIFO寄存器中读出。
在ShockBurst
TM
发送模式下,nRF24L01自动生成前导码及CRC校验。数据发送完毕
后IRQ通知MCU。减少了MCU的查询时间,也就意味着减少了MCU的工作量,同时减
少了软件的开发时间。nRF24L01内部有三个不同的RXFIFO寄存器(6个通道共享此寄存
器)和三个不同的TXFIFO寄存器。在掉电模式下、待机模式下和数据传输的过程中MCU
可以随时访问FIFO寄存器。
本文系统设计中使用的是增强型的ShockBurst
TM
模式,其可以同时控制应答及重发功
12
能而无需增加MCU工作量。发送方要求终端设备在接收到数据后有应答信号,以便于发送
方检测有无数据丢失,一旦数据丢失则通过重新发送功能将丢失的数据恢复。在增强型
ShockBurst
TM
下,这一切都由nRF24lL01芯片自动完成。
6.数据包格式
增强型ShockBurst
TM
模式下的数据包格式如表2:
前导码地址(3~5字节)9位(标志位)数据(1~32字节)CRC校验(0/1/2)
表2增强型ShockBurst
TM
模式下的数据包格式
ShockBurst
TM
模式下的数据包格式如表3。
前导码地址(3~5字节)数据(1~32字节)CRC校验(0/1/2)
表3ShockBurst
TM
模式下的数据包格式
前导码用来检测0和1,芯片在接收模式下去除前导码,在发送模式下加入前导码。
地址为接收地址,地址宽度可以是3、4或5字节宽度,地址可以对接收通道及发送通
道分别进行配置,从接收的数据包中自动去除地址。
标志位中的其中两位是PID,其他七位保留用作将来与其它产品相兼容。
PID数据包识别其中两位是用来每当接收到新的数据包后加1。
PID的作用是识别接收到的数据时新数据包还是重发的数据包。
(1)接收方
接收方对新接收数据包的PID值与上一包进行比较如果PID值不同则认为接收的数据包
是新数据包如果PID值与上一包相同则新接收的数据包有可能与前一包相同,接收方必须
确认CRC值是否相等如果CRC值与前一包数据的CRC值相等则认为是同一包数据并将其
舍弃。
(2)发送方
每发送一包数据则发送方的PID值加1。
是
否
开始
来自微处理
器新数据
包?
结束
增加PID的
否
来自微处理
器新数据包
丢弃重复数
据包
开始
结束
PID等于
lastPID的
值?
CRC等
于
LastCRC?
否
是
是
图3-7PID生成和检测
13
数据字段的宽度为1到32字节,发送方与接收方必须一致,接收到数据通道有效数据
宽度通过RX_PW_Px寄存器设置,x为0到5。
CRC校验是可选的,寄存器EN_CRC用来使能CRC,寄存器CRCO用于设置CRC模
式,有8位CRC校验的多项式X
8
+X
2
+X+1,16位CRC校验的多项式是X
16
+X
12
+X
5
+1,
发送方与接收方也必须一致,CRC计算范围包括整个数据包:地址、PID和有效数据等。
若CRC校验错误则不会接收数据包。
3.3.2SPI的读写程序
图3-8SPI程序时序图
1.数据发送过程
当一字节写进发送缓冲器时,发送过程开始。在发送第一个数据位时,数据字被并行地
(通过内部总线)传入以为寄存器,而后串行地溢出到MOSI脚上;MSB在线还是LSB在
线,取决于SPI_CR1寄存器中的LSBFIRST位,数据从发送缓冲器传输到移位寄存器时TXE
标志将被置位,如果设置SPI_CR1寄存器中的TXEIE位,将产生中断。
SPI总线读写操作流程图3-9如下:
发送一字节数据启动
SPI数据传输
等待数据发送结束
(SPIF将产生中断)
读出从机发送的数据
或释放从机
设置为SPI主机(设置
SPI_CR1寄存器)
选择从机
开始
14
2.数据接收过程
对于接收器来说,当数据传输完成时,移位寄存器里的数据传送到接收缓冲器,并且
RXNE标志被置位。如果SPI_CR2寄存器中的RXEIE位被置位,则产生中断。在最后采样
时钟沿,RXNE位被设置,在移位寄存器中接收到的数据字被传送到接受缓冲器,读SPI_DR
寄存器时,SPIU设备返回接受到的数据字,读SPI_DR寄存器将清除RXNE位。
3.3.3nRF24L01发送程序设计
发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有
效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连
续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10μs,延
迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,
接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,
则认为此次通信成功,TX_DS置高,同时TX_PLD从TXFIFO中清除;若未收到应答,
则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达到上限,MAX_RT置高,
TX_FIFO中数据保留以便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,
通知MCU。最后发射成功时,清STATUS中断标志位进入下一次发射。nRF24L01发送时
序图和流程图分别如下图3-10和3-11所示:
图3-10nRF24L01发送数据时序图
nRF24L01初始
化
配置为发送模
式
延迟20us
置CE为低
写Payload
置CE为高
清STATUS中断标
志位
15
3.3.4nRF24L01接收程序设计
接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收
状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储
在RXFIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU
去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最后接收成
功时,清STATUS中断标志位,等待接收下一组信号。nRF24L01接收数据时序图与流程图
分别如下图3-12和3-13所示:
图3-12nRF24L01接收数据时序图
否
nRF24L01初始化
配置为接收模式
延迟130us
置CE为高
16
17
四、nRF24L01无线通信系统的调试与实现
4.1nRF24L01无线通信系统调试
4.1.1硬件调试
图4-1nRF2401无线通信调试图
在实物连接完成后,对线路进行检查。看nRF2401的电源是否正确连接在了STM32
开发板的3.3V电源上,地线是否正确连接在开发板地线,然后其他6脚分别和PA4~PA7
和PB0~PB1相连接。
4.1.2软件调试
软件的调试主要是在Keil上进行,初步编译完成后,生成相关的.hex文件,将hex烧入
STM32开发板中,检查软件是否实现了自己想要的功能。检测程序功能效果,再经过编译
修改,最终得到理想的程序代码。软件调试建立在硬件调试成功的基础之上。
4.2nRF2401无线通信系统总体调试
1.按下矩阵键盘,观察数码管是否正确显示对应的数值。
2.观察接收端是否同步显示对应数值。
18
五、总结
5.1nRF2401无线通信系统的功能实现
本文设计了一个无线通信系统系统,以低成本、高性能和高可靠性为目标,有针对性
的选择硬件芯片型号,反复设计与调试软件程序,最终实现数据的收发,本系统成功实现
了预计的功能。本系统的实物结构如图5-1所示。
图5-1nRF2401无线通信系统实物图
5.2nRF2401无线通信系统功能展示
5.2.1发送数据
按下发送方的3所对应的按键,并按下发送键,接受方显示对应的数字。
19
图5-2发送数据
5.2.2接受数据
再由原接收方发送数据,原发送方接受数据。
20
图5-3接受数据
5.2.3最远有效通信距离
经测试,本系统最远有效通信距离可达5.5米。
5.3结论
通过nRF2401的点对点相结合的无线通信,nRF2401无线通信系统实现了数据的收发,
并在数码管上将数据展现给用户。通过现场测试与应用证明了该系统的可用性
=====WORD完整版----可编辑----专业资料分享=====
----完整版学习资料分享----
附录
部分程序源代码
主控函数
intmain(void)
{
u8t,n1,i;
u8tx_buf[33];
u8rx_buf[33];
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72);//延时初始化
exti_init();
LED_Init();//初始化与LED连接的硬件接口
uart_init(72,9600);//串口初始化为9600
KEY_Init();//初始化与按键连接的硬件接口
Matrix_Keyboard_Init();
SEG_Init();
NRF24L01_Init();
GPIOC->ODR|=0X0f;
GPIOD->ODR|=0XFf;
while(NRF24L01_Check())//检测不到24L01
{
GPIOC->ODR=0Xf0;
}
while(1)
{
RX_Mode();
while(NRF24L01_RxPacket(rx_buf))
{
i=KEY_Scan();
if(i==1)//按了KEY0则变成发送模式,发送对应数据,发送完后
变成接收模式
{
TX_Mode();//发送模式
LED0=0;
delay_ms(100);
LED0=1;
delay_ms(100);
NRF24L01_TxPacket(tx_buf);//发送命令数据
=====WORD完整版----可编辑----专业资料分享=====
----完整版学习资料分享----
break;//退出最近的循环,从而变回接收模式
}
while(!LED2)
{
//LED3=0;
//delay_ms(100);
//LED3=1;
//delay_ms(100);
t=Matrix_Keyboard_Scan();//得到键值
Show_Num(t);
switch(t)
{
ca1:tx_buf[0]=0X01;;break;
ca2:tx_buf[0]=0X02;;break;
ca3:tx_buf[0]=0X03;;break;
ca4:tx_buf[0]=0X04;;break;
ca5:tx_buf[0]=0X05;;break;
ca6:tx_buf[0]=0X06;;break;
ca7:tx_buf[0]=0X07;;break;
ca8:tx_buf[0]=0X08;;break;
ca9:tx_buf[0]=0X09;;break;
ca10:tx_buf[0]=0X0a;;break;
ca11:tx_buf[0]=0X0b;;break;
ca12:tx_buf[0]=0X0c;;break;
ca13:tx_buf[0]=0X0d;;break;
ca14:tx_buf[0]=0X0e;;break;
ca15:tx_buf[0]=0X0f;;break;
ca16:tx_buf[0]=0X10;;break;
}break;
}
}
switch(rx_buf[0])
{
ca0X01:Show_Num(1);break;
ca0X02:Show_Num(2);break;
ca0X03:Show_Num(3);break;
ca0X04:Show_Num(4);break;
ca0X05:Show_Num(5);break;
ca0X06:Show_Num(6);break;
ca0X07:Show_Num(7);break;
ca0X08:Show_Num(8);break;
ca0X09:Show_Num(9);break;
ca0X0a:Show_Num(10);break;
ca0X0b:Show_Num(11);break;
ca0X0c:Show_Num(12);break;
=====WORD完整版----可编辑----专业资料分享=====
----完整版学习资料分享----
ca0X0d:Show_Num(13);break;
ca0X0e:Show_Num(14);break;
ca0X0f:Show_Num(15);break;
ca0X10:Show_Num(16);rx_buf[0]=0;break;
}
参考文献:
[1]赵海,赵杰,刘铮,等.一种无线传感器网络节点的设计与实现[J].东北大学学报:自然科学
版,2009,30(6):809-812
[2]王秀梅.低功耗2.4GHz无线通信分系统的设计与实现[J].中国数据通信,2004(11):57—61
[3]李文忠,段朝玉.短距离无线数据通信[M].北京:北京航空航天大学出版社,2006.
本文发布于:2023-02-04 02:16:22,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/88/185592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |