0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文读懂zigbee技术的协议原理

电子设计 来源:互联网 作者:佚名 2017-11-27 13:59 次阅读

一.前言

从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载TI公司为cc2530写的协议栈代码,毕竟,我们作为初学者,应该先不要去深究协议栈是怎么用代码编写的,毕竟zigbee已经相当成熟了,我们应该先学会使用zigbee协议栈进行通信,并能应用于实际项目中,比如说智能家具,不知道大家是不是有同感,所以下面我就先给大家介绍一下zigbee通信的原理以及体系架构。

二.ZStack 体系架构

ZStack 的体系结构由称为层的各模块组成。每一层为其上层提供特定的服务:即由数据服务实体提供数据传输服务;管理实体提供所有的其他管理服务。每个服务实体通过相应的服务接入点(SAP) 为其上层提供一个接口,每个服务接入点通过服务原语来完成所对应的功能。

ZStack 根据IEEE 802.15.4 和ZigBee 标准分为物理层,介质接入控制层,网络层,应用层。物理层提供了基础的服务,数据传输和接收,网络层提供了各个节点连入的服务,是zigbee网络通信的关键,应用层是我们关注的重点,提供了应用的框架和ZDO。大家如果想了解体系结构的具体内容,可以自己去看说明文档,下面我给大家介绍一下zigbee工作原理

ZStack 采用操作系统的思想来构建,采用事件轮循机制,而且有一个专门的Timer2 来负责定时。从CC2530 工作开始,Timer2 周而复始地计时,有采集、发送、接收、
显示…等任务要执行时就执行。当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。

整个ZStack 的主要工作流程,如图所示,大致分为以下6 步:
(1) 关闭所有中断;
(2) 芯片外部(板载外设)初始化;
(3) 芯片内部初始化;
(4) 初始化操作系统;
(5) 打开所有中断;
(6) 执行操作系统。

这就是zigbee处理任务的大致过程。

三.代码分析

协议栈的代码很多,而且很复杂,上图就明白了。。。

这还只是一部分,所以我们先不用太过于专注于协议栈的编写,而是要学会如何用,我们主要学习和配置的就是图中SampleApp.c这个文件,它主要就是应用于应用的,我们面对不同的应用,只要修改它和底层的配置文件就行了。它里面有6个非常重要的函数,这6 个函数,有关于初始化用户功能
的;有关于所有事件的 处理的;有按键服务功能编写的;有接收数据的处理的;有数据发送函数的编写的。下面我们就对这6 个函数进行分析:

void SampleApp_Init( uint8 task_id )

这是一个用户用于初始化任务的函数,它是在系统初始化阶段被调用的,而且,在调用它的时候,它里面应该有相应任务的初始化(也就是说,用户有什么初始化,都是放在这个函数里),比如:硬件初始化、数据表初始化、电源初始化等等。

uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )

这是一个事件处理函数(所有事件都是它管理),当有已登记的事件发生时,它就被主函数调用来对事件进行处理,这些事件包括:定时器、消息、以及用户定义的事件等
等。
这个函数的功能包括:按键处理,数据接收,数据发送。当然,用户可以自己添加其它事件,我们就在这个函数添加自己的串口事件。

void SampleApp_HandleKeys( uint8 shift, uint8 keys )

这个函数是给SampleApp_ProcessEvent( uint8 task_id, uint16 events )调用的:当按键按下后,就会执行SampleApp_ProcessEvent 函数里的case KEY_CHANGE ,这个case 的服务函数就是SampleApp_HandleKeys( uint8 shift, uint8 keys ),我们可以在这个函数里添加按键判断,判断哪个按键,然后执行相关任务。

void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )

这个函数管理所有接收到的数据,至于数据来自哪个设备,它是根据簇ID 来分辨的。
函数里面就是一个switch 语句,关键是case 及其后面的服务函数。用户可以根据不同的功能,定义不同的簇ID(在SampleApp.h 里进行),然后在这个switch 语句里添加一个以簇ID 来命名的case,并在case 里面编写自己的应用程序。

void SampleApp_SendPeriodicMessage( void )

这个函数,是一个周期性数据发送函数,它是设备设置为周期性广播的时候调用的,它是我们设置发送数据的地方。

void SampleApp_SendFlashMessage( uint16 flashTime )

这个函数是void SampleApp_HandleKeys( uint8 shift, uint8 keys )函数的一个服务函数,我们也是极少用到这个函数的,故不作详解。

上述就是常用的6个函数,对于初学者,会使用zigbee协议进行应用就够了,先对驱动进行移植,在进行硬件进行初始化,在修改这6个函数,就可以对zigbee进行简单的应用了,今天就先写到这里了,协议栈代码太多了我就不贴出来了,需要的朋友联系我,大家相互学习,这只是我的一点体会。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ZigBee技术
    +关注

    关注

    3

    文章

    115

    浏览量

    42387
收藏 人收藏

    评论

    相关推荐

    读懂ZigBee技术的前世今生

    下文采用问答形式向你详细地介绍了方方面面,不夸口的说,你所需要知道的关于 ZigBee切,在这里基本可以了解到!
    发表于 06-14 15:19 5251次阅读

    读懂zigbee通信技术的特点和性能

    | 传感器技术(WW_CGQJS)ZigBee技术被认为是最有可能像WiFi、蓝牙样改变我们现在生活的
    的头像 发表于 11-23 07:46 2.9w次阅读

    TI_06版Zigbee协议栈学习_02 - Zigbee技术 -

    TI_06版Zigbee协议栈学习_02 - Zigbee技术 -
    发表于 08-12 23:53

    TI_06版Zigbee协议栈学习_03 - Zigbee技术

    TI_06版Zigbee协议栈学习_03 - Zigbee技术
    发表于 08-12 23:54

    TI_06版Zigbee协议栈学习_04 - Zigbee技术

    TI_06版Zigbee协议栈学习_04 - Zigbee技术
    发表于 08-12 23:57

    读懂接口模块的组合应用有哪些?

    读懂接口模块的组合应用有哪些?
    发表于 05-17 07:15

    读懂如何去优化AC耦合电容?

    读懂如何去优化AC耦合电容?
    发表于 06-08 07:04

    读懂ZigBee指的是什么

    ZigBee指的是什么?ZigBee网络的般特性有哪些?ZigBee网络的硬件和软件有哪些?
    发表于 09-24 13:31

    读懂什么是NEC协议

    读懂什么是NEC协议
    发表于 10-15 09:22

    读懂中断方式和轮询操作有什么区别吗

    读懂中断方式和轮询操作有什么区别吗?
    发表于 12-10 06:00

    zigbee技术_zigbee协议

    Zigbee是IEEE 802.15.4协议的代名词。根据这个协议规定的技术种短距离、低功耗的无线通信
    发表于 09-07 16:22 4491次阅读
    <b class='flag-5'>zigbee</b><b class='flag-5'>技术</b>_<b class='flag-5'>zigbee</b><b class='flag-5'>协议</b>

    读懂MCU的特点、功能及如何编写

    读懂MCU的特点、功能及如何编写
    发表于 12-05 09:51 24次下载
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>读懂</b>MCU的特点、功能及如何编写

    读懂,什么是BLE?

    读懂,什么是BLE?
    的头像 发表于 11-27 17:11 2280次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>读懂</b>,什么是BLE?

    读懂车规级AEC-Q认证

    读懂车规级AEC-Q认证
    的头像 发表于 12-04 16:45 937次阅读

    读懂微力扭转试验机的优势

    读懂微力扭转试验机的优势
    的头像 发表于 11-30 09:08 564次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>读懂</b>微力扭转试验机的优势