嵌入式学习之zigbee

一、zigbee的介绍

低功耗,相比目前的wifi蓝牙功耗更低 低成本,协议栈免专利费,IC结构简化 低速率,工作在20~ 250kbps的速率 近距离,在不增加功率放大器的情况下,一般介于10~100米之间 短时延,无论是唤醒 还是入网都在毫秒级 高容量,同一协调器最多管理65000+节点 自组网,因移动或信号干扰断网后自组 自愈 高安全,支持AES128位对称加密通信 免执照,使用工业科学医疗(ISM)频段,915MHz(美国), 868MHz(欧洲), 2. 4GHz(全球)

Zigbee在3个频段定义了27个物理信道:

二、zigbee协议

1、从官方协议了解到,zigbee可以大致分为五层:

应用层APL,应用框架层AF,以及设备对象ZDO 应用支持子层APS 网络层NWK 媒体访问控制层MAC 物 理层PHY

        1.1 PHY,从无线物理信道上为MAC层提供数据收发的服务:

启动和关闭RF收发器 当前信道能量检测 对接收 到的数据报进行链路服务质量指示LQT(Link Quality Indication) 为CSMA/CA算法提供空闲信道评估 CCA(Clear Channel Assessment) 对信道频率进行选择 数据包的传输和接收

        1.2 MAC,保证协议数据正确收发:

全功能设备(协调器和路由器)产生并发送信标帧(Beacon)。 普通设备根据全功能设备的 信标帧进行同步。 支持PAN(个域网)的关联(Association)建立和取消关联(Disassociation)断开操作。 为 设备的安全性提供支持。 使用CSMA/CA机制共享物理信道。 处理和维护时隙保障GTS(Guaranteed Time Slot)机制。 在两个对等的MAC实体之间提供一个可靠的数据链路。

        1.3 NWK,兼容IEEE802.15.4标准,并为上层提供数据服务(NLDE)和管理服务(NLME):

产生网络层的数 据包:当网络层接受到来自应用子层的数据包,网络层对数据包进行解析,然后加上适当的网络层包头 向MAC传输。 提供路由数据包的功能,如果包的目的节点是本节点的话,将该数据包向应用子层发送, 如果不是,则将该数据包转发给路由表中下一结点。 提供入网器件的参数配置协议,比如建立新的协调 器并发起建立PAN网络或者加入一个已有的网络。

NWK 提供加入或脱离PAN网络的功能,如果节点是协调器或者是路由器,还可以要求子节点脱离网 络。 如果本节点是协调器或者是路由器,则接入该节点的子节点的网络地址由网络层分配控制。 网络层 能发现维护网络邻居信息,比如发现新节点。 网络层能控制接收器的接受时间和状态。

       1.3 APS,为ZDO访问NWK提供了通路:

APS层协议数据单元APDU的处理。 APSDE提供在同一个网络中的 应用实体之间的数据传输机制。 APSME提供多种服务给应用对象,这些服务包括安全服务和绑定服务, 并维护管理对象的数据库,也就是我们常说的AIB。

        1.4 AF,为各个用户自定义的应用对象提供了模板式的活动空间:

为每个应用对象提供了键值对KVP服务和 报文MSG服务两种服务供数据传输。 每个节点除了64位的IEEE地址,16位的网络地址外,AF还为每个 节点提供了8位的应用层入口端点地址,对应于用户应用对象。 端点0用于整个ZigBee设备的配置和管理 ,端点255用于向所有端点的广播(同一终端的不同应用),区别于短地址广播(不同终端) 端点1至240供用户 自定义用于对象使用

AF 端点241-254保留将来使用 每一个端点应用都对应一个配置文件(Profile)

Profile配置文件包括:

设备ID(Device ID) 事务集群ID(cluster ID) 属性ID(Attribute ID) 等等 AF可以通过这些信息来决 定服务类型

