



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 方案论证1.1课题来源随着现代通信技术的飞速发展,无线数据传输系统已成为当今通信业乃至整个信息业的热点,不但可以应用在数据传输电台,还可以应用于无线遥控、报警、无线局域网、军事通信等范围,具有一定的实际应用价值。目前,无线数据通信的应用领域越来越广:遥控遥测、无线抄表、门禁系统、身份识别、非接触RF智能卡、无线标签、安全防火系统、生物信号采集、机器人控制等。凡是布线繁杂或不允许布线的场合都希望能通过无线方案来解决。为此,需要设计相应的接口系统,控制这些射频芯片工作,完成可靠稳定的无线数据通信。基于达成以上要求本人设计了一款基于无线传输模块的网络通信系统。1.2方案论证 此次方案设计使用的元器件主要有两种分别是单片机和无线传输模块,使用单片机控制无线传输模块进行发送和接收数据,单片机准备用比较熟悉的AT89S51单片机,无线传输模块准备用性价比比较高的nRF24L01。1.2.1基于无线传输模块的网络通信系统的基本工作原理本系统通过利用无线传输模块进行的无线通信传输,图1通过用单片机控制无线传输模块1进行发送无线信号,然后用单片机控制无线传输模块2接收无线传输模块1所发出的无线信号,从而实现1对1的无线信号传输。图2所示的是通过单片机控制3个无线传输模块进行相互的无线传输。单片机 无线 传输 模块 1 无线 传输 模块 2 单片机 图1.1 1对1无线传输原理框图单片机 无线 传输 模块 1 无线 传输 模块 2 单片机 单片机 无线 传输 模块 3 图1.2 3模块间相互无线传输原理框图1.2.2无线传输模块的选择方案一:采用nRF24L01本方案采用的无线传输模块是nRF24L01,nRF24L01是单片射频收发芯片,工作于2.42.5 GHz ISM频段。工作电压为1.93.6 V,有多达125个频道可供选择。可通过SPI写入数据,最高可达10 Mb/s,数据传输率最快可达1 Mb/s,并且有自动应答和自动再发射功能。芯片内置频率合成器、功率放大器、晶体振荡器、调制器等功能模块,并融进了增强式ShockBurst技术,其中输出功率和通信频道可通过程序进行配置。芯片能耗非常低,以-6 dBm的功率发射时,工作电流只有9 mA,接收时工作电流只有12.3 mA,多种低功率工作模式(掉电模式和空闲模式)使节能设计更方便。 图1.3 无线传输模块nRF24L01方案二:采用nRF9E5本方案采用的无线传输模块是nRF9E5,nRF9E5是一种微型32引脚QFN ( 5x5 mm)封装的芯片。工作电压直流1. 9 3. 6 V,工作频率433MHz,868915MHz。nRF9E5主要由兼容8051的微控制器;nRF9E5无线通讯模块;A /D转换模块和一些与逻辑端口连接的其他功能模块: 包括SP I可编程串行接口、PWM脉冲宽度调制、低功率RC振荡器、看门狗定时器和RTC实时时钟唤醒模块等组成。综上所述,方案1选择的无线传输模块nRF24L01它的工作速率可以达到1Mbps,而nRF9E5的工作速率只有100kbps, nRF24L01的功耗可以达到6dBm比nRF9E5的功耗低,并且nRF24L01具有CRC纠检错硬件电路和协议,使得模块运行稳定可靠,而nRF24L01的价格却只有nRF9E5价格的一半。1.2.3单片机的选择随着电子技术的发展与进步,单片机也已有许多型号,常见的有Intel公司的MCS-51、151、251系列;ZILOG的Z8系列;Philips公司的80C51和51XA系列;Motorola的68HC05/08系列;Microchip公司的PIC18CXX系列单片机;Atmel公司的89系列;Sunplus公司的SPCE061A系列单片机;Winbond公司的78E51系列等。 方案一: 采用Microchip公司的PIC18F4620本方案采用的是采用PIC18F4620单片机,PIC18F4620采用哈佛结构,以及RISC指令系统单片机,其具有1K RAM,64K FLASH,丰富的I/O口资源,内置A/D,内置EEPROM,看门狗电路,倍频电路等丰富的外围模块,一个指令周期是四个机器周期,运算速度快,完全能够满足我们的系统要求。但由于其不是主流单片机,价格比较高,购买不方便,使用不广泛,放弃此方案。方案二:采用ATMEL公司的AT89S51ATMEL公司的AT89S51,它以经典的8031为内核,有一个8位的微处理器,不仅可以处理字节数据,还支持位操作,片内拥有8KB的Flash ROM 程序存储器,256B RAM的数据存储器,中断系统拥有6个中断源,分两级优先权,一个串行口,4个8位并行IO口:P0、P1、P2、P3,具有很强的运算、控制能力,而且与其他单片机相比具有很强的稳定性,价格低,性价比高。综上所述,根据本毕设的要求,选用AT89S51单片机。1.2.4 3.3V电源电路的选择单片机AT89S51与无线收发模块nRF24L01连接时,由于AT89S51工作电压为5V,而nRF24L01工作电压为3V左右,因而要在两个芯片之间加上电压转换电路。方案论证如下:方案一:采用电位计进行分压电位计分压电路图如图1.4所示 图1.4 电位计分压电路图根据电阻串联分压原理 (12)在公式1.2中,Ui为单片机输出电压,Uo为分得电压,即nRF24L01的输入电压。通过调节电位计,使Uo=3.3V,以此达到电平转换的作用。采用电位计通过分压来进行电平转换,虽说在理论上能够进行电平转换,但是在实践操作中,却存在着很大问题,主要体现在:人为影响太大。每次实验前都需检测与调节Uo是否在nRF24L01的工作范围内,以防止nRF24L01被过高的电压烧坏,整个电平转换电路不够稳定。 方案二:采用稳压模块LM1117LM1117它只有三个引脚,外接电路简单,只需要两个电容,就能够输出稳定的3.3V电压,为nRF24L01提供3.3V工作电源。在图1.4中,引脚1接5V电压。引脚3接地。引脚2便输出3.3V电压,来作为nRF24L01的工作电压。GND VCC Vout 3 1 2图1.4 LM1117引脚分配图表1.1 LM1117引脚功能引脚名称功能描述1VCC输入端2Vout输出端3GND地线综上所述,根据实验要求并比较以上两种方案,采用稳压模块LM1117电路简单易行,稳定性强,可实现电压转换。因而选用第二种方案。第2章 关键芯片2.1 引言由于无线数据通信不用布线,快速布局,因此具有有线数据通信无法比拟的便捷性,在特殊场合具有不可替代性。然而,传统的由基本射频集成电路搭建的无线数据通信系统存在电路复杂,成本高,传输速率低,可靠性差等缺点。因此,我们选择了一款工业级内置硬件链路层协议的低成本单芯片nRF24L01型无线收发器件。该器件采用GFSK调制,128个频点自动跳频,片内自动生成报头和CRC校验码,具有出错自动重发功能,这些特性使得由nRF24L0l构建的无线数据传输系统具有成本低,速率高,传输可靠等优点。2.2无线传输模块 nRF24L012.2.1 nRF24L01芯片的介绍nRF24L01是一种单片无线收发器,工作在2.42.5GHz频段。nRF24L01由完全集成的频率合成器、功率放大器、晶体振荡器和调制器组成。其芯片结构如图2.1所示。nRF24L01各引脚功能见表2.1。 图2.1 nRF24L01芯片结构图2.2.2 nRF240L1功能分析nRF24L01是单片射频收发芯片,工作于2.42.5GHz 频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过软件进行设置。芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。125个频道,满足多频及跳频需要,高速率1Mbps,高于蓝牙,具有高数据吞吐量。发射功率、工作频率等所有工作参数全部通过软件设置完成。nRF24L01内置了CRC校验码,软件开发相对简单。nRF24L01适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控玩具、警报和安全系统、家用自动化、监视系统等。表2.1 nRF24L01引脚功能引脚名称引脚功能描述1CE数字输入RX或TX 模式选择2CSN数字输入SPI片选信号3SCK数字输入SPI时钟4MOSI数字输入从SPI数据输入脚5MISO数字输出从SPI数据输出脚6IRQ数字输出可屏蔽中断脚7VDD电源电源+3V8VSS电源接地0V9XC2模拟输出晶体震荡器2脚10XC1模拟输入晶体震荡器1脚/外部时钟输入脚11VDD_PA电源输出给RF的功率放大器提供的+1.8V电源12ANT1天线天线接口113ANT2天线天线接口214VSS电源接地0V15VDD电源电源+3V16IREF模拟输入参考电流17VSS电源接地0V18VDD电源电源+3V19DVDD电源输出去耦电路电源正极端20VSS电源接地0V2.2.3工作方式的设定nRF24L01有四种工作模式:发送模式、接收模式、待机模式和掉电模式。nRF24L01的工作模式由PWR_UP 、PRIM_RX和CE三个引脚决定,详见表2.2。表2.2 nRF24L01工作模式模式PWR_UPPRIM_RXCEFIFO 寄存器状态接收模式111 发送模式101 数据在TX FIFO 寄存器中发送模式1010停留在发送模式直至数据发送完待机模式II101TX FIFO 为空待机模式I10无数据传输掉电模式0 各种工作模式详述如下:2.2.2.1收发模式收发模式有Enhanced ShockBurstTM收发模式、 ShockBurstTM收发模式和直接收发模式三种,收发模式由器件配置字决定 1、Enhanced ShockBurstTM收发模式Enhanced ShockBurstTM收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。Enhanced ShockBurstTM技术同时也减小了整个系统的平均工作电流。在Enhanced ShockBurstTM收发模式下,nRF24L01自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,在发送模式下,置CE为高,至少10us,将时发送过程完成后。(1) Enhanced ShockBurstTM发射流程A、把接收机的地址和要发送的数据按时序送入nRF24L01;B、配置CONFIG寄存器,使之进入发送模式。C、微控制器把CE置高(至少10us),激发nRF24L01进行Enhanced ShockBurstTM发射;D、nRF24L01的Enhanced ShockBurstTM发射 给射频前端供电; 射频数据打包(加字头、CRC校验码); 高速发射数据包; 发射完成,nRF24L01进入空闲状态。(2) Enhanced ShockBurstTM接收流程A、配置本机地址和要接收的数据包大小;B、配置CONFIG寄存器,使之进入接收模式,把CE置高。C、130us后,nRF24L01进入监视状态,等待数据包的到来;D、当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;E、nRF24L01通过把STATUS寄存器的RX_DR置位(STATUS一般引起微控制器中断)通知微控制器;F、微控制器把数据从nRF2401读出;G、所有数据读取完毕后,可以清除STATUS寄存器。nRF2401可以进入四种主要的模式之一2.2.2.2 空闲模式nRF24L01的空闲模式是为了减小平均工作电流而设计的,其最大的优点是,实现节能的同时,缩短芯片的起动时间。在空闲模式下,部分片内晶振仍在工作,此时的工作电流跟外部晶振的频率有关,如外部晶振为4MHz时工作电流为12A,外部晶振为16MHz时工作电流为32A。在空闲模式下,配置字的内容保持在nRF24L01片内2.2.2.3 关机模式在关机模式下,为了得到最小的工作电流,一般此时的工作电流小于1A。关机模式下,配置字的内容也会被保持在nRF24L01片内,这是该模式与断电状态最大的区别。2.3 AT89S51单片机2.3.1概述AT89S51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。器件采用ATMEL公司的高密度、非易失性存储技术制造, 可反复擦写1000次,兼容标准MCS-51指令系统及 80C51引脚结构,芯片内集成了通用8位中央处理器和存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的 解决方案。CPU 系统总线BUS RAM ROM 定时器 计数器可编程I/O 端口系统时钟图2.2 AT89S51单片机内部功能模块AT89S51将中央处理单元CPU、RAM、ROM、定时/计数器和I/O接口等器件集成在一块大规模集成电路芯片上,构成了一个完整的计算机体系,内部功能模块如图2.2所示。2.3.2 AT89S51单片机的主要性能特点: 一个8位的中央处理单元(CPU),它能实现各种算术、逻辑运算及判断控制功能; 内部程序存储器(ROM)与内部数据存储器(RAM)容量较大。其中内部RAM为1288字节; 特殊功能寄存器(SFR)是一批特殊用途的寄存器。每个寄存器占一个存储单元; 工作电压为3.3V5V,时钟频率为1.2MHz12MHz; 4个8位的双向输入输出(I/O)端口P0、P1、P2、P3; 2个16位定时器/计数器; 一个全双工串行通信接口; 五级中断的中断系统; 具有片内时钟振荡器; 3级程序存储器保密功能。2.3.3 单片机的引脚及功能AT89S51单片机的外部引线如图2.3所示。其引线共有40条,分为端口线、控制线和电源线三类。AT89S51单片机的各管脚功能如下:P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在Flash编程时,P0口作为原码输入口,当Flash进行校验时,P0输出原码,此时P0外部必须被拉高。 图 2.3 AT89S51单片机外部引线图P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收, 输出4个TTL门电流,当P2口被写“1”时,其管脚被上拉电阻拉高,且作为输入。作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉电阻,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在Flash编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如表2.3所示.表2.3 P3口特殊功能表P3口的位第二功能注释P3.0RXD串行数据接受口P3.1TXD串行数据发送口P3.2INT0外中断0输入P3.3INT1外中断1输入P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数器1计数输入P3.6WR外部RAM写选通信号P3.7RD外部RAM读选通信号P3口同时为Flash编程和编程校验接收一些控制信号。ALE/PROG:当访问外部存储器时,地址锁存于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。RST:复位/备用电源引线。当该端加上超过24个时钟周期的高电平时,可使单片机复位。:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次 有效。但在访问外部数据存储器时,这两次有效的信号将不出现。:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, 将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1和XTAL2:外部晶体连线,片外石英晶体连于此两端与片内电路构成振荡器,产生片内CPU的工作时钟。2.4稳压模块LM11172.4.1 LM1117概述LM1117是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM317有相同的管脚排列。LM1117有可调电压的版本,通过2个外部电阻可实现1.2513.8V输出电压范围。另外还有5个固定电压输出(1.8V、2.5V、2.85V、3.3V和5V)的型号。LM1117提供电流限制和热保护。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在1%以内。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252 D-PAK封装。输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。2.4.2 LM1117特性 提供1.8V、2.5V、2.85V、3.3V、5V和可调电压的型号 节省空间的SOT-223和LLP封装 电流限制和热保护功能 输出电流可达800mA 线性调整率:0.2% (Max) 负载调整率:0.4% (Max) 温度范围:LM1117:0125;LM1117I:-40125。2.4.3 LM1117应用 开关DC/DC转换器的主调压器 高效线性调整器 电池充电器 电池供电装置2.4.4 LM1117引脚功能稳压模块LM1117只有3个引脚,如图2.4。引脚1是输入端;引脚2是输出端;引脚3是地线。当输入端的电压是5V时,输出端的电压可以达到3.3V。GND VIN VOUT 3 1 图2.4 LM1117引脚图第3章 系统硬件设计系统硬件设计包括3.3V电源电路的设计、无线收发模块的电路设计、显示电路的设计。3.1 3.3V电源电路的设计nRF24L01的工作电压在1.9V3.6V之间,一般用3.3V电压作为芯片工作电源电压。在这部分的电路设计中,由于稳压电源提供5V电压,只需要将5V电压转化为3.3V电压,采用稳压模块LM1117。它只有三个引脚,外接电路简单,只需要两个电容,就能够输出稳定的3.3V电压,为nRF24L01提供3.3V工作电源。其外接电路如图3.1所示。在图3.1中,引脚1接5V电压。引脚2接地。引脚1和引脚3接20F的电解电容,然后接地。引脚3便输出3.3V电压,来作为nRF24L01的工作电压。图3.1 LM1117应用电路图3.2 无线收发模块接口电路的设计无线芯片比较小,焊接起来很困难,因此本次毕业设计采用的是无线收发模块。无线收发模块nRF24L01与单片机的连接电路图如图3.2所示。图3.2为nRF24L01的应用电路。由图可知,其只需要与单片机的P1口相连nRF24L01应用电路一般工作于3V,它可用多种低功耗微控制器进行控制。nRF24L01通过Enhanced ShockBurstTM收发模式进行无线数据发送,收发可靠,其外形尺寸小,需要的外围元器件也少,因而使用方便,在工业控制、消费电子等各个领域都具有广阔的应用前景。图3.2 nRF24L01模块结构图3.2.1 时钟电路的设计时钟电路用于产生AT89S51单片机工作时所必需的时钟信号。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。时钟频率越快,单片机的程序执行速度越快,抗干扰性能越差;时钟频率越小,单片机的工作速度慢,抗干扰性能越好。要恰到好处的选择时钟频率对单片机工作效率尤为重要。单片机各功能的运行都是以时钟频率为基准一拍一拍的工作。常用的时钟电路有两种工作方式,一种是内部时钟方式,另一种为外部时钟方式。为了方便单片机与无线传输模块nRF24L01之间的数据通信,选用外部时钟,选取外接 12MHz晶振。由于当晶体振荡器振荡频率在1M到12M之间取值时,两个微调电容的典型取值通常选择在30pF左右,所以在此选33pF时钟电路如图3.3所示。图3.3时钟电路的设计3.2.2 复位电路的设计复位电路必须确保系统上电时能够自动复位,在必要时还可以手动复位。在本设计中,复位电路采用最简单的上电复位加按键复位。在通电的瞬间,在RC电路充电过程中,RST端出现正脉冲保证引脚出现10ms以上稳定的高电平,从而是单片机复位。上电自动复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为了可靠起见电源稳定后,还要经一定的延时才撤销复位信号以防电源开关或电源插头分-合过程中引起的抖动而影响复位。为了实现这种功能,本设计采用了一种RC定时电路。其时间常数=RC,系统上电时,C两端的电压为零,单片机的复位端的电平为高电平,单片机复位,经过45个后,C两端的电压约等于电源电压,单片机的复位端的电平为低电平,单片机退出复位状态。手动复位电路采用的是按键复位电路。在按键按下时,单片机的复位端的电平为高电平,单片机复位,在按键松开时,单片机的复位端的电平为低电平,单片机退出复位状态。复位电路如图3.4所示。图3.4复位电路图3.3 显示电路的设计显示电路如下图3.5所示,因为无线传输模块nRF24L01只占用单片机一个I/O端口,所以显示电路中的数码管可以和单片机直接相连。数码管采用AMBERCA。显示电路主要是由4个数码管、12个电阻、4个三极管组成如图3.5。三极管是PNP型当其基极输入是低电平时,数码管才能工作。数码管是共阳极所以当输入是低电平时,数码管才会显示。其中R1到R8等八8个电阻是数码管的限流电阻。AT89S51输出高电平为4.8V到5V。 AMBERCA数码管为共阳数码管,其驱动电流为15mA到30mA,数码管导通时的压降是0.7V,由此计算出限流电阻R:所以限流电阻的取值应在137欧姆到287欧姆之间,为了使数码管稍微更亮些,但又不要功耗太大,在此取限流电阻为180欧姆。图3.5 显示电路图第4章 系统软件设计4.1 nRF24L01无线收发模块的软件设计4.1.1 nRF24L01发射部分主程序流程图nRF24L01发射部分主程序流程图如图4.1开始nRF24L01初始化配置子程序进入发射模式,发射数据判断TX_DS是否为1 NY 数码管显示发射成功的数据 清空状态寄存器图 4.1 nRF24L01发射部分主程序流程图nRF24L01发射部分主程序流程图实现过程:在nRF24L01无线发射部分主程序中,首先进行初始化操作,通过配置模式对nRF24L01进行设置,主要包括:发送的数据宽度、地址宽度、发送数据的地址以及CRC技术和常用配置等。常用配置包括:使能第一频道设置,通信方式设置,发射数据速率设置,晶振频率设置,发射输出功率设置,频道设置,收发模式设置等。待初始化完成后,然后将nRF24L01设置为发射模式,进行发射数据。然后查看状态寄存器TX_DS是否为1,如果TX_DS为1代表nRF24L01发射成功,并且数码管可以显示发射的数据;如果TX_DS不为1代表nRF24L01发射不成功,程序返回重新发射。4.1.2 nRF24L01无线发射部分子程序的实现发射子程序nRF24L01无线发射子程序流程图如图4.2所示 装载接收端地址 装载要发射的数据置高CE,激发数据发送返回图 4.2 nRF24L01无线发射子程序流程图nRF24L01无线发射子程序流程图实现过程:首先设置nRF24L01为发射状态,将发送数据的地址(32位)写入到nRF24L01中。把要发送的数据打包,将数据包写入nRF24L01中。CE端置高,启动nRF24L01发射,将数据包发送出去。4.1.3 nRF24L01无线接收部分主程序的实现开始nRF24L01无线接收部分主程序流程图如图4.3所示 定义接收数组RxBuf nRF24L01初始化配置子程序 进入接收模式,接收数据 N判断RX_DR是否为1 Y Y Y N判断接收数组中的第一个数是否正确 Y Y数码管正确显示接收的数据清空状态寄存器 图 4.3 nRF24L01无线接收部分主程序流程图nRF24L01无线接收部分主程序流程图实现过程:在nRF24L01无线接收部分主程序中,首先进行初始化操作,将nRF24L01设置为接收模式,并通过配置模式对nRF24L01进行设置,主要包括:接收的数据宽度、地址宽度、接收数据的地址以及CRC技术和常用配置等。常用配置包括:使能第一频道设置,通信方式设置,接收数据速率设置,晶振频率设置,输出功率设置,频道设置,收发操作设置等。待初始化完成后,延时等待数据包的到来。查看状态寄存器RX_DR是否为1,如果RX_DR为1则代表接收到数据,然后查看接收到的第一个数据是否正确,如果正确则让数码管显示接收的数据;如果RX_DR不为1则代表没有 接受到数据,然后返回继续等待接收数据。4.2 nRF24L01的1对1程序设计无线传输模块nRF24L01的1对1发射程序如下void main(void) init_NRF24L01(); SetTx_Mode(); Delay(5000); while(1) nRF24L01_TxPacket(TxBuf); sta=SPI_RW_Reg(STATUS,0); if(TX_DS)无线传输模块nRF24L01的1对1接收程序如下void main(void) uchar RxBuf32; init_NRF24L01(); SetRX_Mode(); Delay(1000); while(1) sta=SPI_Read(STATUS); if(RX_DR) SPI_Read_Buf(RD_RX_PLOAD,RxBuf,TX_PLOAD_WIDTH); if(RxBuf0=0x21)4.3 nRF24L01的1对2程序设计 nRF24L01的1对2程序是由1对1程序的基础上修改的。1对1程序的发射端只是配置一次地址发射一次数据void main(void) init_NRF24L01();SetTx_Mode();Delay(5000);while(1)nRF24L01_TxPacket(TxBuf);sta=SPI_RW_Reg(STATUS,0);而1对2程序的发射端是配置一次地址发射一次数据后又再次配置另一组地址发射另一组数据。1对2程序的接收端和1对1程序的接收端是一样的。void main(void) init_NRF24L01(); SetTx_Mode();Delay(5000); while(1) SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRE, TX_ADR_WIDTH); SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRE,RX_ADR_WIDTH); nRF24L01_TxPacket(TxBuf);sta=SPI_RW_Reg(STATUS,0); if(TX_DS) SPI_RW_Reg(WRITE_REG+STATUS,sta); SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS, TX_ADR_WIDTH); SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); nRF24L01_TxPacket(TxBuf); sta=SPI_RW_Reg(STATUS,0);4.4 nRF24L01的2对1程序设计nRF24L01的2对1程序也是由1对1程序设计的基础上修改的。2对1程序的发射端和1对1程序的发射端是一样的。1对1程序的接收端只判断一次接收数据void main(void) uchar RxBuf32; init_NRF24L01(); SetRX_Mode(); Delay(1000); while(1) sta=SPI_Read(STATUS); if(RX_DR)而2对1程序的接收端首先判断是哪个通道接收的,如果是通道0先接收,然后才是通道1接收数据;否则是通道1先接收数据然后通道0在接收数据。void main(void) uchar RxBuf032, RxBuf132; init_NRF24L01(); Delay(1000); while(1) SetRX_Mode(); sta=SPI_Read(STATUS); if(RX_DR) if(sta&0x0E)=0x00) SPI_Read_Buf(RD_RX_PLOAD,RxBuf0,TX_PLOAD_WIDTH); if(RxBuf00=0x21) else if(sta&0x0E)=0x02)4.5 nRF24L01的1对1对1循环程序设计nRF24L01的1对1对1循环程序也是由1对1程序的基础上修改的。1对1对1循环程序的每个主程序都先有一个for循环来限制发射和接收数据的次数,与1对1程序的不同的是在发射程序后都有接收程序。void main(void) init_NRF24L01(); while(1) for(m=0;m15;m+) SetRX_Mode(); Delay(1000); sta=SPI_Read(STATUS); if(RX_DR) SPI_Read_Buf(RD_RX_PLOAD,RxBuf,TX_PLOAD_WIDTH);for(m=0;m15;m+) SPI_RW_Reg(WRITE_REG+STATUS,sta); SetTx_Mode(); Delay(5000); nRF24L01_TxPacket(TxBuf); sta=SPI_RW_Reg(STATUS,0); if(TX_DS)第5章 试验及调试5.1 nRF24L01无线收发模块1对1的调试5.1.1程序调试如下:无线传输模块的1对1传输是由模块1用地址1发射一组数据,由模块2用地址1接收数据。如果发射成功数码管会显示正确发射的数据。接收端采用2个数码管显示来作为验证电路。如果接收正确也会在接收端的数码管显示接收的数据。在学校操场内的调试结果见表5.1。表5.1 1对1 调试结果发射的数据:接收的数据:传输距离(m) D1D2 D1 D2 1 3 5 8 105.1.2调试过程中遇到的问题及解决:1、在发射程序中,nRF24L01在发射一次数据前需要读一次寄存器STATUS的状态然后判断寄存器TX_DS是否为1,但是在第一次编写程序时把寄存器STATUS写成小写状态status,导致没有判断出nRF24L01是否把数据发射出去。2、在发射程序中,发射的第一个数据原来是0xa5但是后来把第一个数据修改成0x21后,没有把接收程序中的接收数据改过来,因此造成发射数据成功而接收不成功,数码管一直不显示。后来检查时发现给改了过来接收才成功。5.2 nRF24L01无线收发模块1对2的调试5.2.1程序调试如下:无线传输模块nRF24L01的1对2传输是由模块1分别用地址1和地址2发射相同的数据,同时模块2接收由地址1发射的数据,模块3接收由地址2发射的数据。模块1发射成功后会在4个数码管上显示出来,模块2接收正确时,与其相连的2个数码管会显示地址1发射的数据,同样模块3接收正确时与其相连的2个数码管会显示地址2发射的数据。在学校操场内的调试结果见表5.2。表5.2 1对2调试结果模块1发射的数据模块2接收的数据模块3接收的数据传输距离(m) 地址1,地址2 地址1地址2 1 3 5 8 105.2.2调试过程中遇到的问题及解决:1、地址不匹配,本次调试中有2组地址,在发射程序中给通道0配置地址时发生错误,导致接收时只有一个无线传输模块可以接收到数据,另一个无线传输模块没有接收到数据。修改地址后再次调试可以看到两个无线传输模块都接收到数据。2、在发射程序中nRF24L01需要进行初始化进入发射模式,但是在调用子程序“数据发射配置”时发生错误。子程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳非住宅租赁合同范本
- 船舶运输委托协议合同书
- 渣土品回收协议合同模板
- 股权转让纠纷协议书范本
- 物业业主合作合同协议书
- 海淀区仓储配送合同范本
- 育儿嫂照顾宝宝协议合同
- 舞台租赁协议合同书模板
- 纸板线热板翻新合同范本
- 股东循环转移协议书模板
- 锂离子电池极片辊压工序简介
- GB/T 3683-2023橡胶软管及软管组合件油基或水基流体适用的钢丝编织增强液压型规范
- 七年级上学期历史导言课课件 ( 希沃白板课件+PPT课件)
- 医疗管理制度PDCA培训:提高医院感染管理相关制度的落实率
- 肺结核诊断和治疗指南
- 软件系统售后服务方案
- GB/T 9765-2009轮胎气门嘴螺纹
- GB/T 4623-2014环形混凝土电杆
- GB/T 23806-2009精细陶瓷断裂韧性试验方法单边预裂纹梁(SEPB)法
- GB/T 16823.3-2010紧固件扭矩-夹紧力试验
- GB/T 13785-1992棉纤维含糖程度试验方法比色法
评论
0/150
提交评论