摘 要:本文首先介绍了无线通信芯片nRF903的基本原理和主要特点、P89LPC932单片机的I/O接口功能及其低功耗的特点。在此基础上,设计了nRF903与P89LPC932的接口电路,该接口电路简单可靠,并能实现低功耗工作。本文还设计了无线通信过程中的发射和接收流程,可适用于小型无线通信系统。
关键词:nRF903;P89LPC932;低功耗;无线通信
前 言
无线通信因其组网方便快捷,在测控领域的应用越来越广,如小型数据网络、安全防火系统、遥控系统、生物信号采集、水文气象监控、机器人控制等。为实现这些应用,许多无线通信芯片生产厂家开发出性能越来越高的芯片,nRF903就是Nordic公司推出的单片无线收发芯片。在实际应用中,nRF903往往成为微型计算机系统的一个无线接口,因此,实现nRF903与微机(如单片机)的接口就是一个需要解决的问题。本文给出了一个单片机P89LPC932与nRF903的一个接口方案,包括硬件连接和简单通信协议,该方案具有低功耗的特点。
nRF903的简介
nRF903采用蓝牙核心技术设计,工作在433/868/915MHz的ISM频段,其内部组成如图1所示,包括发射电路、接收电路、控制接口电路和串行接口等部分。
从图1可知,nRF903所需要的外围元器件很少,方便用户调试和降低成本。在发射模式中,数字信号经DATA管脚输入,经锁相环(PLL)和压控振荡器(VCO)处理后进入到发射功率放大器(PN)射频输出,最后,射频信号由天线输出。电路所需的基准频率由外接晶体产生。本机震荡采用锁相环方式,压控振荡器由片内的震荡电路和外接的LC谐振回路组成,频率稳定性极好。在接收模式中,由天线接收射频信号,然后信号进入低噪声放大器(LNA);信号被放大后进入二级混频器,第一级中频10.7126MHz,第二级中频345.6KHz。从混频放大器输出的信号进入中频放大器(图中省略);中频放大器的输出信号经中频滤波器(IF-filter)滤波后送入GFSK解调器(GFSK-modulator),解调后的数字信号在DATA管脚输出。
从发射和接收的接口电路可以看出,nRF903发射和接收共用一个管脚(DATA),因此不能同时发射和接收数据,只能进行半双工通信,这是进行单片机接口电路设计时必须考虑的,同时nRF903在发射模式和接收模式之间转换需要几个毫秒的时间,这是在通信软件设计时必须考虑的。nRF903提供了7根I/O线与单片机连接,如图2的左侧所示,它们分别负责nRF903的通信参数配置、工作模式选择和数据通信等。管脚TXEN、STBY和PWR_DWN负责nRF903接收模式、发射模式、掉电模式和标准模式的切换;管脚CS、CFG_CLK和CFG_DATA组成的串行接口将14位的配置字移入相应寄存器,从而实现对频段、通道、输出功率和输出时钟频率的配置;C_SENSE和CLK_OUT可作为外部器件的信号,分别用于初始化控制器中的应答程序和故障诊断。
图1nRF903 内部框图(略)
P89LPC932的特点及与nRF903的连接
P89LPC932是增强型的80C51芯片,运行速度6倍于标准80C51器件,它采用了高性能的处理器结构,集成了许多系统级功能,适用于许多要求高集成度、低成本的场合。LPC932具有P0、P1、P2和P3四组I/O口,P3为2位,其余为8位,它们可以由用户定义输入输出类型。这些类型包括有三种类型的串行通信接口:UART、I2C、和SPI,这使得它非常适合与nRF903进行连接。LPC932的另外一个主要特点是低的工作电压和低功耗,其工作电压为2.4V~3.6V,支持空闲模式、掉电模式和完全掉电模式3种节电模式,特别适合低功耗场合应用。
图2 nRF903与P89LPC932(略)
根据P89LPC932的特点和nRF903的接口要求设计如图2所示的硬件连接。单片机与nRF903之间通常通过UART口进行数据传输。由于单片机的UART口分别从TXD和RXD两线进行发射和接收,而nRF903的发射和接收只有一个引脚DATA,采用图2的方法可以实现半双工的通信方法,10K电阻的作用是实现阻抗匹配和隔离。nRF903的外接晶体要求为11.0592MHz,LPC932的时钟频率可在20KHz~12MHz范围选择。由于nRF903的最大波特率为76.8Kbps,选择低的工作频率可以降低单片机的功耗,经过计算选择单片机的晶振频率1.8432MHz可以满足要求。
LPC932的SPI接口正好与nRF903的SPI接口进行连接,实现该接口进行频段、通道、功率等配置。LPC932的P1.2、P1.3和P1.4分别连接nRF903的TXEN、STBY和PWR_DWN实现对nRF903工作模式进行控制。LPC932的P1.6和P2.0分别连接nRF903的C_SENSE和CLK_OUT,单片机据此可以判断nRF903是否检测到载波和是否有时钟输出。如果有载波信号,则说明通信对方可能在发送数据,单片机需要进行接收处理。如果没有时钟输出,说明nRF903工作不正常。为了更有效地节省功耗,除了对nRF903的工作模式进行选择外,还设计了一个电源电子开关,即nRF903电源由LPC932的P0.0进行开关控制,当不要进行通信时,可以关闭nRF903的电源,这样可以极大地降低整个系统地功耗。
图3 UART的发送和接收程序流程图
无线通信的软件流程设计
LPC932通过nRF903进行无线通信时,除了待机和掉电模式,其他模式都可对nRF903进行配置和初始化。但是在待机和掉电模式时,寄存器的内容仍然保留有效,只有在电源撤离的情况下,配置字数据才会丢失。
在进行数据通信前,需要对nRF903的工作参数和工作模式进行初始化、对LPC932的UART进行工作方式设置、对通信数据帧的格式进行定义。为了便于通信字节的差错控制,选择UART的工作方式3。为了减少无线通信过程中的相互干扰,数据帧不能太长,同时为了提高通信效率,数据帧也不能太短。综合考虑,采用如表1所示的数据帧格式,它由包头(5字节)、地址字(6字节)、数据字(12字节)、校验字(1字节)四个部分组成。
表1 :通信数据帧格式(略)
数据帧中包头定义为CCCCCCCCF0h,该字段进行接收和发射数据帧同步。地址字(address word)是设备地址,该地址要求在本无线通信系统内地址不重复,并且也应该减少与其它同频率通信的系统该部分内容重复,采用以太网的地址字节数,采用6个字节。数据字(message
word)是该数据帧要传输的内容,固定为12字节。如果要传输更多的内容,可以采用多个数据帧的方式。校验字(checksum)为一个字节,本文的设计采用XOR方式,即:校验字由数据帧的地址和数据部分通过XOR生成。如果接收到的校验和与本地生成的校验字不匹配,说明数据帧有错误,要求重传。
由LPC932和nRF903组成的通信系统的接收和发送的程序流程图如图3所示,左边流程图是发送程序流程图,右边是接收程序流程图。通信方式为半双工通信,在发射和接收之间切换时需要等待nRF903的稳定时间。根据该流程图可以很好地写出程序。单片机采用先检测后发送地方式,即先检测无线频率是否被其它设备占用(通过C_SENSE引脚),如果被占用,则继续等待,当没有被占用时,才进行发射操作。当发射一个数据包时,将转到接收模式,在接收模式时,也通过C_SENSE引脚判断是否对方已经发射,如果已发射则进行接收操作,并判断接收数据是否正确,不正确则要求重传。
结 论
本文叙述了单片机P89LPC932和无线通信芯片nRF903的接口设计,单片机除了对nRF903进行节电工作方式配置外,还可以对其工作电源进行开关,以便只有在收发的时候才加上电源,在节电的同时也减少了对环境的电磁辐射,单片机还可以对nRF903的时钟输出信号进行检测,据此可以进行一定程度的故障诊断。在软件设计设计方法,对单片机的UART进行了配置,采用了一个定长的简单数据包,这样提高了通信的可靠性和节省了功耗。这些方法都具有普遍意义,可以广泛用在各种类似系统当中。
|