CC2430和ZigBee2006协议栈的通信模块设计
扫描二维码
随时随地手机看文章
CC2430和ZigBee2006协议栈的通信模块设计
摘要:介绍了CC2430芯片的基本特性和ZigBee2006协议栈的基本内容。论述了以CC22430芯片为核心的无线通信模块的硬件设计,和以ZigB-ee2006协议栈为基础的软件设计。在实现短距离多网络节点间的无线通信的同时,使用串口实现无线通信模块与终端采集部分和本地控制部分的数据传输。
引言
随着微电子技术、汁算技术和无线通信等技术的进步,无线传感器网络被列为21世纪最有影响的21项技术和改变世界的10大技术之一。它能够实时监测、感知和采集各种环境或监测对象的信息,并对其进行处理。传感器节点是组成无线传感器网络的基本单位,是构成无线传感器网络的基础平台。
ZigBee是一种新兴的短距离、低速率无线网络技术,是一组基于IEEE 802.15.4无线标准研制开发的,有关组网、安全和应用软件的技术标准。它具有功耗低、成本低、安全、工作频段灵活等优点,通过和传感器组成无线传感器ZigBee网络,使得数据的自动采集、分析和处理变得更加容易,可以作为决策辅助系统的重要组成部分。
1 CC2430及ZigBee协议栈体系结构
CC2430是真正的系统芯片(SoC)CMOS解决方案,能够提高性能并满足以ZigBee为基础的2.4 GHz ISM波段应用对低成本、低功耗的要求。它结合了高性能的2.4GHz DSSS(直接序列扩频)射频收发器核心和1颗工业级小巧高效的8051控制器。CC22430在单个片上集成了ZigBee射频(RF)前端、内存和微控制器,使用1个8位MCU(8051),具有32/64/128 KB的编程闪存和8 KB的RAM,还包含模/数转换器(ADC)、定时器(TImer)、AES128安全协处理器、看门狗定时器(watchdog TImer)、32 kHz晶振的休眠模式定时器、上电复位电路、掉电检测电路以及21个可编程I/0引脚。CC2430的8051内核的目标代码兼容标准8051微处理器,可以使用标准8051的汇编器和编译器进行软件开发。其21个可编程I/O引脚均可以通过软件设定1组SFR寄存器的位和字节,使这些引脚作为通常的I/O口或者作为接ADC、定时器或USART部件的外围设备I/O口使用。
ZigBee协议栈由一组子层构成,每层为其上层提供一组特定的服务:数据实体提供数据传输服务,管理实体提供全部其他服务。每个服务实体通过一个服务接入点(SAP)为上层提供服务接口,并且每个SAP提供一系列的基本服务指令来完成相应的功能。ZigBee协议栈的体系结构模型如图1所示,IEEE 802.15.4标准定义了物理层(PHY)和介质接入控制子层(MAC);ZigBee联盟定义了网络层和应用层(APL)框架的设计。
ZigBee协议栈于2004年发布第1版,称为ZigBee2004。ZigBee2004是全源代码的协议栈,这个协议栈已经有了网络的概念,并能完成一些简单的通信。但它只能组建串状网络和星状网络,如果需要组建网状网络必须外加程序,另外在安全和路由方面也做得不是很理想。ZigB-ee2006协议栈很好地解决了网络组网问题,整个协议栈的安全性更好,层次性更强,功耗方面也有了进步,并实现了网状网络。在ZigBee-2006协议栈中已经将CC2430的底层驱动全部固化在协议栈中,可以直接调用。
综上所述,选用CC2430芯片作为无线通信模块硬件核心芯片,软件部分选用ZigBee2006协议栈来实现无线模块之间的通信功能。
2 硬件设计
无线通信部分作为监测系统中重要的数据传输通道,不仅需要实现无线通信模块之间的数据接收和发送功能,同时还需要提供数据接口与终端数据采集部分及本地主控制系统以进行连接。系统结构如图2所示。
图3所示为无线模块硬件原理图。电路选用CC2430芯片作为无线传感器网络节点的核心CPU。选用1个32.768 kHz的石英谐振器(X2)和2个电容(C441和C431)组成32.768 kHz的晶振电路;选用1个32 MHz的石英谐振器(X1)和2个电容(C191和C211)组成32 MHz的晶振电路。电压调节器可为所有要求1.8 V电压的内部电源供电,电容C241和C421是用来作为电源滤波的去耦合电容,以提高芯片工作的稳定性。电路中J1是10引脚JTAG仿真器接口,J2是3.3 V电源接口,J3是CC2430芯片扩展输出口,在扩展输出口上主要预留了SPI口和整个PO I/O口。设计了2个发光二极管指示灯,作为电路调试指示灯。使用1个非平衡天线,为了使天线性能更好,在天线与CC2430之间连接了1个非平衡变压器。非平衡变压器由电容C341和电感L321、L331、L341以及1个PCB微波传输线组成,整个结构满足RF输入/输出匹配电阻(50 Ω)的要求。
3 协议栈软件设计
软件开发的软件环境:IAR 7.30B、数据分析仪、串口调试工具以及各硬件驱动软件等;硬件环境:计算机、CC2430开发板等。
系统软件基于TI/Chipcon公司免费提供的ZigBee2006协议栈,以ZStack-1.4.3-1.2.1版本中GenericApp例程为基础。GenericApp例子基本功能很齐全,而且在ZStack上实现了无线网络数据传输。例程没有多余的功能,所以是典型的ZStack模板,即为用户提供了一个通用模板,可以通过它建立自己的应用程序。因此,建立一个项目的方法主要是改动应用层(APP)程序。
无线通信模块通过串口分别实现与数据采集部分及本地主控制部分的连接。因此,应用层软件主要功能是实现串口数据的收发和无线网络数据传输。在ZStack程序中嵌入了实时操作系统,用于统一调度网络组建、节点加入、数据收发等功能运行。其工作机制主要是多任务事件运行机制,对于同一个任务可能有多种事件发生,需要执行不同的事件处理。为了方便,对于每个任务的事件处理函数都统一在一个事件处理函数中实现,然后根据任务ID号(task id)和该任务的具体事件(event)调用某个任务的事件处理函数。进入该任务的事件处理函数之后,再根据event来判别是该任务的哪一种事件发生,进而执行相应的事件处理。任务处理部分具体流程如图4所示。
下面详细介绍串口部分和无线接收、发送部分程序。
3.1 串口部分程序
(1)串口初始化
主要是设置halUARTCfg_t结构体成员值:
通过对halUARTCfg_t赋值,可以设置波特率、字符数、数据位、停止位、奇偶校验位和硬件流控等。其中call-BackFunc是自定义设置串口回调函数,即一旦串口有数据传送,OSAL会就自动转到自定义的回调函数,执行自定义的操作。
(2)串口回调函数
首先调用Hal_UART_RxBufLen(uint8 port)函数确定串口数据的长度,然后再调用HalUARTRead(uint8 port,uint8*buf,uintl6 len)读取串口数据到自定义的串口数据缓冲区,并调用osal_set_event(byte task_id,UINTl6 event_flag)函数发送事件信号,进行数据的无线发送。
3.2 无线接收、发送部分程序
(1)无线接收
当有数据通过无线发送到应用层时,应用层会发送1个AE_INCOMING_MSG_CMD消息事件。
case AF_INCOMING_MSG_CMD:
GenericApp_MessageMSGCB(MSGpkt);
break:
这里表示收到AF_INCOMING_MSG_CMD消息事件,然后调用收到消息事件的信息处理函数GenericApp_MessageMSGCB(MSGpkt),开始接收数据并通过涮用串口HalUARTWrite(uint8 port,uint8*buf,uintl6 len)写函数发送接收到的数据。
(2)无线发送
在串口回调函数中当串口有数据输入时,应用层会发送1个GENERICAPP_SEND_MSG_EVT消息事件。
调用GenericApp_SendThmMessage()数据发送函数,具体到TI/Chipcon公司所提供的ZigBee2006协议栈中即为AF_DataRequest()函数,具体形式如下:
结语
本文以CC2430为主体设计了无线通信模块的硬件,并选用TI/Chipcon公司免费提供的ZigBee2006协议栈作为软件开发平台。通过实验验证,设计的硬件节点基本达到了项目要求。经调试,串口能够正确地接收和发送数据,能够实现多个无线节点(1个协调器,3个终端设备)在50 m左右的通信和数据传输,并通过计算机串口调试软件测试正确。