zigbee详解文章

本文详细介绍了ZigBee网络技术的核心概念,包括IEEE 802.15.4 CSMA/CA机制、信标帧与非信标帧的区别、FDMA/TDMA/CDMA对比等内容。此外,还探讨了ZigBee设备如何加入网络的过程及协议栈的OSAL层API函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://hi.baidu.com/a263238386/archive/tag/zigbee

一起学习,一起进步。

在IEEE 802.15.4 CSMA/CA机制中,网络协调器在网络中,会发出信标给所有的可感应节点,而对于有数据需传送的设备来说,它们会向网络协调器要求进行传送,由于在一个时间内只能有一个设备进行传输,因此所有想要传输的节点设备就会通过CSMA/CA机制来竞争传输媒体的使用权。所有准备传输数据的设备,会监测目前的无线传输媒体是否有其他设备在使用中,如果为空闲,此时,这些设备会产生一个倒退延迟时间,来错开这些设备同时送出数据从而造成碰撞的可能。若目前的无线传输媒体是忙碌中的,则这些设备将会在监测到媒体为空闲后,再进行CSMA/CA的竞争。

在IEEE 802.15.4 CSMA/CA算法中,CSMA/CA算法是用于节点问数据传输时的信道争用机制,此算法中有三个重要的参数由每个要传送数据的设备去维护:Nb、CW和BE。

Nb(后退次数,Number Of Back):Nb的初始值为0,当设备有数据要传送时,经过一段后退时间后,发送CCA检测,若检测到信道忙,则会再一次产生倒退时间,此时Nb值会加1,在IEEE802.15.4中,Nb值最大定义为4,当信道在经过4次的后退延迟时间后仍为忙,刚放弃此次的传送,以避免过大开销。

CW (碰撞窗口的长度,content window length):也就是后退延迟时间的长度,单位是Backoff,一个后退周期的定义在MAC PIB中由参数aUnitBackofPerio

频分多址(FDMA)是采用调频的多址技术。业务信道在不同的频段分配给不同的用户。如:TACS系统、AMPS系统等。

  时分多址(TDMA)是采用时分的多址技术。业务信道在不同的时间分配给不同的用户。如:GSM、 DAMPS等。

  CDMA(码分多址)是采用扩频的码分多址技术。所有用户在同一时间、同一频段上,根据不同的编码获得业务信道。

FDMA(Frequence Division Multiple Access)直译频分多址。有同用户分配在时隙(出现时间)相同、工作频率不同的信道上,模拟的FM蜂

窝系统都采服了FDMA。我们可以想象一个很大的房子被做成很多的隔段,每一个隔段里都有一对人正在交谈。这样由于隔段的分离,谈话都不

会听到其他人交谈。这就像一个“FDMA”系统。

TDMA(Time Division Multiple Access)直译时分多址。不同用户分配在时隙不同、频率相同的信道上,目前运营的GSM网络制式。TDMA可以

在FDMA的基础上进一步类比,我们可以把隔段做得大些,这样一隔段可以容纳几对交谈者。但是大家的交谈有一个原则:只能同时有一对人在

讲话。如果再把交谈的时间按照交谈者的数目分成若干等分,就成为一个“TDMA”的系统。

CDMA(Code Division Multiple Access)直译为码分多址,我们可以想像一个宽敞的空间,在这里正在进行着一个聚会,其中的

那个获取主机ID的程序我是直接双击打开的,由于WIN7的一些限制,无法获取真正的ID,也就是说那是个假的ID。解决方法就是右键单击该程序,选择“以管理员身份运行”,这样就能获得真正的ID了。

DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存了存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。

