PHY层由射频收发器以及底层的控制模块构成
MAC子层为高层访问物理信道提供点到点通信的服务接口
MAC子层
MAC层帧结构的设计目标是用最低复杂度实现数据可靠传输
每个 MAC子层的帧都由帧头、负载和帧尾三部分组成
# 帧头由帧控制信息、帧序列号和地址信息组成
# 负载(数据)具有可变长度,具体内容由帧类型决定
# 帧尾是帧头和负载数据的16位CRC校验序列
IEEE 802.15.4网络共定义了四种类型的帧:信标帧,数据帧,确认帧和MAC命令帧
(1)信标帧
信标帧的负载数据单元由四部分组成:超帧描述字段、GTS分配字段、待转发数据目标地址字段和信标帧负载数据
(2)数据帧
数据帧用来传输上层发到MAC子层的数据,它的负载字段包含了上层需要传送的数据
(3)确认帧
如果设备收到请求位被置1,设备需要回应一个确认帧,确认帧的序列号应该与被确认帧的序列号相同,并且负载长度应该为零
(4)命令帧
MAC命令帧用于组建PAN网络,传输同步数据等,主要完成三方面的功能:把设备关联到PAN网络,与协调器交换数据,分配GTS
IEEE 802.15.4的协议栈架构
图1.2.7 Zigbee协议栈
1.2.3.4 Z-Stack
TI公司开发的Z-Stack是ZigBee协议栈,并且经过了ZigBee联盟的认可而为全球众多开发商所广泛采用(下面我们重点讨论Z-Stack ,我们没必要弄懂zigbee协议栈所有源代码,所谓开发或应用主要是对主函数及操作系统的修改应用,许多库函数据项目要求而做修改即可)。
TI公司的Z-Stack协议栈装载在一个基于IAR开发环境的工程里。
Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。
如果同时有几个事件发生,判断优先级,逐次处理事件。
这种软件构架可以极大地降级系统的功耗。
Z-Stack实际上是帮助程序员方便开发ZigBee的一套系统。
整个Z-Stack采用分层的软件结构。
硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器Timer,通用I/O口GPIO,通用异步收发传输器UART,模数转换ADC的应用程序接口API,提供各种服务的扩展集。
操作系统抽象层OSAL实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。用户可以调用OSAL提供的相关API进行多任务编程,将自己的应用程序作为一个独立的任务来实现。
术语API:实现应用程序与操作系统之间通信,告诉操作系统要执行的任务的接口。API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码(个人理解为类似于子函数)。
整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段。
图1.2.8 Z-stack流程图
主函数:协议栈已经放在了库文件当中,是通用文件。
main函数存在于Zmain函数当中,先是从main函数开始运行的,main函数实现的功能是,初始化硬件、初始化网络(加入/创建网络)、初始化任务列表、进入任务处理循环。
int main( )主函数实现硬件的初始化其中包括:
关总中断osal_int_disable( INTS_ALL )、初始化板上硬件设置HAL_BOARD_INIT( )、初始化I/O口InitBoard( OB_COLD )、初始化HAL层驱动HalDriverInit( )、初始化非易失性存储器sal_nv_init( NULL )、初始化MAC层ZMacInit( )、分配64位地址zmain_ext_addr( )、初始化操作系统osal_init_system( )等。 zigbee无线火灾报警系统设计+源程序+流程图+电路图(5):http://www.youerw.com/tongxin/lunwen_704.html