zigbee协议栈
网络协议
网络协议的层次结构如下:{此为ISO(国际标准化组织)制
定的OSI网络协议七层模型}
物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 物理连接,电缆,网卡,串口并口 以帧为单位传输数据,主要任务是建立数据封装及链接 网络网络之间的通信问题,提供路由,即最佳路径 解决传输数据质量问题,提供可靠的端到端的数据传输 会话连接到传输连接的映射,数据传送,会画连接的恢复和释放,会 画管理,令牌管理和活动管理 数据语法转换,语法表示,数据压缩和数据加密 直接面对用户的具体应用,包含用户应用程序执行通信任务所需要的
IEEE802.15.4
以帧为单位 传输数据
IEEE 802.15.4标准只定义了PHY层和数据链路层的MAC子层 (数据链路层进一步划分为MAC和LLC两个子层,MAC子层使用物理 层提供的服务实现设备之间的数据帧传输)
PHY层由射频收发器以及底层的控制模块构成 MAC子层为高层访问物理信道提供点到点通信的服务接口
zigbee
Z-stack流程图
zigbee
主函数
协议栈已经放在了库文件当中,是通用文件 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
一、任务初始化主要步骤如下: (1)初始化应用服务变量。 const pTaskEventHandlerFn tasksArr[ ]数组定义系统提供的应用服务和用户 服务变量 (2)分配任务ID和分配堆栈内存 void osalInitTasks( void )主要功能是通过调用osal_mem_alloc( )函数给各个 任务分配内存空间,和给各个已定义任务指定唯一的标识号
(3)在AF层注册应用对象 通过填入endPointDesc_t数据格式的EndPoint变量,调用 afRegister( )在AF 层注册EndPoint应用对象。 通过在AF层注册应用对象的信息,告知系统 afAddrType_t地址类型数据包的路由端点
zigbee
(4)注册相应的OSAL或者HAL系统服务
MAC子层
MAC层帧结构的设计目标是用最低复杂度实现数据可靠传输 每个 MAC子层的帧都由帧头、负载和帧尾三部分组成 # 帧头由帧控制信息、帧序列号和地址信息组成 # 负载(数据)具有可变长度,具体内容由帧类型决定 # 帧尾是帧头和负载数据的16位CRC校验序列
IEEE802.15.4
IEEE 802.15.4网络共定义了四种类型的帧:信标帧,数据 帧,确认帧和MAC命令帧
协议和功能
网络协议
: TCP/IP结构对应OSI结构
TCP/IP OSI
应用层
应用层 表示层 会话层
传输层 网络层 数据链路层
主机到主机层(TCP) 网络层(IP) 网络接口层
物理层
网络拓扑结构
定义
在计算机网络中指设备和线路的安排或布局在地理 网络中指网络要素之间的连接(即计算机是以何种 方式连接在一起的)
浅谈zigbee技术
蒋佳君contents Nhomakorabea• 网络协议及网络拓扑结构
• IEEE802.15.4及Zigbee
• zigbee芯片及模块
网络协议
定义
网络协议是指为了实现计算机间的通信而设计的一 组规则, 它规定了通信时信息必须采用的格式和这 些格式的意义
一个网络协议至少包括三要素: 语法 用来规定信息格式;数据及控制信息的格式、编码及信号电平等
Zigbee协议栈
TI公司开发的Z-Stack是ZigBee协议栈,并且经过了ZigBee联盟的认 可而为全球众多开发商所广泛采用(下面我们重点讨论Z-Stack ,我 们没必要弄懂zigbee协议栈所有源代码,所谓开发或应用主要是对主 函数及操作系统的修改应用,许多库函数据项目要求而做修改即可)
TI公司的Z-Stack协议栈装载在一个基于IAR开发环境的工程里
IEEE802.15.4
IEEE802.15.4网络的建立过程
首先,每个设备的协议栈必须要对其PHY和MAC层初始化
每个网络必须有一个也只能有一个PAN Co-ordinator PAN ID作为网络标识,可以被人为的预定义 除64位IEEE MAC 地址外,还须分配一个16位的短地址 例如Zigbee技术选择2.4GHz
中心系统一旦损坏,整个系统便趋于瘫痪
网络拓扑结构
环型拓扑结构(这种结构消除了端用户通信时对中心
系统的依赖性):
abcde五个节点组成的环型结构,数据由a到d时 路径为a->b->c->d->e->a d接收到数据后,在数据上做一个标记,传给e,再传给a, a则知道d接收到了数据
可靠性低,一个节点故障,将会造成全网瘫痪
zigbee
OSAL程序流程图
OSAL是协议栈的核心
Z-stack的任何一个子系统都作为 OSAL的一个任务,因此在开发应用层 的时候,必须通过创建OSAL任务来运 行应用程序 通过osalInitTasks( )函数创建OSAL任 务,其中TaskID为每个任务的唯一标 识号 任何OSAL任务必须分为两步:
1)信标帧 信标帧的负载数据单元由四部分组成:超帧描述字段、GTS分配字段、 待转发数据目标地址字段和信标帧负载数据 2)数据帧 数据帧用来传输上层发到MAC子层的数据,它的负载字段包含了上层 需要传送的数据 3)确认帧 如果设备收到请求位被置1,设备需要回应一个确认帧,确认帧的序列 号应该与被确认帧的序列号相同,并且负载长度应该为零 4)命令帧 MAC命令帧用于组建PAN网络,传输同步数据等,主要完成三方面的 功能:把设备关联到PAN网络,与协调器交换数据,分配GTS
设备以Co-ordinator的模式启动,然后就开放请求应答
有可以利用的Co-ordinator,设备就可以申请加入网络
设备被Co-ordinator接受,将获得短地址作为标识,便可 传输数据
zigbee
定义
Zigbee是IEEE 802.15.4协议的代名词,根据这个 协议规定的一种短距离、低功耗的无线通信技术
硬件初始化需要根据HAL文件夹中的hal_board_cfg.h(头文件)文件 配置寄存器8051的寄存器(比如说哪些I/O口与什么硬件相连)
zigbee
OSAL系统
顺利完成上述初始化后,开中断执行osal_start_system( )函数开始运行 OSAL系统 该任务调度函数按照优先级检测各个任务是否就绪,如果存在就绪的任务则 调用tasksArr[ ]中相对应的任务处理函数去处理该事件,直到执行完所有就绪 的任务 如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现低功耗 osal_start_system( )一旦执行,则不再返回Main( )函数
只要一段线路发生故障,整个网络会瘫痪(现在不怎么用了)
网络拓扑结构
星型拓扑结构(现在最流行的):网络有中央节点,其他
节点(工作站、服务器)都与中央节点直接相连
中央节点(中央节点相当复杂,负担比各节点重)执行集中式通信控制 策略,在星型网中任何两个节点要进行通信都必须经过中央节点控制 中央节点的主要功能有三项: 1检查是否有空闲的通路,从而建立双方的物理连接 2能维持通信通道 3能拆除通信通道
语义 用来说明通信双方应当怎么做;用于协调与差错处理的控制信息 定时 (时序)定义了何时进行通信,先讲什么,后讲什么,讲话的速
度等。比如是采用同步传输还是异步传输
网络协议
常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议
TCP/IP协议:IP协议、TCP协议名称的组合 通过局域网访问互联网,就要详细设置IP地址,网关,子网 掩码,DNS服务器等参数 NetBEUI:是一种短小精悍、通信效率高的广播型协议,不 需要进行设置,适合于在“网络邻居”传送数据 IPX/SPX协议:联机的游戏都支持IPX/SPX协议,这些游戏 通过IPX/SPX协议更省事,因为根本不需要任何设置(比 TCP/IP省事)
IEEE802.15.4
前面提到IEEE802.15.4支持星型和点对点两种网络拓扑结构
设备发送数据给协调器、协调器发送数据给设备、对等设备之间的数据 传输(星型拓扑网络中只存在前两种数据传输方式,因为数据只在协调 器和设备之间交换;而在点对点拓扑网络中,三种数据传输方式都存在)
点对点网络的形成
任意两设备只要能彼此收到对方的无线信号,就可以进行直接通信,不 需要其他设备的转发 但点对点网络中仍然需要一个网络协调器,不过该协调器的功能不再是 为其他设备转发数据,而是完成设备注册和访问控制等基本的网络管理 功能。由点对点传输方式构成了网状网拓扑结构
网络拓扑结构分为3种:总线型,星型,环型
总线型
星型
环型
网络拓扑结构
总线型拓扑结构:所有计算机连接在一根总线上
每个节点网络接口板硬件均具有收、发功能 接收器接收总线上串行信息并转换成并行信息送到PC工作站 发送器是将并行信息转换成串行信息后广播发送到总线上 总线上发送的目的地址与某节点的接口地址相符时,该节点的接收器便接 收信息
IEEE802.15.4