DMA的初始化阶段要为TX分配1个空闲的DMA通道。首先要为通道0和通道1-4分别设置好通道描述数据结构的存放地址,并将首地址分别写入DMA0CFGH:DMA0CFGL和DMA1CFGH:DMA1CFGL。再为这个分配好的DMA通道设置其描述数据结构。该数据结构如下:

  typedef struct {

  BYTE SRCADDRH;//源地址

  BYTE SRCADDRL;

  BYTE DESTADDRH;//目的地址

  BYTE DESTADDRL;

  BYTE VLEN  :3;

  BYTE LENH  :5;

  BYTE LENL   :8;

  BYTE WORDSIZE :1;

  BYTE TMODE  :2;

  BYTE TRIG   :5;

  BYTE SRCINC  :2;

 

ZigBee/IEEE 802.15.4的网络所有节点都工作在同一个信道上,因此如果邻近的节点同时发送数据就有可能发生冲突。为此MAC层采用了CSMA/CA的技术,简单来说,就是节点在发送数据之前先监听信道,如果信道空闲则可以发送数据,否则就要进行随机的退避,即延迟一段随机时间,然后再进行监听,这个退避的时间是指数增长的,但有一个最大值,即如果上一次退避之后再次监听信道忙,则退避时间要增倍,这样做的原因是如果多次监听信道都忙,有可能表明信道上的数据量大,因此让节点等待更多的时间,避免繁忙的监听。通过这种信道接入技术,所有节点竞争共享同一个信道。在MAC层当中还规定了两种信道接入模式,一种是信标(beacon)模式,另一种是非信标模式。信标模式当中规定了一种“ superframe”的格式,在超帧的开始发送信标帧,里面含有一些时序以及网络的信息,紧接着是竞争接入时期,在这段时间内各节点以竞争方式接入信道,再后面是非竞争接入时期,节点采用时分复用的方式接入信道,然后是非活跃时期,节点进入休眠状态,等待下一个超帧周期的开始又发送信标帧。而非信标模式则比较灵活,节点均以竞争方式接入信道,不需要周期性的发送信标帧。显然,在信标模式当中由于有了周期性的信标,整个网络的所有节点都能进行同步,但这种同步网络的规模不会很大。实际上,在ZigBee当中用得更多的可能是非信标模式。

http://blog.youkuaiyun.com/P_Chou/archive/2009/04/12/4066238.aspx

各表中的元素结构: 1、组表的元素结构 aps_Group_t;              typedef struct{uint16 ID;                       // 组IDuint8 name[APS_GROUP_NAME_LEN]; // 组名称} aps_Group_t;2、组列表的元素结构               typedef struct apsGroupItem{struct apsGroupItem *next; //指向下一个组表条目uint8                endpoint; //此终端接收发送给组的信息aps_Group_t          group; //组ID和组名} apsGroupItem_t;3、路由表的元素结构 rtgEntry_t;              typedef struct{uint16 dstAddress;                 //目标地址uint16 nextHopAddress;         //单跳地址byte    expiryTime;               //有效时间byte    status;                        //状态} rtgEntry_t;4、

在一个zigbee协 调器设备建立网络后,路由器设备或者终端设备(end device),可以加入协调器建立的网络,具体加入网络有两种方式,一种是通过关联(association)方式,就是待加入的设备发起加入网络,具 体实现方式后面讨论,另一中是直接(direct)方式,就是待加入的设备具体加入到那个设备下,作为该设备的子节点,由以前网络中的设备,想待加入的设 备作为其子设备决定。

   下面重点讨论第一种方式,也是实际中用的最多的方式

   通过关联方式加入一个网络:

  加入一个设备,是两个设备的事,即子设备和待定父设备

  对于子设备,首先子设备调用NLME-NETWORK-DISCOVERY.request 原语,设定待扫描的信道,以及每个信道扫描的时间,网络层收到这个原语,将要求MAC层执行被动或主动扫描。

  具体发送到设备外的是一个becon request 帧,当在这个信道中的设备收到该帧,将会发送becon帧,这是子设备通过BEACON-NOTIFY.indication 原语,告知该设备的MAC层,该becon帧包含了发送该帧的地址信息,以及是否允许其他设备以其子节点的方式加入。待加入的设备,在网络层,将检查该 becon帧 协议 ID是否是zigbee ID 。如果不是,将 忽略;如果是,该设备将复制收到每个becon帧的相关信息到其关联表中(neighbor t

欢迎转载学习,但请注明办公室来源【成都无线龙通讯科技有限公司上海办事处http://wr.cccv.cn/zigbee/主营项目:无线传感网络 无线透传 无线覆盖   地区:上海 上海】

网络层功能:

1.    加入和退出网络

2.    申请安全结构

3.    路由管理

4.    在设备之间发现和维护路由

5.    发现邻设备

6.    储存邻设备 信息

当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络.

ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。

APS功能

1.    绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。

2.    促进信息在设备之间的限制

3.    组地址定义,移除和过滤组地址消息

4.    地址映射来自于64位IEEE地址和16位网络地址

5.    分裂、重新组装和可靠数据传输

ZDO功能

1.    定义设备内部网络(ZigBee协调者和终端接点)

2.    开始和/或回答绑定请求

3.    在网络设备中建立一个网络安全关系

4.

多任务: 

  OS中每个任务都有一个任务初始化函数和任务事件处理回调函数,如SampleApp_Init( taskID )和SampleApp_ProcessEvent( byte task_id, UINT16 events )。如果需要深入了解任务的工作机制,如任务管理、调度任务的同步与通信等,可以去看uC/OS得相关资料。而任务下面又划分很多事件(可以把事件理解为 当前任务下的一些小的任务)。在OS中事件是为了实现任务间的同步与通信的,如信号量、消息邮箱和消息队列。单片机基础对于OS不胜了解的可以这样来理 解,自己当初也是这样来理解的(可以把任务中的发送事件理解为置标志位,在本任务或另一个任务中查询标志位来完成相应操作)在uCOS中任务和事件的处理 是由操作系统来完成的,任务按照优先级来调度,每个任务有自己的任务控制块来决定和记录任务的执行情况,而事件有事件控制块。在实际应用中很多时候做得也 是这个工作,例如在SampleApp_ProcessEvent中来完成事件的功能,刚开始可以把各个事件按照C中的SWITCH CASE来理解,或者状态机的状态切换的理解(实际上应该据自己浅薄的理解,OS中任务及事件的跳转就如同状态机完成各个状态间的切换,只是每个任务都有 个优先级和任务的执行时间,uC/OS中的任务正是基于优先级的调度)

查看相关书籍,任务中的事件尽


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值