资源描述
基于2.4GHz频段模块的无线通信系统的开发
摘要:nRF905提供了强大的跳频机制以及大量的频道支持,可以用在许多的特殊场合,在工业生产和消费电子中具有广阔的应用前景。
本文提出了一种基于无线模块nRF905的无线数据通信系统的总体设计方案和实现方法。系统采用高速度低功耗单片机ATMEAG16L作为主芯片,nRF905作为无线收发模块,利用SPI口实现双向通信,SPI支持高速数据传输,从而满足了射频带宽的要求。由于采用较完善的软硬件设计和抗干扰措施,保证了系统工作的安全性和可靠性。系统集数据采集、无线数据通信、串行通信等功能于一体,可以很方便地实现点对点及点对多点无线数据通信,广泛应用于遥感、遥控、无线抄表、工业数据采集及家庭自动化等领域。
关键词:单片机;射频模块;温度传感器;液晶显示器;无线通信
Development of Wireless Communication System
based on 2.4GHz Frequency Band
Abstract :nRF905 FH provides a powerful support mechanism and a large number of channels can be used in many special occasions, in industrial production and consumer electronics in a wide range of applications.
This paper proposes the overall design plan and the realization method of one kind of wireless data communication system based on the wireless module nRF905. The system adopts high-speed and low-power single-chip ATMEAG16L as the main control chip, nRF905 as a wireless transceiver modules and the SPI port to achieve a two-way communication, which support the high-speed data transmission to meet the requirements of the radio frequency bandwidth. nRF905 provides a powerful mechanism for frequency hopping, as well as a support for a large number of channels which can be used on many special occasions. Owing to a better hardware and software design and anti-jamming measures, the safety and reliability of the system are ensured. The system sets data acquisition systems, wireless data communications and serial communication in one, thus making it easy to achieve point-to-point and point-to-multipoint wireless data communications. So it can be widely used in remote sensing, remote control, wireless meter reading, industrial data acquisition and home automation and other fields.
Keywords:Single Chip; RF module; temperature sensor; Liquid Crystal Display; Wireless correspondence
III
目录
摘要 I
Abstract II
1 绪论 1
1.1课题研究的背景及意义 1
1.2研究现状 2
1.3项目研究步骤及方法 2
2 系统总体设计 3
2.1系统的硬件设计 3
2.1.1 器件的选用 3
2.1.2 系统硬件原理框图 5
2.2 系统的软件设计 6
2.2.1 主机程序的设计 6
2.2.2 从机程序设计 6
3 显示电路 8
3.1 标准字符型液晶显示器LCD接口 8
3.1.1 显示数据存储器 8
3.1.2 字符存储器 9
3.1.3 LCD显示模块的控制指令 9
3.2 单片机与LCD1602的硬件连接原理图 11
3.3 液晶显示器LCD1602软件的设计 12
4 接收器和转发器USART及串口SPI 13
4.1 USART特点及原理 13
4.2 SPI特点及原理 13
5 射频收发电路 15
5.1 芯片结构 15
5.2 工作模式 15
5.3器件配置 16
5.3.1 SPI接口配置 16
5.3.2 射频配置 17
5.4 单片机与nRF905的硬件连接原理图 18
5.5 nRF905软件的设计 19
6 测温电路 22
6.1 DS18B20的特点、结构及工作原理说明 22
6.2 DS18B20的数据处理 23
6.3 单片机与DS18B20的硬件连接原理图 23
6.4 DS18B20软件的设计 24
7 结论 25
参考文献 26
致谢 26
1 绪论
1.1课题研究的背景及意义
在许多测控现场中,传统的数据通信是通过有线电缆实现的。随着射频技术、集成电路的发展,无线通信功能的实现越来越容易,数据传输速率也越来越快,抗干扰能力也越来越强,因此,越来越多的场合采用了无线传输技术。无线数据传输相比于有线传输有许多优点:
1、成本低,省去了大量的布线;
2、建网快捷,只需在每个终端连接无线数传模块和架设适当高度的天线即可;
3、适应性好,无线数据传输在一些特殊的应用环境,比如遇到山地、湖泊、林区等特殊的地理环境或是移动物体等布线比较困难的应用环境的时候,能解决因布线困难、电缆接插件松动、短路带来的问题;
4、扩展性好,采用有线传输方式,不能随意移动,设备重新布局就要重新布线,但采用无线数据传输,只需将设备与无线数传模块相连接就可以了;
5、设备维护容易,有线通信链路的维护需沿线路检查,出现故障时,一般很难及时找出故障点,而采用无线数据传输方式只需维护数传模块,出现故障时则能快速找出原因。
目前应用于数据传输的无线通信技术主要有蓝牙(bluetooth),无线局域网(WLAN)802.11b,微功率超短波无线通信以及基于公共移动通信网络(GSM、CDMA)的传输方式[1]。
蓝牙(bluetooth)是一种短距离无线通信技术。它是一种无线数据与语音通信的开放性全球规范,其实质内容是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,将通信技术与计算机技术进一步结合起来,使各种设备在没有电线或电缆相互连接的情况下,能在近距离范围内实现相互通信或操作。其传输频段为全球公众通用的2.4GHz ISM频段,提供了1Mbps的传输速率和10m的传输距离(目前大功率的蓝牙芯片已经可以达到100m的覆盖范围)。它采用跳频扩频FHSS(Frequency Hopping Spread Spectrum)技术,具有非常可靠的语音和数据传输能力,蓝牙芯片体积小、功耗低、其应用越来越广泛。但蓝牙芯片价格较为昂贵、传输距离较短、蓝牙技术尚无国际标准。IEEE802.11b是目前无线局域网(WLAN)的国际技术标准。工作在2.4GHz 的ISM频段,速率最高可达11Mb/s,电波的覆盖范围可达100m左右。它采用直接序列扩谱DSSS(Direct Sequence Spread Spectrum)技术,增强了抗干扰能力。802.11b无线网络的最大优点是兼容性,用它来组建大型无线网络,运营成本低,投资回报快。目前此种设备还比较昂贵,妨碍了其推广和应用[2]。
微功率无线通信技术一般使用数字信号单片射频收发芯片,加上少量的外围元器件和微控制器构成无线通信模块。工作于ISM频段,即使用户对其工作机制没有较深了解,也可实现数据的无线传输功能。因其功率小,投资小,开发简单快捷而广泛应用。
1.2研究现状
今天我们已经进入了一个无线技术无所不在的时代。在家中,使用便利的无线电话;出门在外使用手机与远方的亲人通话、发短消息;开车,GPS系统为我们指航导路;工作,使用无线网卡可以随时随地地进行网上办公,等等。
随着技术的进步,无线通信和无线网络将迅速地向我们日常生活的各个方面扩展,不久的将来我们大部分的电子产品都将是无线并可随时在线的,一个无线社会很快就将成为现实,并深刻改变人们的生活方式[3]。因此研究无线通信技术有着很重要的意义。
本文通过对无线数据传输系统模型的研究,提出了一种基于无线模块nRF905和ATMEGA16L单片机的无线数据通信系统的总体设计方案,通过对环境参数的测试、处理、以及对无线通信传输等模块的设计真正掌握了无线通信技术的使用方法,为以后从事无线产品
的开发打下了坚实的基础。
1.3项目研究步骤及方法
首先在网上及图书馆数据库查找相关资料,充分利用相关数字资源及图书,对传感器技术和无线数据传输技术的研究现状和应用前景进行全面的了解,接下来集中时间学习了AVR单片机。最后,按要求完成短距离无线温度测试系统的设计。具体分以下步骤:
1、 文献检索:了解传感器技术和无线数据传输技术的历史、现状和未来发展前景。
2、 开题报告:查看、阅读相关资料,制作出研究步骤及时间安排的计划书。
3、 熟悉原理:根据已查到的相应资料设计短距离无线数据通讯系统的一般硬件电路图,掌握相关涉及芯片的软件设计
4、 设计方案:研究基于短距离无线温度测试系统的工作原理,根据其原理选择相关器件和芯片,确立应用方案,最后根据完整的电路原理图写出详细的控制程序,给出程序流程图和程序源代码。
5、 联机调试:对硬件进行调试、改进,直至最终系统完善。
6、 完成毕业论文:根据所有的资料、调试结果记录撰写毕业论文。
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位ADC 8个单端通道,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,传输距离受环境影响,一般在几十米到数百米。选择无线收发芯片时,应考虑以下几个因素:
(1) 芯片的数据传输是否需要进行曼彻斯特编码以及传输速度;
(2) 芯片所需的外围元件数量;
(3) 功耗;
(4) 发射功率;
(5) 芯片的封装和管脚数。
nRF905是挪威Nordic VLSI公司推出的单片射频收发器,工作电压为1,9~3.6V,32引脚QFN封装(5×5mm),工作于433/868/915MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650us。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加声表滤波器。Shock Burst TM工作模式,自动处理字头和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出厂时都刻有唯一的一个序列号并存入其ROM中,因此CPU可用简单的通信协议就可以识别,从而节省了大量的引线和逻辑电路。
Dallas公司的单总线技术具有较高的性能价格比,有以下特点:
(1) 适用于低速测控场合,测控对象越多越显出其优越性;
(2) 性价比高,硬件施工、维修方便,抗干扰性能好;
(3) 具有CRC校验功能,可靠性高;
(4) 软件设计规范,系统简明直观,易于掌握。
由于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-7
D7-D0
数据线
6
E
片选信号,写数据控制,下降沿触发
5
R/W
读/写方向控制信号,低电平为写入,高电平为读出
4
RS
寄存器选择信号:
RS=0:指令寄存器写入;忙标志读取;地址寄存器读取
RS=1:数据寄存器读/写
3
V0
驱动电压调节
2
VDD
+5V
1
VSS
地线
15
V-
背光电压负端(GND)
16
V+
背光电压正端(+5V)
HD44780芯片中包含显示数据存储器(DDRAM)、字符存储器(CGRAM、CGROM)、指令寄存器、数据寄存器、地址寄存器、地址计数器,以及液晶行列扫描的驱动电路。
3.1.1 显示数据存储器
LCD控制器的指令系统规定,在发送待显示字符代码的指令之前,先要送DDRAM的地址,实际上是待显示的字符显示位置。若LCD为双行字符显示,每行40个显示位置,第一行地址为00H-27H;第二行地址为40H-67H。双行显示的DDRAM地址与显示位置的对应关系如表3-2所示;
表3-2 双行显示的DDRAM地址与显示位置的对应关系
显示位置
1
2
3
4
5
6
7
……
39
40
DDRAM
Line1
00H
01H
02H
03H
04H
05H
06H
……
26H
27H
地址
Line2
40H
41H
42H
43H
44H
45H
46H
……
66H
67H
3.1.2 字符存储器
字符存储器有随机存储器(CGRAM)和只读存储器(CGROM)组成,CGROM中固化了192个5×7点阵的字符字型编码(包含128个ASCII码),供用户显示使用。如果要显示192个以外的字符,可以在CGRAM中自定义16个自设定的字符。
3.1.3 LCD显示模块的控制指令
字符型液晶显示模块提供了统一的接口,同时提供了统一的控制命令格式,如表3-3所示。
表3-3 LCD命令一览表
命令名称
控制信号
控制代码
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清屏
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
X
设置输入方式
0
0
0
0
0
0
0
1
I/D
s
显示开关控制
0
0
0
0
0
0
1
D
C
B
光标或显示屏移动
0
0
0
0
0
1
S/C
R/L
X
X
工作方式设置
0
0
0
0
1
DL
N
F
X
X
设置CGRAM地址
0
0
0
1
A5
A4
A3
A2
A1
A0
设置DDRAM地址
0
0
1
A6
A5
A4
A3
A2
A1
A0
读忙标志和地址
O
1
BF
A6
A5
A4
A3
A2
A1
A0
写数据
1
0
数据
读数据
1
1
数据
HD44780的数据线可以使用8位方式(D7-D0),也可以使用4位方式(D4-D0),由工作方式设置命令中的“DL”(D4)位决定。使用4位方式时,写入(读取)数据分两次完成,先写入(读取)数据的高4位,接着写入(读取)数据的低4位。
下面给出LCD控制命令的功能解释。
清屏显示命令:清显示屏,光标复位到地址00H位置
表3-4 清屏显示命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
0
0
1
光标复位命令:
表3-5 光标复位命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
0
1
X
读/写方式下的光标和显示模式设置命令:
表3-6 读/写方式下的光标和显示模式设置命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
1
I/D
S
I/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 显示开关控制命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
1
D
C
B
D:当D=0时,显示关闭,DDRAM中数据保持不变。
当D=1时,显示DDRAM中的数据。
C: 当C=1时,显示光标;C=0时,不显示光标。
B: 当B=1时,光标所在字符闪烁;B=0时,光标不显示。
光标或显示屏移动命令:
表3-8 光标或显示屏移动命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
1
S/C
R/L
X
X
具体含义如表3-9:
表3-9 光标命令的具体含义
S/C
R/L
0
0
光标左移,地址计数器减1
0
1
光标右移,地址计数器加1
1
0
显示屏左移,光标跟随显示屏移动
1
1
显示屏右移,光标跟随显示屏移动
工作方式设置命令:
表3-10 工作方式设置命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
1
DL
N
F
X
X
DL=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位数据线工作方式。ATMEGA16L PA口与LCD1602的8位数据线连接,ATMEGA16L PC口得PC5、PC6、PC7端口分别与LCD1602的使能端口、读/写选择端口、数据/命令选择端口连接。硬件连线原理图如图3-1所示,详细原理图见附录A。
图3-1 单片机与LCD1602连接图
3.3 液晶显示器LCD1602软件的设计
为了方便读/写控制,在程序中作了如下定义
#define RS_H PORTC|=BIT(PC7) //拉高数据/命令选择。
#define RS_L PORTC&=~BIT(PC7) //拉低数据/命令选择。
#define RW_H PORTC|=BIT(PC6) //拉高读/写选择。
#define RW_L PORTC&=~BIT(PC6) //拉低读/写选择。
#define E_H PORTC|=BIT(PC5) //拉高使能信号选择。
#define E_L PORTC&=~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=高脉冲
输出
无
此外,用到每个功能模块函数已在程序中定义,如下:
void Lcd_Command(unsigned char bComm) //向Lcd发送命令程序
void Lcd_Cls(void) //清屏
void Lcd_Write(char wb) //向lcd写入一个字符
void Lcd_Init(void) //初始化;8位接口,2*16字符的工作方式
void Display_oneStr(unsigned char sta,unsigned char intvalue) //定点显示char型数据
void Display_Str(unsigned char sta,unsigned char *str) //指定位置显示字符串
程序流程图如图3-2所示。
图3-2 程序流程图
4 接收器和转发器USART及串口SPI
4.1 USART特点及原理
ATMEGA16L单片机的同步和异步串行接收器和转发器(USART)是一个高度灵活的串行通讯设备。主要特点为:
(1) 全双工操作(独立的串行接收和发送寄存器)
(2) 异步或同步操作;
(3) 主机或从机提供时钟的同步操作;
(4) 高精度的波特率发生器;
(5) 支持5,6,7,8,或9个数据位和1个或2个停止位;
(6) 硬件支持的奇偶校验操作;
(7) 数据过速检测;
(8) 帧错误检测;
(9) 噪声滤波,包括错误的起始位检测,以及数字低通滤波器;
(10)三个独立的中断:发送结束中断,发送数据寄存器空中断,以及接收结束中断;
(11)多处理器通讯模式;
(12)倍速异步通讯模式。
USART分为三个主要部分:时钟发生器,发送器和接收器。控制寄存器由三个单元共享。时钟发生器包含同步逻辑,通过它将波特率发生器及为从机同步操作所使用的的外部输入时钟同步起来。XCK(发送器时钟)引脚只用于同步传输模式。发送器包括一个写缓冲器,串行移位寄存器,奇偶发生器以及处理不同的帧格式所需的控制逻辑。写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟[7]。由于接收器具有时钟和数据恢复单元,它是USART模块中最复杂的。恢复单元用于异步数据的接收。除了恢复单元,接收器还包括奇偶校验,控制逻辑,移位寄存器和一个两级接收缓冲器UDR。接收器支持与发送器相同的帧格式,而且可以检测帧错误,数据过速和奇偶校验错误。
4.2 SPI特点及原理
串行外设接口SPI允许ATMEGA16L和外设或其他AVR器件进行高速的同步数据传输。ATMEGA16L SPI的特点如下:
(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-1 SPI引脚重载
引脚
方向,SPI主机
方向,SPI从机
MOSI
用户定义
输入
MISO
输入
用户定义
SCK
用户定义
输入
SS
用户定义
输入
5 射频收发电路
5.1 芯片结构
nRF905片内集成了电源管理、晶体振荡器、低噪声放大器、频率合成器功率、放大器等模块,曼彻斯特编码/解码由片内硬件完成,无需用户对数据进行曼彻斯特编码,因此使用非常方便。nRF905的详细结构如图5-1所示。
图5-1 nRF905的详细结构
5.2 工作模式
下面具体详细分析nRF905的发送流程和接收流程。
1.发送流程
典型的nRF905发送流程分以下几步:
(1)当微控制器有数据要发送时,通过SPI接口,按时序把接收机的地址和要发送的数据传送给nRF905,SPI接口的速率在通信协议和器件配置时确定;
(2)微控制器置高TRX_CE和TX_EN,激发nRF905和Shock Burst TM发送模式;
(3)nRF905的Shock Burst TM发送;
Ø 射频寄存器自动开启;
Ø 数据打包(加字头和CRC校验码);
Ø 发送数据包;
Ø 当数据发送完成,数据准备好引脚被置高。
(4)AUTO_RETRAN被置高,nRF905不断重发,直到TRX_CE被置低;
(5)当TRX_CE被置低,nRF905发送过程完成,自动进入空闲模式。
Shock Burst TM工作模式保证,一旦发送数据的过程开始,无论TRX_EN和TX_EN引脚是高或低,发送过程都会被处理完。只有在前一个数据包被发送完毕,nRF905才能接受下一个发送数据包。
2.接收流程
(1)当TRX_CE为高、TX_EN为低时,nRF905进入Shock Burst TM接收模式;
(2)650us后,nRF905不断监测,等待接收数据;
(3)当nRF905检测到同一频段的载波时,载波检测引脚被置高;
(4)当接收到一个相匹配的地址,地址匹配引脚被置高;
(5)当一个正确的数据包接收完毕,nRF905自动移去字头、地址和CRC校验位,然后把数据准备好引脚置高;
(6)微控制器把TRX_CE置低,nRF905进入空闲模式;
(7)微控制器通过SPI口,以一定的速率把数据移到微控制器内;
(8)当所有的数据接收完毕,nRF
展开阅读全文