




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪论1.1课题研究的背景及意义在许多测控现场中,传统的数据通信是通过有线电缆实现的。随着射频技术、集成电路的发展,无线通信功能的实现越来越容易,数据传输速率也越来越快,抗干扰能力也越来越强,因此,越来越多的场合采用了无线传输技术。无线数据传输相比于有线传输有许多优点:1、成本低,省去了大量的布线;2、建网快捷,只需在每个终端连接无线数传模块和架设适当高度的天线即可;3、适应性好,无线数据传输在一些特殊的应用环境,比如遇到山地、湖泊、林区等特殊的地理环境或是移动物体等布线比较困难的应用环境的时候,能解决因布线困难、电缆接插件松动、短路带来的问题;4、扩展性好,采用有线传输方式,不能随意移动,设备重新布局就要重新布线,但采用无线数据传输,只需将设备与无线数传模块相连接就可以了;5、设备维护容易,有线通信链路的维护需沿线路检查,出现故障时,一般很难及时找出故障点,而采用无线数据传输方式只需维护数传模块,出现故障时则能快速找出原因。目前应用于数据传输的无线通信技术主要有蓝牙(bluetooth),无线局域网(WLAN)802.11b,微功率超短波无线通信以及基于公共移动通信网络(GSM、CDMA)的传输方式[1]。蓝牙(bluetooth)是一种短距离无线通信技术。它是一种无线数据与语音通信的开放性全球规范,其实质内容是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,将通信技术与计算机技术进一步结合起来,使各种设备在没有电线或电缆相互连接的情况下,能在近距离范围内实现相互通信或操作。其传输频段为全球公众通用的2.4GHzISM频段,提供了1Mbps的传输速率和10m的传输距离(目前大功率的蓝牙芯片已经可以达到100m的覆盖范围)。它采用跳频扩频FHSS(FrequencyHoppingSpreadSpectrum)技术,具有非常可靠的语音和数据传输能力,蓝牙芯片体积小、功耗低、其应用越来越广泛。但蓝牙芯片价格较为昂贵、传输距离较短、蓝牙技术尚无国际标准。IEEE802.11b是目前无线局域网(WLAN)的国际技术标准。工作在2.4GHz的ISM频段,速率最高可达11Mb/s,电波的覆盖范围可达100m左右。它采用直接序列扩谱DSSS(DirectSequenceSpreadSpectrum)技术,增强了抗干扰能力。802.11b无线网络的最大优点是兼容性,用它来组建大型无线网络,运营成本低,投资回报快。目前此种设备还比较昂贵,妨碍了其推广和应用[2]。微功率无线通信技术一般使用数字信号单片射频收发芯片,加上少量的外围元器件和微控制器构成无线通信模块。工作于ISM频段,即使用户对其工作机制没有较深了解,也可实现数据的无线传输功能。因其功率小,投资小,开发简单快捷而广泛应用。1.2研究现状今天我们已经进入了一个无线技术无所不在的时代。在家中,使用便利的无线电话;出门在外使用手机与远方的亲人通话、发短消息;开车,GPS系统为我们指航导路;工作,使用无线网卡可以随时随地地进行网上办公,等等。随着技术的进步,无线通信和无线网络将迅速地向我们日常生活的各个方面扩展,不久的将来我们大部分的电子产品都将是无线并可随时在线的,一个无线社会很快就将成为现实,并深刻改变人们的生活方式[3]。因此研究无线通信技术有着很重要的意义。本文通过对无线数据传输系统模型的研究,提出了一种基于无线模块nRF905和ATMEGA16L单片机的无线数据通信系统的总体设计方案,通过对环境参数的测试、处理、以及对无线通信传输等模块的设计真正掌握了无线通信技术的使用方法,为以后从事无线产品的开发打下了坚实的基础。1.3项目研究步骤及方法首先在网上及图书馆数据库查找相关资料,充分利用相关数字资源及图书,对传感器技术和无线数据传输技术的研究现状和应用前景进行全面的了解,接下来集中时间学习了AVR单片机。最后,按要求完成短距离无线温度测试系统的设计。具体分以下步骤:文献检索:了解传感器技术和无线数据传输技术的历史、现状和未来发展前景。开题报告:查看、阅读相关资料,制作出研究步骤及时间安排的计划书。熟悉原理:根据已查到的相应资料设计短距离无线数据通讯系统的一般硬件电路图,掌握相关涉及芯片的软件设计设计方案:研究基于短距离无线温度测试系统的工作原理,根据其原理选择相关器件和芯片,确立应用方案,最后根据完整的电路原理图写出详细的控制程序,给出程序流程图和程序源代码。联机调试:对硬件进行调试、改进,直至最终系统完善。完成毕业论文:根据所有的资料、调试结果记录撰写毕业论文。2系统总体设计2.1系统的硬件设计2.1.1器件的选用1.中央处理器的选用由于无线收发芯片nRF905提供SPI口并且工作电压为1.9~3.6V,因此选用有SPI接口功能的低功耗单片机。ATMEGA16L有工作于主机/从机模式的SPI串行接口,所以不需要进行软件模拟SPI口,可工作于低压状态,工作电压为2.7~5.5V。ATMEGA16L是Atmel公司的高性能、低功耗的8位AVR微处理器。先进的RISC结构,非易失性程序和数据存储器,16K字节的系统内可编程Flash,擦写寿命10,000次,512字节的EEPROM擦写寿命100,000次,1K字节的片内SRAM可以对锁定位进行编程以实现用户程序的加密。JTAG接口(与IEEE1149.1标准兼容),符合JTAG标准的边界扫描功能,支持扩展的片内调试功能,通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程。两个具有独立预分频器和比较器功能的8位定时器/计数器,一个具有预分频器、比较功能和捕捉功能的16位定时器/计数器,具有独立振荡器的实时计数器RTC[4]。四通道PWM,8路10位ADC8个单端通道,TQFP封装的7个差分通道,2个具有可编程增益(1x,10x或200x)的差分通道。面向字节的两线接口,两个可编程的串行USART,可工作于主机/从机模式的SPI串行接口,具有独立片内振荡器的可编程看门狗定时器,片内/模拟比较器。上电复位以及可编程的掉电检测,片内经过标定的RC振荡器,片内/片外中断源。6种睡眠模式,空闲模式、ADC噪声抑制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式。鉴于以上优点,选用ATMEGA16L单片机为中央处理器。2.无线收发芯片的选择随着射频电子技术的发展,无线收发芯片的集成度、性能都大幅度提高,芯片的种类和数量比较多,性能也各有特色。目前,世界各大芯片制造商研制开发出了各种新型射频芯片,使短距离无线通信装置的设计开发趋于容易、便捷、周期短、成本低。生产此类芯片的厂家主要要Nordic、XEMICS、TI、Maxim、Chipcon等。此类产品收发合一,工作频率一般为国际通用的ISM频段,无需申请许可证,采用低发射功率、高接收灵敏度的设计,使用时对周围干扰很小,调制方式大多为ASK、FSK,传输速率为几K到几百Kbit/s,传输距离受环境影响,一般在几十米到数百米。选择无线收发芯片时,应考虑以下几个因素:芯片的数据传输是否需要进行曼彻斯特编码以及传输速度;芯片所需的外围元件数量;功耗;发射功率;芯片的封装和管脚数。nRF905是挪威NordicVLSI公司推出的单片射频收发器,工作电压为1,9~3.6V,32引脚QFN封装(5×5mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650us。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器。ShockBurstTM工作模式,自动处理字头和CRC(循环冗余校验),使用SPI接口和微控制器通信,配置非常方便[5]。此外,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,工作于接收模式时的电流为12.5mA,内建空闲模式与关机模式,易于实现节能。nRF905适合点对点的数据传输,内置了CRC纠检错硬件电路和协议,提高了系统的可靠性,且不再需要用软件对传输数据进行差错控制编码,简化了软件编程,适合在工业现场使用。灵敏度高,数据传输速率为50Kbps,低功耗,体积小。本论文设计得数据采集系统通过无线收发模块传输现场采集数据,对数据传输的可靠性要求较高。综合考虑以上因素,采用nRF905为无线收发模块。3.温度传感器的选择随着温度传感器的智能化、集成化技术的进步,数字式温度传感器也得到了快速发展,世界上许多公司推出了新型的数字温度传感器系列,这些产品的出现极大的丰富了设计工程师的选择对象。在如此众多的产品中选择出合适的器件,应该把握以下几点:外围电路应该尽量简单;测温的精度、分辨率要合适,以便减少不必要的电路和软件开发成本;温度传感器采用的总线负载能力如何,能否满足多点测温的需要;占用MCU的I/O引脚数情况如何,因为MCU的系统资源非常宝贵,输入通道有限,多点温度测量时,如果测量的点数超过了输入通道时,就要添加多路复用器,这将增加成本和开发时间,应尽量节约;与MCU的通信协议应尽量简单,温度测量的软件开发难度、成本要尽量小。DS18B20是美国Dallas半导体公司的新一代数字式温度传感器,它具有独特的单总线接口方式,即允许在一条信号线上挂接数十甚至上百个数字式传感器,从而使测温装置与各传感器的接口变得十分简单,克服了模拟式传感器与微机接口时需要的A/D转换器及其它复杂外围电路的缺点,而且,可以通过总线供电,由它组成的温度测控系统非常方便,而且成本低、体积小、可靠性高。DS18B20的测温范围-55℃~+125℃。最高分辨率可达0.0625℃,由于每一个DS18B20出厂时都刻有唯一的一个序列号并存入其ROMDallas公司的单总线技术具有较高的性能价格比,有以下特点:适用于低速测控场合,测控对象越多越显出其优越性;性价比高,硬件施工、维修方便,抗干扰性能好;具有CRC校验功能,可靠性高;软件设计规范,系统简明直观,易于掌握。由于DS18B20独特的单总线接口方式在多点测温时有明显的优势,占用MCU的I/O引脚资源少,和MCU的通信协议比较简单,成本较低,传输距离远。所以,选用DS18B20作为温度测量的传感器。4.显示器的选择液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄、无辐射、低闪烁等许多其他显示器无法比拟的优点,最为重要的是LCD可实现很多字符组合的显示,人机界面相当友好,近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中,故选用LCD。本设计选用LCD1602显示器,LCD1602字符型液晶显示采用与日立公司的HD44780兼容的LCD控制器构成的2*16字符型液晶显示模块。5.编程语言的选择C语言拥有程序移植方便,程序的结构性、坚固性好,支持数学运算,采用条理清晰的结构化编程,程序的可维护性好,可协同开发软件,开发周期短。同时,C语言是面向过程和计算的,屏蔽和模糊了语句的执行时间、生成多少字节的代码等。因此,对于较复杂的系统,以及开发系统的限制,如果需要短时间内编出执行效率高、代码规范、模范化程度高的程序代码,C语言都能满足要求。因此我们选用C语言编程,开发软件选择挪威ImageCraft公司开发的ICCAVR。2.1.2系统硬件原理框图根据上一节所选的系统方案构想,下面进行系统硬件电路的具体设计,系统的总体结构框图如图2-1、图2-2所示,分为主机和从机两部分。从机由ATMEGA16L单片机、单片射频收发器nRF905、数字温度传感器DS18B20和2*16字符液晶温度显示器LCD1602组成。单片机先启动DS18B20采集温度,将采集的温度值送给LCD显示器显示,并由nRF905无线收发模块发送给主机。主机由ATMEGA16L单片机、单片射频收发器nRF905、2*16字符液晶温度显示器LCD1602组成和串口组成。主机通过单片射频收发器nRF905接收到从机发送的温度值,送给LCD显示器显示。图2-1从机系统框图图2-2主机系统框图2.2系统的软件设计本系统软件设计主要由主机程序、从机程序、PC机通信及数据处理显示程序三部分组成。2.2.1主机程序的设计主机程序开始后先进行初始化设置,初始化的内容包括nRF905初始化、串口初始化、LCD初始化[6]。然后置nRF905为接收状态,nRF905判断是否为接收数据,没有数据接收继续查询,有则接收从机通过nRF905发送的数据,单片机将接收的数据送LCD1602显示并通过串口发送给PC机,直到一组数据接收完毕。继续查询接收下一组数据,主机程序流程图如图2-3所示。图2-3主机程序流程图2.2.2从机程序设计从机程序开始后首先进行初始化设置。初始化的内容包括nRF905初始化、LCD1602的初始化、DS18B20初始化。然后调用DS18B20温度采集子程序,数据处理后将采集的温度值送LCD1602显示并通过nRF905发送给主机,如此循环往复。从机程序流程图如图2-4所示。图2-4从机程序流程图3显示电路3.1标准字符型液晶显示器LCD接口LCD1602字符型液晶显示器采用与日立公司的HD44780兼容的LCD控制器构成的2*16字符型液晶显示模块,是专用于显示数字、字母、符号,字符型LCD液晶显示模块对外提供统一的接口标准。字符型液晶显示模块接口引脚定义如表3-1所示。表3-1字符型液晶显示模块接口引脚定义引脚编号引脚名称引脚功能14-7D7-D0数据线6E片选信号,写数据控制,下降沿触发5R/W读/写方向控制信号,低电平为写入,高电平为读出4RS寄存器选择信号:RS=0:指令寄存器写入;忙标志读取;地址寄存器读取RS=1:数据寄存器读/写3V0驱动电压调节2VDD+5V1VSS地线15V-背光电压负端(GND)16V+背光电压正端(+5V)HD44780芯片中包含显示数据存储器(DDRAM)、字符存储器(CGRAM、CGROM)、指令寄存器、数据寄存器、地址寄存器、地址计数器,以及液晶行列扫描的驱动电路。3.1.1显示数据存储器LCD控制器的指令系统规定,在发送待显示字符代码的指令之前,先要送DDRAM的地址,实际上是待显示的字符显示位置。若LCD为双行字符显示,每行40个显示位置,第一行地址为00H-27H;第二行地址为40H-67H。双行显示的DDRAM地址与显示位置的对应关系如表3-2所示;表3-2双行显示的DDRAM地址与显示位置的对应关系显示位置1234567……3940DDRAMLine100H01H02H03H04H05H06H……26H27H地址Line240H41H42H43H44H45H46H……66H67H3.1.2字符存储器字符存储器有随机存储器(CGRAM)和只读存储器(CGROM)组成,CGROM中固化了192个5×7点阵的字符字型编码(包含128个ASCII码),供用户显示使用。如果要显示192个以外的字符,可以在CGRAM中自定义16个自设定的字符。3.1.3LCD显示模块的控制指令字符型液晶显示模块提供了统一的接口,同时提供了统一的控制命令格式,如表3-3所示。表3-3LCD命令一览表命令名称控制信号控制代码RSR/WD7D6D5D4D3D2D1D0清屏0000000001光标返回000000001X设置输入方式00000001I/Ds显示开关控制0000001DCB光标或显示屏移动000001S/CR/LXX工作方式设置00001DLNFXX设置CGRAM地址0001A5A4A3A2A1A0设置DDRAM地址001A6A5A4A3A2A1A0读忙标志和地址O1BFA6A5A4A3A2A1A0写数据10数据读数据11数据HD44780的数据线可以使用8位方式(D7-D0),也可以使用4位方式(D4-D0),由工作方式设置命令中的“DL”(D4)位决定。使用4位方式时,写入(读取)数据分两次完成,先写入(读取)数据的高4位,接着写入(读取)数据的低4位。下面给出LCD控制命令的功能解释。清屏显示命令:清显示屏,光标复位到地址00H位置表3-4清屏显示命令D7D6D5D4D3D2D1D000000001光标复位命令:表3-5光标复位命令D7D6D5D4D3D2D1D00000001X读/写方式下的光标和显示模式设置命令:表3-6读/写方式下的光标和显示模式设置命令D7D6D5D4D3D2D1D0000001I/DSI/D:表示地址计数器(AC)的变化方向,即光标移动的方向。I/D=1:AC自动加1,光标右移一个字符。I/D=0:AC自动减1,光标左移一个字符。S:显示屏上画面向左或向右全部移动一个字符位。S=1,I/D=1:当写一个字符时,整屏显示左移。S=1,I/D=0:当写一个字符时,整屏显示右移。显示开关控制命令:表3-7显示开关控制命令D7D6D5D4D3D2D1D000001DCBD:当D=0时,显示关闭,DDRAM中数据保持不变。当D=1时,显示DDRAM中的数据。C:当C=1时,显示光标;C=0时,不显示光标。B:当B=1时,光标所在字符闪烁;B=0时,光标不显示。光标或显示屏移动命令:表3-8光标或显示屏移动命令D7D6D5D4D3D2D1D00001S/CR/LXX具体含义如表3-9:表3-9光标命令的具体含义S/CR/L00光标左移,地址计数器减101光标右移,地址计数器加110显示屏左移,光标跟随显示屏移动11显示屏右移,光标跟随显示屏移动工作方式设置命令:表3-10工作方式设置命令D7D6D5D4D3D2D1D0001DLNFXXDL=0:数据线宽度为4位,DB7-DB4;DL=1:数据线宽度为8位。N=0:显示1行;N=1:显示2行;F=0:显示5×7点阵;F=1:显示5×10点阵;3.2单片机与LCD1602 的硬件连接原理图本设计选用ATMEGA16L的PA口和PC口得PC5、PC6、PC7端口,LCD1602采用8位数据线工作方式。ATMEGA16LPA口与LCD1602的8位数据线连接,ATMEGA16LPC口得PC5、PC6、PC7端口分别与LCD1602的使能端口、读/写选择端口、数据/命令选择端口连接。硬件连线原理图如图3-1所示,详细原理图见附录A。图3-1单片机与LCD1602连接图3.3液晶显示器LCD1602软件的设计为了方便读/写控制,在程序中作了如下定义#defineRS_HPORTC|=BIT(PC7)//拉高数据/命令选择。#defineRS_LPORTC&=~BIT(PC7)//拉低数据/命令选择。#defineRW_HPORTC|=BIT(PC6)//拉高读/写选择。#defineRW_LPORTC&=~BIT(PC6)//拉低读/写选择。#defineE_HPORTC|=BIT(PC5)//拉高使能信号选择。#defineE_LPORTC&=~BIT(PC5)//拉低使能信号选择。这样方便对LCD液晶显示器的控制。基本操作状态如表3-11所示。表3-11基本操作状态读状态输入RS=L,R/W=H,E=H输出D0-D7=状态字写指令输入RS=L,R/W=L,D0-D7=状态字,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0-D7=状数据写数据输入RS=H,R/W=L,D0-D7=状数据,E=高脉冲输出无此外,用到每个功能模块函数已在程序中定义,如下:voidLcd_Command(unsignedcharbComm)//向Lcd发送命令程序voidLcd_Cls(void)//清屏voidLcd_Write(charwb)//向lcd写入一个字符voidLcd_Init(void)//初始化;8位接口,2*16字符的工作方式voidDisplay_oneStr(unsignedcharsta,unsignedcharintvalue)//定点显示char型数据voidDisplay_Str(unsignedcharsta,unsignedchar*str)//指定位置显示字符串程序流程图如图3-2所示。图3-2程序流程图4接收器和转发器USART及串口SPI4.1USART特点及原理ATMEGA16L单片机的同步和异步串行接收器和转发器(USART)是一个高度灵活的串行通讯设备。主要特点为:全双工操作(独立的串行接收和发送寄存器)异步或同步操作;主机或从机提供时钟的同步操作;高精度的波特率发生器;支持5,6,7,8,或9个数据位和1个或2个停止位;硬件支持的奇偶校验操作;数据过速检测;帧错误检测;噪声滤波,包括错误的起始位检测,以及数字低通滤波器;(10)三个独立的中断:发送结束中断,发送数据寄存器空中断,以及接收结束中断;(11)多处理器通讯模式;(12)倍速异步通讯模式。USART分为三个主要部分:时钟发生器,发送器和接收器。控制寄存器由三个单元共享。时钟发生器包含同步逻辑,通过它将波特率发生器及为从机同步操作所使用的的外部输入时钟同步起来。XCK(发送器时钟)引脚只用于同步传输模式。发送器包括一个写缓冲器,串行移位寄存器,奇偶发生器以及处理不同的帧格式所需的控制逻辑。写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟[7]。由于接收器具有时钟和数据恢复单元,它是USART模块中最复杂的。恢复单元用于异步数据的接收。除了恢复单元,接收器还包括奇偶校验,控制逻辑,移位寄存器和一个两级接收缓冲器UDR。接收器支持与发送器相同的帧格式,而且可以检测帧错误,数据过速和奇偶校验错误。4.2SPI特点及原理串行外设接口SPI允许ATMEGA16L和外设或其他AVR器件进行高速的同步数据传输。ATMEGA16LSPI的特点如下:(1)全双工,3线同步数据传输;(2)主机或从机操作;(3)LSB首先发送或MSB首先发送;(4)7种可编程的比特率;(5)传输结束中断标志;(6)写碰撞标志检测;(7)可以从闲置模式唤醒;(8)作为主机时具有倍速模式(CK/2)。系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的SS引脚拉低,主机启动一次通讯过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在SCK引脚上产生时钟脉冲以交换数据。主机的数据从主机的MOSI移出,从从机的MOSI移入;从机的数据从从机的MISO移出,从主机的MISO移入。主机通过将从机的SS拉高实现与从机的同步。配置为SPI主机时,SPI接口不自动控制SS引脚,必须由用户软件来处理。对SPI数据寄存器写入数据即启动SPI时钟,将8比特的数据移入从机。传输结束后SPI时钟停止,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,中断就会发生。主机可以继续往SPDR写入数据以移位到从机中去,或者是将从机的SS拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。配置为从机时,只要SS为高,SPI接口将一直保存睡眠状态,并保持MISO为三态。在这个状态下软件可以更新SPI数据寄存器SPDR的内容。即使此时SCK引脚有输入时钟,SPDR的数据也不会移出,直到SS被拉低[8]。一个字节完全移出之后,传输结束标志SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读取移入的数据之前从机可以继续往SPDR写入数据。最后进来的数据将一直保存于缓冲寄存器里。SPI系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。而在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则第一个字节将丢失。工作于SPI从机模式时,控制逻辑对SCK引脚的输入信号进行采样。为了保证对时钟信号的正确采样,SPI时钟不能超过fosc/4。SPI使能后,MOSI、MISO、SCK和SS引脚的数据方向将按照表5-1所示自动进行配置。表4-1SPI引脚重载引脚方向,SPI主机方向,SPI从机MOSI用户定义输入MISO输入用户定义SCK用户定义输入SS用户定义输入5射频收发电路5.1芯片结构nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率、放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。nRF905的详细结构如图5-1所示。图5-1nRF905的详细结构5.2工作模式下面具体详细分析nRF905的发送流程和接收流程。1.发送流程典型的nRF905发送流程分以下几步:(1)当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据传送给nRF905,SPI接口的速率在通信协议和器件配置时确定;(2)微控制器置高TRX_CE和TX_EN,激发nRF905和ShockBurstTM发送模式;(3)nRF905的ShockBurstTM发送;射频寄存器自动开启;数据打包(加字头和CRC校验码);发送数据包;当数据发送完成,数据准备好引脚被置高。(4)AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;(5)当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。ShockBurstTM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。2.接收流程(1)当TRX_CE为高、TX_EN为低时,nRF905进入ShockBurstTM接收模式;(2)650us后,nRF905不断监测,等待接收数据;(3)当nRF905检测到同一频段的载波时,载波检测引脚被置高;(4)当接收到一个相匹配的地址,地址匹配引脚被置高;(5)当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高;(6)微控制器把TRX_CE置低,nRF905进入空闲模式;(7)微控制器通过SPI口,以一定的速率把数据移到微控制器内;(8)当所有的数据接收完毕,nRF905把数据准备好引脚和地址匹配引脚置低;(9)nRF905由此可以进入ShockBurstTM接收模式、ShockBurstTM发送模式或关机模式。当正在接收一个数据包时,TRX_CE或TX_EN引脚的状态发送改变,nRF905立即把其工作模式改变,数据包则丢失[9]。当微处理器接到地址匹配引脚的信号之后,其就知道nRF905正在接收数据包,其可以决定是让nRF905继续接收该数据包还是进入另一个工作模式。5.3器件配置所有配置字都是通过SPI接口送给nRF905。SPI接口的工作方式可通过SPI指令进行设置。当nRF905处于空闲模式或关机模式时,SPI接口可以保持在工作状态。5.3.1SPISPI接口由状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器5个寄存器组成。状态寄存器包含数据准备好引脚状态信息和地址匹配引脚状态信息;射频配置寄存器包含收发器配置信息,如频率和输出功能等;发送地址寄存器包含目标器件地址,字节长度由配置寄存器设置;发送数据寄存器包含待发送的数据包的信息,如字节数等;接收数据寄存器包含要接收的数据的字节数等信息。5.3.2射频配置射频配置寄存器和内容如表5-1所示:表5-1射频配置寄存器名称位宽描述CH_NO9和HFRQ_PLL一起进行频率设置HFREQ_PLL1使PLL工作于433或868//915MHz(默认值为0)‘0’-工作于433MHz频段‘1’-工作于868/915MHz频段PA_PWR2输出功率(默认值为00)‘00’-10dBm;‘01’-2dBm;‘00’+0dBm;‘00’+10dBm;RX_RED_PWR1接受方式节能端,该位为高时,接受工作电流为1.6mA,但同时灵敏度也降低ATUTO_RETRAN1自动重发位,只有当TRX_CE,和TXEN为高时才有效RX_AFW3接收地址宽度(默认值为100)‘001’-1byteRX地址;‘001’-4byteRX地址TR_AFW3发送地址宽度(默认值为100)‘001’-1byteRX地址;‘001’-4byteRXRX_PW6发送数据宽度(默认值为100000)‘000001’-1byte发送数据宽度;‘000010’-2byte发送数据宽度;…………………‘100000’-32byte发送数据宽度TX_PW6接收数据宽度(默认值为100000)‘000001’-1byte接收数据宽度;‘000010’-2byte接收数据宽度;…………………‘100000’-32byte接收数据宽度RX_ADDRESS32发送地址标识(默认值E7E7E7E7)UP_CLK_FREQ2输出时钟频率(默认值11)‘00’-4MHz;‘01’-2MHz;‘10’-1MHz;‘11’UP_CLK_EN1输出时钟使能XOF3晶振频率端,必须与外部晶振频率相对应(默认值为100)‘000’-4MHz;‘001’-8MHz;‘010’-12MHz‘011’-16MHz;‘100’-20MHz;CRC_EN1CRC校验使能端,高为使能,默认值为高CRC_MODE1CRC方式选择端,高为16,低为8位,默认值为高射频寄存器的各位的长度是固定的。然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS4个寄存器使用字节数由配置字决定。nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。5.4单片机与nRF905的硬件连接原理图单片机与nRF905的接口电路很重要。nRF905内部有5个寄存器:状态寄存器、配置寄存器、发射地址寄存器、发射数据寄存器和接收数据寄存器。除了对寄存器读写外,还需对nRF905工作模式的切换进行控制。单片机与nRF905的硬件连接图如图5-2所示,详细电路图见附录A。ATMEGA16L与nRF905之间的双向数据传输使用SPI接口,单片机的PB7-PB4连接nRF905的SPI接口,PB2-PB0、PD2-PD3连接nRF905的控制信号和检测信号,用于nRF905的模式切换以及通信过程中必须的信号指示接口。图5-2单片机与nrf905连接图5.5nRF905软件的设计1、nRF905的配置nRF905的所有配置都是通过SPI接口进行。SPI接口由5个寄存器组成。一条SPI指令用来决定进行什么操作。SPI接口只有在关机模式和Stamdby模式是激活的。SPI接口由5个内部寄存器组成。执行寄存器的回读模式来确认寄存器的内容。状态寄存器:包含数据准备就绪(DR)和地址匹配(AM)状态。nRF905配置寄存器:包含收发器的频率,输出功率等配置信息。发送地址寄存器:包含目标器件地址,字节长度由配置寄存器设置。发送有效数据寄存器:包含发送的有效ShockBust数据包数据,字节长度由配置寄存器设置。接收有效数据寄存器:包含接收的有效ShockBust数据包数据,字节长度由配置寄存器设置。在寄存器中的有效数据由数据准备就绪(DR)指示。SPI指令设置有用命令如表5-2所示。当CSN为低时,SPI接口开始等待一条指令,任何一条新指令均由CSN的由高到低的转换开始。表5-2SPI串行接口指令SPI串行接口指令指令名称指令格式操作W_CONFIG(WC)0000AAAA写配置寄存器。AAAA指出写操作的开始字节,字节数量取决于AAAA指出的开始地址。R_CONFIG(RC)0001AAAA读配置寄存器。AAAA指出读操作的开始字节,字节数量取决于AAAA指出的开始地址。W_TX_PAYLOAD(WTP)00100000写TX有效数据:1-32字节。写操作全部由字节0开始。R_TX_PAYLOAD(RTP)00100001读TX有效数据:1-32字节。读操作全部从字节0开始。W_TX_ADDRESS(WTA)00100010写TX地址:1-4字节。写操作全部从字节0开始。R_TX_ADDRESS(RTA)00100011读TX地址:1-4字节。读操作全部从字节0开始。R_RX-PAYLOAD(RRP)00100100读RX有效数据:1-32字节。读操作全部从字节0开始。CHANNEL_CONFIG(CC)1000pphccccccccc快速设置配置寄存器中CH_NO;HFREQ_PLL和PA_PWR的命令。CH_NO=ccccccccc;HFREQ_PLL=h;PA_PWR=pp根据以上指令形式,在程序中定义各个命令对应的数据。由于ATMEGA16L单片机自身带有SPI硬件通信接口可以直接和nRF905的SPI接口相连。根据读写时序编写对应的程序如下:ucharnrf905_SpiRW(ucharval)//SPI读写操作{uchartemp;SPDR=val;While((SPSR&(1<<SPIF))==0);Temp=SPDR;Returntemp;}2、数据包描述数据包格式是通信协议的重要部分,完整的射频数据包由四部分组成:前缀、地址、有效数据和CRC。nRF905的无线数据包格式如下:PreambleADDRPAYLOADCRC其中,Preamle是前缀,是由硬件自动加上去的;ADDR是要发送的32-40位地址码;PAYLOAD是有效数据;CRC是CRC校验和,它可由内置CRC纠检错硬件电路自动加上,可设为0/8或6位。ShockBurst数据包的总位数最多不能超过256位,可通过下式计算有效数据的最大位数:DATAx_W(bits)=256-ADR_W-CRC其中:ADDR_W为配置字中B[32:18]所设置的接收地址的长度,8-40位;CRC为配置字B[17]所设置的校验字,8位或16位。4位或8位前缀是自动加进去的,不占用数据包的位数。由上式可知,要想在每个数据包中得到更长的有效数据,可减少地址和CRC校验位。因此,设置较短的地址和校验和可以提高传输效率,但会使可靠性降低。ShockBurst方式,前缀、地址和CRC都是在接收器收到数据包和自动移去,只留有效数据。3、发送模式软件设计ShockBurst工作模式确保一个传输包发送开始后,总是能够完成,不管在发送过程中TRX_CE,TX_EN如何被设置。当发送结束后,新的模式被激活。其主要程序如下:Voidnrf905_SendData()//发送TxBuf中的数据{nrf905_TxOn();//切换到发送模式nrf905_SetTxAddr();//写发送地址nrf905_SetData();//写数据nrf905_TxSend();//启动发送nrf905_WaitSended();等待发送结束}4、接收模式软件设计如果在引入数据当中TRX_CE或TX_EN的状态改变,nrf905将立刻改变模式,并且数据包丢失。尽管如此,如果MCU已经感觉到AM信号,MCU就知道nrf905正在接收数据,然后决定是等待DR信号还是改变模式。其主要程序如下:Voidnrf905_ReadData()//读出接收到的数据{uchari;CLR(PORTB,CSN);Nrf905_SpiRW(RRP);//读RxPayloadfor(i=0;i<SIZE;i++){RxBuf[i]=nrf905_SpiRW(0);//读出接收到的数据}SET(PORTB,CSN);}6测温电路6.1DS18B20的特点、结构及工作原理说明数字温度传感器DS18B20的测温范围为-55℃-+125℃,精度为0.5℃,测量的温度值用9或12位数字表示,最大转换时间为750ms,温度超标报警的上、下限值,DS18B20的转换分辨率均可由用户设定,并能长期保存。利用Dallas的单总线控制协议和单线控制信号在总线上来实现数据的读写。DS18B2O的另一特点是在没有外部电源下操作的能力,电源由总线为高电平时DQ脚上的上拉电阻提供(寄生供电模式),此时VDD脚接地。也可用传统方式供电,即将外部电源接在VDD脚上即可[10]。电源为3或5.5VDS18B20测温原理如图6-1所示。图中低温度系数晶振的振荡频率受温度影响很小,用来向计数器1提供固定频率的脉冲信号。高温度系数晶振的振荡频率受温度影响较大,随温度的变化而明显改变,其产生的信号作为计数器2的脉冲输入,用来控制闸门的关闭时间。初态时,计数器1和温度寄存器被预制在与-55℃相对应的一个基值上。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,在计数器2控制的闸门时间到达之前,如果计数器1的预制值减到0,则温度寄存器的值将作加1运算,与此同时,用于补偿和修正测温过程中非线性的斜率累加器将输出一个与温度变化相对应的计数值,作为计数器1的新预制值,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到计数器2控制的闸门时间到达亦即计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。在默认的配置中,DS18B20的测温分辨率为0.0625℃,以12图6-1测温原理图6.2DS18B20的数据处理DS18B2O的高速暂存储存器由9个字节组成,其分配如表6-1所示,当温度转换成命令发布后,经转换所得的温度值以2字节补码形式存放到高速暂存存储器的第0和第1个字节。单片机可通过单线接口读取到该数据,读取时低位在前,高位在后。表6-1字节分配温度低位温度高位THTL配置保留保留保留8位CRC表6-2DS18B20温度数据表温度数字量输出(二进制)数字量输出(十六进制)+125000001111101000007D0H+25.062500000001100100010191H+10.125000000001010000000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FF6FH-551111110010010000FC90H表6-2所列是DS18B20温度采集转换后得到的12位数据,存储在DS18B20的两个8bit的RAM中,二进制的前5位是符号位,如果测的温度大于或等于0,这五位为0,只要将测得数值乘以0.0625即可得到实际温度;如果温度小于0,这五位为1,测的数值需要取反加1再乘以0.0625即可得到实际温度[11]。6.3单片机与DS18B20的硬件连接原理图图6-218B20硬件连接图单片机和DS18B20的硬件原理图如图6-2所示,DS18B20的单总线DQ与接单片机ATMEGA16L的PD0端口连接,另加一个上拉电阻。详细原理图见附录A。6.4DS18B20软件的设计首先DS18B20初始化,接着从机检测DS18B20是否存在,如存在则跳过DS18B20的ROM,因为本程序中只接着一个DS18B20,故不需要读DS18B20的序列号和匹配DS18B20。如不存在继续检测[12]。跳过ROM后调用温度转换函数,然后读温度数据,读完温度数据后处理温度数据,最后输出温度数据。程序流程图如图6-3所示。图6-3程序流程图其主要程序中的主要函数如下:unsignedcharresetDS18B20(void)//DS18B20初始化unsignedcharreadByteDS18B20(void)//读DS18B20一个字节voidwriteDS18B20(unsignedcharwb)//写DS18B20一个字节unsignedintreadTempDS18B20(void)//读DS18B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 采购合同范本洁模板模板
- 买家赎楼签协议签合同
- 总经理聘用劳动合同范本
- 外贸购销树脂板合同范本
- 进口铜矿石购销合同范本
- 2025年技术合同范本
- 酒店合同协议书标准范本
- 2025销售新合同范本
- 二厂家电买卖合同范本
- 美甲店连轴转让合同范本
- 《工业视觉基础知识》课件
- 家长进课堂金融知识讲座
- 高警示药品管理考试
- 国家开放大学(中央电大)报名登记表(附填写说明)
- JCT2425-2017 坐便器安装规范
- 四年级名人名言80句
- 非遗文化创意产品设计 课件全套 第1-5章 概述- 非遗文创产品设计案例解析
- 西门子数控系统调试
- RB/T 089-2022绿色供应链管理体系要求及使用指南
- 电子护理文书书写规范
- 经济法说课稿
评论
0/150
提交评论