收藏 分销(赏)

nRFL无线通信专业系统设计.doc

上传人:二*** 文档编号:4770148 上传时间:2024-10-12 格式:DOC 页数:31 大小:1.04MB
下载 相关 举报
nRFL无线通信专业系统设计.doc_第1页
第1页 / 共31页
本文档共31页,全文阅读请下载到手机保存,查看更方便
资源描述
nRF24L01无线通信系统设计 学院: 电子信息学院 专业: 电子信息工程 姓名: 学号: 指导老师: 摘要 本文介绍了一套基于STM32微处理器,结合nRF24L01无线通信模块无线数据传输系统。nRF24L01无线通信系统是基于nRF24L01无线收发芯片,以STM32F103单片机为关键半双工无线通信系统,文中具体叙述了该无线通信系统硬件和软件设计。该系统关键由一个nRF24L01无线通信模块组成,在硬件基础上,结合nRF24L01特点,实现了两个nRF24L01无线通信模块之间通信。 关键字: nRF24L0l;STM32;无线通信 Abstract This paper introduces a wireless communication system , a system based on STM32 microprocessor, combined with nRF24L01 wireless communication module . nRF24L01 wireless communication system is based on nRF2L01 wireless transceiver chip, half duplex wireless communication system with a control core of STM32F103 MCU.This paper describes the hardware and software design of the wireless communication system. The system mainly consists of a nRF24L01 wireless communication module, basing on the hardware and combining with the characteristics of nRF24L01, and realize the implementation of communication between two nRF24L01 wireless communication modules . Key words:nRF24L01;STM32;Wireless Communication 序言 无线方案适适用于布线繁杂或不许可布线场所,现在在遥控遥测、门禁系统、无线抄表、小区传呼、工业数据采集、无线遥控系统、无线鼠标键盘等应用领域,全部采取了无线方法进行远距离数据传输。现在,蓝牙技术和Zigbee 技术已经较为成熟应用在无线数据传输领域,形成了对应标准。然而,这些芯片相对昂贵,同时在应用中,需要做很多设计和测试工作来确保和标准兼容性,假如目标应用是点到点专用链路,如无线鼠标到键盘,这个代价就显得毫无必需。 本无线数据传输系统采取挪威Nordic企业推出工作于2.4GHz ISM 频段nRF2401 射频芯片。和蓝牙和Zigbee 相比,nRF2401 射频芯片没有复杂通信协议,它完全对用户透明,同种产品之间能够自由通信。更关键是,nRF2401 射频芯片比蓝牙和Zigbee 所用芯片更廉价。系统由单片机STM32F103控制无线数字传输芯片nRF2401,经过无线方法进行数据双向远程传输,两端采取半双工方法通信,该系统含有成本低,功耗低,软件设计简单和通信可靠等优点。 一、nRF2401无线通信系统设计方案和论证 1.1 CPU选择 本设计中MCU使用CPU是STM32F103xx增强型系列。 STM32系列微控制器是由ST意法半导体企业一ARM Cortex-M3为内核开发生产32位微控制器(单片机),专为高性能、低成本、低功耗嵌入式应用专门设计。工作频率为72MHz,内置高速存放器(最高可达512K字节内存和64K字节SRAM),能够用于存放程序和节点在工作过程中采集到数据和无线传输数据。含有丰富增强型I/O端口和连接到两条高性能外设总线(Advanced Peripheral Bus,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 接口进行设置,极低电流消耗当工作在发射模式下发射功率为-6dBm 时电流消耗为9.0mA。接收模式时为12.3mA掉电模式和待机模式下电流消耗更低。 nRF24L01芯片已经被广泛应用到无线鼠标、键盘、遥控器等小型电子设备和安防系统、门禁系统、遥感勘测系统等大型系统中,这些设备已占有很强市场优势,相关技术也已趋于成熟。伴随大家对低成本无线网络需求不停增强,现在中国外研究机构已对nRF24L01在组网技术上研究已形成新热点,并在相关领域取得一定成就,所以此次设计中选择此射频芯片进行无线通信,以确保短距离通信有效性和可靠性。 1.3 显示模块选择 LED数码管含有功耗低,亮度高,显示稳定,编程简单等优点,完全能够满足此次设计要求,所以采取LED显示。 1.4 系统整体最终方案 综合考虑以上各个模块设计方案,nRF24L01无线通信系统系统结构框图以下: LED显示 LED显示 显示 中心模块 中心模块 nRF24L01无线通信模块 nRF24L01无线通信模块 图1.1 系统结构图 依据功效不一样,能够把整个系统分为中心模块、nRF24L01无线通信模块、LED显示模块。 中心模块为STM32,关键功效是控制nRF24L01无线通信和LED显示。 nRF24L01无线通信模块和中心模块连接。 LED显示模块显示数据。 1.5 系统工作步骤图 当按下某一键时,STM32控制LED显示对应数字,同时经过nRF24L01将该数字发送出去,另一个nRF24L01接收到该数字,经由STM32显示于数码管上。 本系统工作步骤图以下: 结束 LED显示 LED显示 中心模块 nRF24L01无线通信模块 nRF24L01无线通信模块 中心模块 按下键盘 开始 图1.2 系统工作步骤图 1.6 关键技术 在本系统中,使用关键技术以下: 1. 基于ARM7STM32微处理器控制 2. nRF24L01 2.4G通信 3. 矩阵键盘 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:芯片控制数据线(从机输入,主机输出)。 2.2.nRF24L01和STM32接口设计 STM32串行外设接口(SPI)提供和外部设备进行同时串行通讯功效,经过接口能够被设置工作在主模式或从模式。nRF24L01控制电路和STM32控制器SPI口相连接,以串行方法进行通信以交换信息,实现nRF24L01串行口高速通信。 该射频芯片和MCU接口原理图以下图2-2所表示。 图2-2 nRF24L01和MCU接口原理图 nRF24L01芯片片选线CS和MCUPB0相连接、芯片片选线SCK和MCUPA5相连接、中止信号IRQ和MCUPB1相连接、芯片模式控制线CE和MCUPA4相连接,数据信号引脚MISO、MOSI分别和MCUPA6和PA7相连接。 三、 nRF2401无线通信系统软件设计 3.1 nRF24L01无线通信分系统软件结构 无线通信系统软件模块关键包含,nRF24L01和STM32F103微处理器MCU串行外设接口(SPI )之间通信程序,nRF24L01之间收发程序,矩阵键盘程序,中止程序,数码管显示程序和STM32F103微处理器对收发到数据处理程序。建立在硬件基础上,软件程序设计完成了对硬件工作调度和协调,实现了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它是否存在,当开始 不存在时LED灯就会亮提醒24L01 Check Failed!当检测到nRF24L01射频芯片存在后,主机在自定义无线通信协议下发送数据,从机接收到数据信息后,取出数据,显示在数码管上。nRF24L01无线通信模块工作步骤分别以下图3-3所表示 系统时钟初始化、GPIO口初始化、中止初始化 nRF24L01初始化、SPI初始化 nRF24L01是否存在 否 接收数据 LED灯亮 是 处理数据 显示在数码管上 返回 图3-3 nRF24L01无线通信模块软件步骤图 3.2初始化程序设计 嵌入式系统在正式工作前,全部要进行部分初始化工作。所以在系统开启之初,为了能够让STM32单片机各项功效合理有序工作,需要进行一系列初始化配置。本文系统设计中初始化程序关键包含微处理器 STM32F103开发板初始化程序、串行外设接口(SPI )初始化程序、nRF24L01 芯片初始化程序、矩阵键盘初始化程序、数码管显示模块初始化程序等。其中STM32F103单片机初始化又包含复位和时钟初始化配置、GPIO口初始化配置、中止初始化配置。接下来,本节将具体介绍各部分初始化程序内容。 3.2.1 RCC时钟初始化配置 初始化配置中首先要进行时钟配置,以确保后续程序正常运行,STM32中,共有五种时钟源,分别是: 1. HSI 高速内部时钟,频率为8MHz 2. HSE 外部告诉时钟,通常为石英晶振,频率为4-16MHz 3. LSI 低速内部时钟,频率为40KHz 4. LSE 低速外部时钟,通常为外接低速晶振,频率为32.768KHz 5. PLL 锁相环倍频输出,时钟输入源可为HSI/2、HSE、HSE/2,倍频范围2~16倍,最大频率为72MHz 时钟初始化配置步骤图3-4所表示。 打开HSE时钟 开始 配置AHB时钟 配置PLL为HSE9倍频 开启PLL 打开要使用外设时钟 结束 图3-4 RCC时钟初始化步骤图 3.2.2 SPI初始化配置 STM32F103 串行SPI接口置配置时,设SPI为主,串行时钟在SCK脚产生。配置程序软件及步骤以下: 1. 配置nRF24L01MOSI、MISO输入输出线和SCLK时钟线分别同CPUSPI对应外设线相连接,即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所表示: 图3-5 SPI串行口初始化步骤图 GPIO口配置 设定为双向通信 设定为主模式 设定数据位为8 选择串行时钟相位CPOL=0和极性CPHA=1 设置串行时钟波特率为256 设置校验位为7 使能SPI 结束 开始 3.2.3 NVIC中止配置 为了能让系统程序实施效率更高,所以必需尽可能使用STM32中止响应函数来替换传统循环判定方法。STM32中止种类丰富,数量充足,另有多个复用功效,给系统整体设计带来了极大方便。 STM32中止配置以抢占优先级和响应优先级这两项为关键参数,抢占优先级代表了中止嵌套关系,抢占优先级较高(数值较小)中止能够在优先级较低中止里面嵌套实施。响应优先级表示了当中止同时发生时候STM32响应次序,数值较小中止优先响应。 3.2.4 nRF24L01初始化配置 nRF24L01初始化程序包含其和MCUGPIO配置、通信频率配置和SPI初始化配置等。nRF24L01初始化步骤图图3-6所表示:在配置过程中使能APB2外围端口GPIOB,GPIOA总线时钟,配置GPIO口PB0(CSN)、PA4(CE)推免输出,PB1(IRQ)上拉输出,输出频率均为50MHz,初始化SPI,使能nRF24L01,SPI片选择消。 外围时钟总线配置 GPIO口配置 SPI初始化 使能nRF24L01 SPI片选择消 结束 开始 图3-6 nRF24L01初始化步骤图 3.3 nRF24L01无线通信软件设计 3.3.1 nRF24L01射频芯片特征 1.射频通道 nRF24L01工作频率可选择范围是2.400GHz到2.483GHz,每个频道带宽是1Mhz(1Mbps速率是)或2MHz(2Mbps速率时),射频通道经过寄存器RF_CH设置,设置后模块工作中心频率为F0=2400+RFCH[MHz] 发送方和接收方射频通道号必需设为一致,当工作在2Mbps模式时,两对收发模块RF_CH设置必需小于2才能时两对模块通信互不影响。 2.工作模式 模式 PWR_UP PRIM_RX CE FIFO寄存器状态 接收模式 1 1 1 — 发送模式 1 0 1 数据在TXFIFO寄存器中 发送模式 1 0 1→0 停留在发送模式直至数据发送完 待机模式Ⅱ 1 0 1 TXFIFO为空 待机模式Ⅰ 1 — 0 无数据传输 掉电模式 0 — — — 表3-1 nRF24L01工作模式表 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有两种处理数据包方法,ShockBurstTM模式和增强型ShockBurstTM模式,两种方法全部是经过SPI接口和微控制器连接。 在ShockBurstTM接收模式下,当接收到有效地址和数据时IRQ通知MCU,随即MCU可将接收到数据从RXFIFO寄存器中读出。 在ShockBurstTM发送模式下,nRF24L01自动生成前导码及CRC校验。数据发送完成后IRQ通知MCU。降低了MCU查询时间,也就意味着降低了MCU工作量,同时降低了软件开发时间。nRF24L01内部有三个不一样RXFIFO寄存器(6个通道共享此寄存器)和三个不一样TXFIFO寄存器。在掉电模式下、待机模式下和数据传输过程中MCU能够随时访问FIFO寄存器。 本文系统设计中使用是增强型ShockBurstTM模式,其能够同时控制应答及重发功效而无需增加MCU工作量。发送方要求终端设备在接收到数据后有应答信号,方便于发送方检测有没有数据丢失,一旦数据丢失则经过重新发送功效将丢失数据恢复。在增强型ShockBurstTM下,这一切全部由nRF24lL01芯片自动完成。 6.数据包格式 增强型ShockBurstTM模式下数据包格式如表2: 前导码 地址(3~5字节) 9位(标志位) 数据(1~32字节) CRC校验(0/1/2) 表2 增强型ShockBurstTM模式下数据包格式 ShockBurstTM模式下数据包格式如表3。 前导码 地址(3~5字节) 数据(1~32字节) CRC校验(0/1/2) 表3 ShockBurstTM模式下数据包格式 前导码用来检测0和1,芯片在接收模式下去除前导码,在发送模式下加入前导码。 地址为接收地址,地址宽度能够是3、4或5字节宽度,地址能够对接收通道及发送通道分别进行配置,从接收数据包中自动去除地址。 标志位中其中两位是PID,其它七位保留用作未来和其它产品相兼容。 PID数据包识别其中两位是用来每当接收到新数据包后加1。 PID作用是识别接收到数据时新数据包还是重发数据包。 (1)接收方 接收方对新接收数据包PID值和上一包进行比较假如PID值不一样则认为接收数据包是新数据包假如PID值和上一包相同则新接收数据包有可能和前一包相同,接收方必需确定CRC值是否相等假如CRC值和前一包数据CRC值相等则认为是同一包数据并将其舍弃。 (2)发送方 是 否 开始 来自微处理器新数据包? 结束 增加 PID值 否 来自微处理器新数据包正当 丢弃反复数据包 开始 结束 PID 等于last PID值? CRC 等于 Last CRC? 否 是 是 图3-7 PID生成和检测 每发送一包数据则发送方PID值加1。 数据字段宽度为1到32字节,发送方和接收方必需一致,接收到数据通道有效数据宽度经过RX_PW_Px寄存器设置,x为0到5。 CRC校验是可选,寄存器EN_CRC用来使能CRC,寄存器CRCO用于设置CRC模式,有8位CRC校验多项式X8+X2+X+1,16位CRC校验多项式是X16+X12+X5+1,发送方和接收方也必需一致,CRC计算范围包含整个数据包:地址、PID和有效数据等。若CRC校验错误则不会接收数据包。 3.3.2 SPI读写程序 图3-8 SPI 程序时序图 1.数据发送过程 当一字节写进发送缓冲器时,发送过程开始。在发送第一个数据位时,数据字被并行地(经过内部总线)传入认为寄存器,以后串行地溢出到MOSI脚上;MSB在线还是LSB在线,取决于SPI_CR1寄存器中LSBFIRST位,数据从发送缓冲器传输到移位寄存器时TXE标志将被置位,假如设置SPI_CR1寄存器中TXEIE位,将产生中止。 SPI总线读写操作步骤图3-9以下: 图3-9 SPI总线读写操作步骤图 发送一字节数据开启SPI数据传输 等候数据发送结束(SPIF将产生中止) 读出从机发送数据或释放从机 设置为SPI主机(设置 SPI_CR1寄存器) 选择从机 开始 2.数据接收过程 对于接收器来说,当数据传输完成时,移位寄存器里数据传送到接收缓冲器,而且RXNE标志被置位。假如SPI_CR2寄存器中RXEIE位被置位,则产生中止。在最终采样时钟沿,RXNE位被设置,在移位寄存器中接收到数据字被传送到接收缓冲器,读SPI_DR寄存器时,SPIU设备返回接收到数据字,读SPI_DR寄存器将清除RXNE位。 3.3.3 nRF24L01发送程序设计 发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD根据时序由SPI口写入nRF24L01缓存区,TX_PLD必需在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持最少10μs,延迟130μs后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该和接收节点地址TX_ADDR一致)。假如收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TX FIFO中清除;若未收到应答,则自动重新发射该数据(自动重发已开启),若重发次数(ARC)达成上限,MAX_RT置高,TX_FIFO中数据保留方便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中止,通知MCU。最终发射成功时, 清STATUS中止标志位进入下一次发射。nRF24L01发送时序图和步骤图分别以下图3-10和3-11所表示: 图3-10 nRF24L01发送数据时序图 图3-11 发送模块软件步骤图 N Y nRF24L01初始化 IRQ=0? 配置为发送模式 延迟20us 延迟130us 置CE为低 写Pay load 置CE为高 读取STATUS TD_DS=1? 清STATUS中止标志位 返回 MAX_RT=1? 清STATUS中止标志位 Y N 3.3.4 nRF24L01接收程序设计 接收数据时,首先将nRF24L01配置为接收模式,接着延迟130μs进入接收状态等候数据到来。当接收方检测到有效地址和CRC时,就将数据包存放在RX FIFO中,同时中止标志位RX_DR置高,IRQ变低,产生中止,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态回传应答信号。最终接收成功时,清STATUS中止标志位,等候接收下一组信号。nRF24L01接收数据时序图和步骤图分别以下图3-12和3-13所表示: 否 是 nRF24L01初始化 IRQ=0? 配置为接收模式 延迟130us 置CE为高 读取STATUS RD_DR=1? 清STATUS中止标志位 返回 发送数据指令,读取接收数据 图3-13 接收模式软件步骤图 是 否 图3-12 nRF24L01接收数据时序图 四、nRF24L01无线通信系统调试和实现 4.1 nRF24L01无线通信系统调试 4.1.1 硬件调试 图4-1 nRF2401无线通信调试图 在实物连接完成后,对线路进行检验。看nRF2401电源是否正确连接在了STM32开发板3.3V电源上,地线是否正确连接在开发板地线,然后其它6脚分别和PA4~PA7和PB0~PB1相连接。 4.1.2软件调试 软件调试关键是在Keil上进行,初步编译完成后,生成相关.hex文件,将hex烧入STM32开发板中,检验软件是否实现了自己想要功效。检测程序功效效果,再经过编译修改,最终得到理想程序代码。软件调试建立在硬件调试成功基础之上。 4.2 nRF2401无线通信系统总体调试 1. 按下矩阵键盘,观察数码管是否正确显示对应数值。 2. 观察接收端是否同时显示对应数值。 五、总结 5.1 nRF2401无线通信系统功效实现 本文设计了一个无线通信系统系统,以低成本、高性能和高可靠性为目标,有针对性选择硬件芯片型号,反复设计和调试软件程序,最终实现数据收发,本系统成功实现了估计功效。本系统实物结构图5-1所表示。 图5-1 nRF2401无线通信系统实物图 5.2 nRF2401无线通信系统功效展示 5.2.1 发送数据 按下发送方3所对应按键,并按下发送键,接收方显示对应数字。 图5-2 发送数据 5.2.2 接收数据 再由原接收方发送数据,原发送方接收数据。 图5-3 接收数据 5.2.3 最远有效通信距离 经测试,本系统最远有效通信距离可达5.5米。 5.3结论 经过nRF2401点对点相结合无线通信,nRF2401无线通信系统实现了数据收发,并在数码管上将数据展现给用户。经过现场测试和应用证实了该系统可用性 附录 部分程序源代码 主控函数 int main(void) { u8 t,n1,i; u8 tx_buf[33]; u8 rx_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); // 发送命令数据 break; //退出最近循环,从而变回接收模式 } while(!LED2) { // LED3=0; // delay_ms(100); // LED3=1; // delay_ms(100); t=Matrix_Keyboard_Scan();//得到键值 Show_Num(t); switch(t) { case 1: tx_buf[0]=0X01;;break; case 2: tx_buf[0]=0X02;;break; case 3: tx_buf[0]=0X03;;break; case 4: tx_buf[0]=0X04;;break; case 5: tx_buf[0]=0X05;;break; case 6: tx_buf[0]=0X06;;break; case 7: tx_buf[0]=0X07;;break; case 8: tx_buf[0]=0X08;;break; case 9: tx_buf[0]=0X09;;break; case 10: tx_buf[0]=0X0a;;break; case 11: tx_buf[0]=0X0b;;break; case 12: tx_buf[0]=0X0c;;break; case 13: tx_buf[0]=0X0d;;break; case 14: tx_buf[0]=0X0e;;break; case 15: tx_buf[0]=0X0f;;break; case 16: tx_buf[0]=0X10;;break; }break; } } switch(rx_buf[0]) { case 0X01: Show_Num(1);break; case 0X02: Show_Num(2);break; case 0X03: Show_Num(3);break; case 0X04: Show_Num(4);break; case 0X05: Show_Num(5);break; case 0X06: Show_Num(6);break; case 0X07: Show_Num(7);break; case 0X08: Show_Num(8);break; case 0X09: Show_Num(9);break; case 0X0a: Show_Num(10);break; case 0X0b: Show_Num(11);break; case 0X0c: Show_Num(12);break; case 0X0d: Show_Num(13);break; case 0X0e: Show_Num(14);break; case 0X0f: Show_Num(15);break; case 0X10: Show_Num(16);rx_buf[0]=0;break; } 参考文件: [1]赵海,赵杰,刘铮,等.一个无线传感器网络节点设计和实现[J].东北大学学报:自然科学版,,30(6):809-812 [2]王秀梅.低功耗2.4GHz无线通信分系统设计和实现[J].中国数据通信,(11):57—61 [3]李文忠,段朝玉 .短距离无线数据通信[M].北京:北京航空航天大学出版社,.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服