IEEE 802.15.4协议是新兴的无线通信协议,其商业名称是Zigbee。Zigbee技术具有精简的协议栈、低应用成本、极低功耗、CRC传输校验及安全算法等多种优良的特性,以及点对点、星型、簇树(cluster tree)等多种网络拓朴结构。这些特性决定了它在低成本、低速率的场合(如工业传感器网络、家庭网络、智能楼宇、汽车电子等领域)将有广泛的应用。目前,市场上主流的Zigbee提供商有Chipcon、Freescale、Helicomm等公司。本文介绍了一种在Freescale GT60微控制器及其Zigbee射频芯片MC13192上开发出的无线数传模块,用于汽车电子传感、控制系统。
1系统整体构成
系统构成如图1所示。GT60是基于Freescale S08内核的微控制器。其功耗低,具有40 MHz工作频率、4 KB RAM和60 KB Flash空间,可满足Zigbee应用在功耗、协议栈移植方面的需要。MC13192内部集成了可满足IEEE 802.15.4协议的MAC(媒体接入层)、PHY(物理层)硬件逻辑的Zigbee射频芯片。整个协议栈驻留于主控芯片GT60上。每个模块接收上位机传送来的串行数据,然后将其封装为Zigbee协议包的形式发送出去;接收端收到数据后,将其转换为串行数据发送给上位机。波特率为9 600~19 200 b/s。
图1系统构成
2硬件设计
2.1数字部分设计
GT60与MC13192之间的通信采用SPI方式,主要的通信线为MISO、MOSI、SPICLK等,如图2所示。PTE2/SS用于实现对MC13192的片选;IRQ用于接收MC13192的中断;PTC3/SCL用于实现对MC13192收发模式的切换;RESET用于重启MC13192;GPIO1为MC13192发出的空闲状态线,表示MC13192正处于空闲状态;GPIO2是CRC校验状态信号,若其为高电平则代表接收数据校验通过,反之丢弃数据。
图2GT60与MC13192的接口
2.2射频部分的设计
射频电路的设计是整个设计中最困难也是最容易出现问题的部分。由于射频信号的频率达到2.4 GHz,微波波长与传输线的长度已经达到同等数量级(cm级)。传输线末端的微波反射和驻波等问题是不可忽视的,否则会产生恶劣的影响。解决这些问题的关键在于良好的阻抗控制与匹配,即传输线特征阻抗与天线阻抗的良好匹配与控制。
天线采用平面印刷电路偶极天线,其具有很低的制作成本,性能也足够满足要求。天线的末端有一个45°角弯折,以减小PCB尺寸并改善其方向性,如图3所示。天线的长度为半波长(6 cm),理论和实验证明在此长度下可以达到最好的微波谐振特性。
图3印制电路板天线尺寸参数
微波馈线采用微带传输线(micro strip line),即具有敷铜底板的介质板上的带状线,具有较好的微波传输特性和较低的传输损耗。其上传输的是准TEM波,并且被较好地约束在带线与铜底板之间。微带线的特征阻抗被设计为60 Ω,以便与天线的特征阻抗较好地匹配起来。其特征阻抗与板材厚度、介电常数、线宽、线间距直接相关。对其特征阻抗的计算及控制是射频设计部分的关键所在。
3软件设计
3.1协议层设计
Zigbee的数据传输方式有帧模式与流模式两种。帧模式是通过片上RAM来缓存处理的,而流模式则是通过数据寄存器来进行单个字节处理的。本设计采用帧传输模式。一个完整的满足IEEE 802.15.4规范的协议帧至少要包含9个字节的数据。它是由4个字节的帧前导字节(Preamble)、1个字节的帧开始标志SFD(Start of Frame Delimiter)、1个字节的帧长度标志FLI(Frame Length Indicator)、1~125个字节的数据净荷(Payload Data)和2个字节的帧校验(FCS)组成的,具体格式如下:
(1)接收数据流程
数字基带信号是用直接扩频序列(DSSS)的偏移四相相移键控(OQPSK)方式调制的。在接收端对其进行解调,检测到帧前导字节、帧开始标志、帧长度、数据净荷、帧校验等数据;帧前导字节、帧开始标志、帧长度字节等被解析,以便检测出RAM中的净荷和帧校验数据。
MC13192内部硬件逻辑计算出接收到数据的CRC校验值,并与附加在接收数据尾部的CRC值比较。链接质量检测在前导信号到来64 μs后开始进行,检测值存储在RAM中。如果MC13192接收到一个完整的数据帧,则它将向主控MCU发出一个中断请求,通知MCU取走数据。
(2)发送数据流程
在包传输模式下,数据是被看作一个个完整的数据包处理的。数据首先被装载到主控MCU的RAM中,然后主控MCU通知MC13192取走数据。当数据发送完毕后,MC13192会发出一个中断来通知MCU。
低功耗是Zigbee技术的核心。经实验证明,采用Zigbee技术的无线传感器模块具有超低功耗和超长的工作时间。低功耗性自始至终体现在Zigbee协议栈中。MC13192的工作模式可分为停止(Off)、休眠(Hibernate)、打盹(Doze)、空闲(Idle)等。其工作电流依次为0.2 μA、1 μA、35 μA、200 μA。它们之间的切换遵循一套完整的时序,如图4所示。
图4工作模式切换
本设计中协议栈的设计参考了满足IEEE 802.15.4规范的协议包SMAC。它采用简化的IEEE 802.15.4协议栈,包括PHY层和MAC层。SMAC具有功能丰富和移植方便的特点,加快了开发的过程。为了使协议栈具有良好的可移植性,整个协议栈分为4层: 驱动层(Driver)、物理层(PHY)、媒体控制层(MAC)、应用层(APP)。上层依次调用下层的函数,尽可能地降低整个协议栈与具体硬件的耦合性。驱动层完成硬件的端口映射、寄存器定义、SPI、SCI、中断的处理等。
物理层主要涉及与驱动层相关的数据传输、工作状态切换、信道能量检测、链接质量检测、信道设置、增益调节、输出功率调节等。其功能函数如下:
void PDDataIndication(void);
UINT8 PLMEDozeRequest(UINT32 u32Timeout);
UINT8 PLMESetChannelRequest(UINT8 u8Channel);
UINT8 PLMEEnergyDetect(void);
UINT8 PLMELinkQuality(void);
UINT8 PLMEMC13192FEGainAdjust(UINT8 i8GainValue);
……
媒体控制层功能与物理层类似。它通过对物理层功能的调用实现了与硬件的不相关性,方便了协议的移植及应用层的编制。其功能函数如下:
UINT8 MCPSDataRequest(tTxPacket *psTxPacket);
UINT8 MLMEDozeRequest(UINT32 u32Timeout);
UINT8 MLMESetChannelRequest(UINT8 u8Channel);
UINT8 MLMELinkQuality (void);
UINT8 MLMEMC13192FEGainAdjust(UINT8 u8GainValue);
……
本设计中将Zigbee协议栈经简化后移植到GT60 MCU中,通过Zigbee协议实现两点之间串行方式的无线数据传输。考虑到程序的实时性与编制效率,在驱动层使用了中断机制处理收发器接口数据,在应用层使用消息机制进行数据的传输处理与工作模式的切换等。
3.2应用层设计
程序根据不同的信号量进入对应的工作状态,在此程序中主要有4种工作状态:Idle(空闲)、Doze(打盹)、RF Transmit(射频发送)和RF Receive(射频接收),数据的传输通过SPI和SCI来实现。程序在复位、初始化之后进入默认的Idle状态,功耗为200 μA。若在此状态等待超过10 ms,则定时计数器会发出一个Time out(超时)中断请求,然后通过SPI向MC13192写控制寄存器doze_en位使其进入Doze (打盹)状态,此时MC13192晶振消失,工作在μA级的功耗状态。此时若有外部中断事件产生,则MCU通过把ATTNB引脚置低将MC13192状态切换到Idle状态,然后根据中断标志变量的状态决定进入相应的收发工作模式。若SCI Rx_Irq状态置位说明接收到了上位机SCI数据请求,程序即在SCI的8位移位周期结束之间取走SCI数据寄存器中的数据,并发出MCPSDataRequest()媒体控制层数据请求,依次调用物理层数据请求函数PDDataRequest(),通过SPI将发送数据写入GT60的片上RAM中,经调制并发送出去。若发送成功,则自动使MC13192进入Idle状态,并向GT60发出一个tx_sent_irq中断请求,表示数据已经发送成功且MC13192已进入Idle状态。接收数据流程基本类似,只是数据流方向正好相反,即由射频信号转换为串行数据再发送至上位机。程序流程如图5所示。
图5程序流程
结语
实践证明,Zigbee通信模块达到了降低成本和功耗的目的。由于加入了数据校验,数据传输可靠性高,误码率低于0.001%,传输速率达到19 200 b/s,充分满足了汽车电子应用系统状态传感和控制的要求。