首页 理论教育 ZigBee系统软件的设计与开发

ZigBee系统软件的设计与开发

时间:2023-06-26 理论教育 版权反馈
【摘要】:1)ZigBee系统软件设计事项ZigBee协议栈ZigBee系统软件的开发是在厂商提供的ZigBee协议栈的MAC子层和物理层基础上进行的,涉及传感器的配合和网络架构等问题。有偿的协议栈能够完全满足ZigBee规范的要求,提供丰富的应用层软件实例、强大的协议栈配置工具和应用开发工具。控制器负责IEEE 802.15.4 MAC子层和ZigBee部分的工作。ZigBee设备生产厂家之间通过共用Profile,可以实现良好的互操作性。

ZigBee系统软件的设计与开发

1)ZigBee系统软件设计事项

(1)ZigBee协议栈

ZigBee系统软件的开发是在厂商提供的ZigBee协议栈的MAC子层和物理层基础上进行的,涉及传感器的配合和网络架构等问题。

协议栈分有偿和无偿两种。无偿的协议栈能够满足简单应用开发的需求,但不能提供ZigBee规范定义的所有服务,有些内容需要用户自己开发。例如,Microchip公司为产品PICDEMO开发套件提供了免费的MP ZigBee协议栈,Freescale公司为产品13192DSK套件提供了S-MAC协议栈。

有偿的协议栈能够完全满足ZigBee规范的要求,提供丰富的应用层软件实例、强大的协议栈配置工具和应用开发工具。一般的开发板都提供有偿协议栈的有限使用权,如购买Freescale公司的13192DSK和TI公司的Chipcon开发套件,可以获得F8的Z-Stack和ZTrace等工具的90天使用权。单独购买有偿的协议栈及开发工具比较昂贵,在产品有希望大规模上市的前提下才可以考虑购买。

(2)ZigBee芯片

现在芯片厂商提供的主流ZigBee控制芯片在性能上大同小异,比较流行的有Freesca1e公司的MC13192和Chipcon公司的CC2420。它们在性能上基本相同,两家公司提供的免费协议栈MC13192 802.15和MpZBee v1.0-3.3都可以实现树型网、星型网和网状网。

但其主要问题在于ZigBee芯片和微处理器(MCU)之间的配合。每个协议栈都是在某个型号或者序列的微处理器和ZigBee芯片配合的基础上编写的。如果要把协议栈移植到其他微处理器上运行,需要对协议栈的物理层和MAC层进行修改,在开发初期这会非常复杂。因此芯片型号的选择应保持与厂商的开发板一致。

对于集成了射频部分、协议控制和微处理器的ZigBee单芯片和ZigBee协议控制与微处理器相分离的两种结构,从软件开发角度来看,它们并没有什么区别。以CC2430为例,它是CC2420和增强型51单片机的结合。所以对开发者来说,选择CC2430还是选择CC2420加增强型51单片机,在软件设计上是没有什么区别的。

(3)硬件开发

ZigBee应用大多采用4层板结构,需要满足良好的电磁兼容性能要求。天线分为PCB天线和外置增益天线,多数开发板都使用PCB天线。在实际应用中,外置增益天线可以大幅度提高网络性能,包括传输距离、可靠性等,但同时也会增大体积,需要均衡考虑。制板和天线的设计都可以参考主要芯片厂商提供的参考设计。

RF芯片和控制器通过SPI和一些控制信号线相连接。控制器为SPI主设备,RF射频芯片为从设备。控制器负责IEEE 802.15.4 MAC子层和ZigBee部分的工作。协议栈集成完善的RF芯片的驱动功能,用户无须处理这些问题。系统通过非SPI控制信号驱动所需要的其他硬件,如各种传感器和伺服器等。

微控制器可以选用任何一款低功耗单片机,但程序和内存空间应满足协议栈的要求。射频芯片可以选用任何一款满足IEEE 802.15.4要求的芯片,通常可以使用Chipcon公司的CC2420射频芯片。硬件在开发初期应以厂家提供的开发板为基础进行制作,在实现基本功能后,再进行设备精简或者扩充。CC2530是一款集ZigBee协议控制、增强型51单片机和射频模块于一体的控制器,可满足大多数应用需求。

通常需要为微控制器和RF芯片提供3.3V电源。根据不同的情况,可以使用电池或者市电供电。一般来说,ZigBee协调器和路由器需要市电供电,端点设备可以使用电池供电。要注意RF射频芯片工作电压范围的设置。(www.xing528.com)

2)ZigBee系统软件设计过程

ZigBee网络系统软件设计的主要过程如下:

(1)建立Profile

Profile是关于逻辑器件和它们的接口的定义,约定了结点间进行通信时的应用层消息。ZigBee设备生产厂家之间通过共用Profile,可以实现良好的互操作性。研发一种新的应用可以使用已经发布的Profile,也可以自己建立Profile。自己建立的Profile需要经过ZigBee联盟的认证和发布,相应的应用才有可能是ZigBee应用。

(2)初始化

包括ZigBee协议栈的初始化和外围设备的初始化。

在初始化协议栈之前,需要先进行硬件的初始化。例如,首先要对CC2420和单片机之间的SPI接口进行初始化,然后对连接硬件的端口进行初始化,像连接LED、按键、AD/DA等的接口。

在硬件初始化完成后,就要对ZigBee协议栈进行初始化了。这一步骤决定了设备类型、网络拓扑结构、通信信道等重要的ZigBee特性。一些公司的协议栈提供专用的工具对这些参数进行设置,如Microchip公司的ZENA,Chipcon公司的SmartRF等。如果没有这些工具,就需要参考ZigBee规范,在程序中进行人工设置。

以上的初始化完成后,开启中断,然后程序进入循环检测,等待某个事件触发协议栈状态改变并作相应处理。每次处理完事件,协议栈又重新进入循环检测状态。

(3)编写应用层代码

ZigBee设备都需要设置一个变量来保存协议栈当前执行的原语。不同的应用代码都要通过ZigBee和IEEE 802.15.4定义的原语与协议栈进行交互。也就是说,应用层代码通过改变当前执行的原语,使协议栈进行某些工作。而协议栈也可以通过改变当前执行的原语,告诉应用层需要做哪些工作。

协议栈通过对ZigBee任务处理函数的调用而被触发改变状态,并对某条原语进行操作,这时程序将连续执行整条原语的操作,或者响应一个应用层原语。协议栈一次只能处理一条原语,所以所有原语用一个集合表示。每次执行完一条原语后,必须设置下一条原语作为当前执行的原语,或者将当前执行的原语设置为空,以确保协议栈保持工作。

总之,应用层代码需要做的工作就是改变原语,或者对原语的改变做出相应动作。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