ZDO,是一个特殊的应用层的端点(Endpoint)占用了端点0,它是应用层其他端点与应用子层管理实体 之间交互的中间件,它主要提供的功能有: 初始化应用支持子层,网络层。 发现节点和节点功能,在无 信标的网络中,加入的节点只对其父节点可见。 而其他节点可以通过ZDO的功能来确定网络的整体拓扑 结构以及节点所能提供的功能。 安全加密管理,主要包括安全key的建立和发送,以及安全授权。

ZDO 网络的维护功能。 绑定管理,绑定的功能由应用支持子层提供,但是绑定功能的管理却是由ZDO 提供,它确定了绑定表的大小,绑定的发起和绑定的解除等功能。 节点管理,对于网络协调器和路由 器,ZDO提供网络监测、获取路由和绑定信息、发起脱离网络过程等一系列节点管理功能。

                1.5 APL,基于zigbee协议栈,建立在ZDO基础之上的具体上层应用,

主要包括: 数据采集 对象控制 近场 定位

三、CC2530F256

1、CC2530的概述

基于8051架构,

2、最小系统:

电源电路、复位电路、下载电路、调试电路、时钟电路

3、端口的介绍

        用作通用 I/O 时,引脚可以组成 3 个 8 位端口,端口 0、端口 1 和端口 2,表示为 P0、P1 和 P2。其中,P0 和 P1 是完全的 8 位端口,而 P2 仅有 5 位可用。

        功能:通用IO、特殊功能IO

        P0SEL :端口 0 功能选择寄存器

        P1SEL :端口 1 功能选择寄存器

        P2SEL :端口 2 功能选择寄存器

        方向:输入 输出

        P0DIR :端口 0 方向寄存器

        P1DIR :端口 1 方向寄存器

        P2DIR :端口 2 方向寄存器

        电平:高电平1 低电平0

        输入模式寄存器:

        P0INP :端口 0 输入模式寄存器

        P1INP :端口 1 输入模式寄存器

        P2INP :端口 2 输入模式寄存器

四、OSAL操作系统抽象层

1、OSAL的概述

        OSAL,Operating System Abstraction Layer,即操作系统抽象层。 从Z-Stack1.4.3及以后开始引入OSAL。 OSAL是一种基于事件驱动的轮询式操作系统,所提供的管理功能有: 任务登记、任务初始化、任务触发 任务间消息传递 任务同步 中断处理 计时器 内存分配

2、OSAL轮询机制

总结之添加任务的流程:

1、任务初始化 得到任务ID 完成任务处理函数的 前期工作(main自动调用完成);

2、任务处理函数 实现该函数 将函数名 tasksArr[]数组中;

3、在合适的时候调用 osal_set_event(my_Task_ID, LED_EVENT);

4、在任务处理函数中 记得判断是具体的哪个事件----->记得异或该事件 将events中的事件位清0;

3、消息的收发

:任务之间的收发收发消息。 比如:自己的任务初始化函数 给自己的任务事件处理函数 发送消息。

1、OSAL发送消息

1.1 申请消息空间:

uint8 * osal_msg_allocate( uint16 len ) 参数len:需要申请堆区空间的字符数 返回值: 成功:堆区空间的起始地址编号 失败:NULL

1.2 将要发送的消息 放入空间中

strcpy(申请的消息空间地址, 自定义小)

1.3 发送消息

uint8 osal_msg_send(目的任务ID, 申请的消息空间地址) 函数内部: osal_set_event( 目的任务ID, SYS_EVENT_MSG ); //SYS_EVENT_MSG系统定义的消息事件0x8000

2、接收OSAL消息

2.1 在目的任务ID所对应的事件处理函数中 判断SYS_EVENT_MSG。

if(events & SYS_EVENT_MSG) { //接收消息 //释放消息空间 }

2.2 接收消息:

//参数:task_id 表示接收消息的任务ID //返回值:收到消息的空间起始地址 uint8 *osal_msg_receive( uint8 task_id )

2.3 释放消息空间:

uint8 osal_msg_deallocate( uint8 *msg_ptr )

3、案例 初始化函数发送消息 事件处理函数中接收消息

demo.h

demo.c


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值