zigbee学习自我总结!!!!!

上传人:z**** 文档编号:164959533 上传时间:2022-10-26 格式:DOCX 页数:12 大小:161.15KB
返回 下载 相关 举报
zigbee学习自我总结!!!!!_第1页
第1页 / 共12页
zigbee学习自我总结!!!!!_第2页
第2页 / 共12页
zigbee学习自我总结!!!!!_第3页
第3页 / 共12页
点击查看更多>>
资源描述
1. Zigbee网络节点类型Zigbee网络有三类节点类型:即协调器Coordinator、路由器 Router和终端设备EndDevice,其中协调器和路由器均为全功能设备, 而终端设备选用精简功能设备。2. Zigbee协议栈各层主要功能模块ArAPSE展MAG愿PHY层3. Zigbee网络节点地址Zigbee网络协议的每一个节点皆有两个地址:6 4位的IEEE MAC 地址及16位网络地址.EUI-64 (64-bit ex tended unique iden tifier )1) 64-bit地址,又称为MAC地址或IEEE地址。每个ZigBee节点都应该有全球唯一的64位IEEE地址。这个地址需要向IEEE 组织申请才能使用。通信时,将待发送的数据包的目的地址设为此64位IEEE 地址,从而实现数据包的正确投递。2)16-bit地址,即网络地址,或称为短地址。当一个ZigBee网络形成后,ZigBee 网络内的每个节点,都会分配到一个16位的网络地址。通信时,将待发送的数 据包的目的地址设为此16位网络地址。4.Zigbee 协议术语配置文件(profile): Zigbee协议的配置文件是对逻辑组件及其相关接口的 描述,是面向某个应用类别的公约、准则通常没有程序代码与配置文件相关联属性(attribute):设备之间通信的每一种数据像开关的状态或温度计值 等皆可称为属性.每个属性可得到唯一的ID值.簇(cluster):多个属性的汇集形成了簇,每个簇也拥有一个唯一的ID。 虽然个体之间传输的通常是属性信息,但所谓的逻辑组件的接口指的却是簇一级 的操作,而非属性一级终端(endpoint):每个支持一个或多个簇的代码功能块称为终端。不同的 设备通过它们的终端及所支持的簇来进行通信。PAN IDs: PAN IDs是用来在逻辑上分离在同一领域内的多个节点组。这样 不同组之间节点通信就不会干扰,且可以在同一通道channel上(zigbee2007 不行,因为它通信时可以改变频率的)Pan id是16位,范围是0x000003fff。 当建立或加入网络时没有指定PAN ID的话,就会根据default PAN ID确定。它 是个常量。Ex tended PAN ID: zigbee增加了一个8字节的扩展PAN ID,便于提供服 务和PAN ID冲突检测。anttki/1 APSDE-SAP端点aAPSDE-SAPAPS戏全疔肆APSifi息中转安全服务俣应商VIDE-SAP两纳层1NWIO曾理面feTiWK発全管理网堵首理消思呻转踣由管理rD-AP物理层(PIID114GHz868/$帖册怎1PI.WE-SAP5. Zigbe协议结构I上厂半点嚣0 APSD-SAP/物理层(PHY)物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据服务 和物理层管理服务。物理层内容:1)ZigBee的激活;2)当前信道的能量检测;3)接收链路服务质量信息;4 )ZigBee 信道接入方式;5)信道频率选择;6)数据传输和接收。介质接入控制子层(MAC)MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号;支持PAN连接和分离,提供两个对等MAC实体之间可靠的链路。MAC层功能:1)网络协调器产生信标;2)与信标同步;3 )支持PAN (个域网)链路的建立和断开;4)为设备的安全性提供支持;5 )信道接入方式采用免冲突载波检测多址接入(CSMA-CA)机制;6 )处理和维护保护时隙(GTS)机制;7 )在两个对等的M AC实体之间提供一个可靠的通信链路。网络层(NWK)ZigBee协议栈的核心部分在网络层。网络层主要实现节点加入或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能。网络层功能:1)网络发现;2)网络形成;3)允许设备连接;4)路由器初始化;5)设备同网络 连接;6)直接将设备同网络连接;7)断开网络连接;8)重新复位设备;9)接收机 同步;10)信息库维护。应用层(APL)ZigBee应用层框架包括应用支持层(APS)、ZigBee设备对象(ZDO)和制造 商所定义的应用对象。应用支持层的功能包括:维持绑定表、在绑定的设备之间 传送消息。ZigBee设备对象的功能包括:定义设备在网络中的角色(如ZigBee协调器和终 端设备),发起和响应绑定请求,在网络设备之间建立安全机制。ZigBee设备对 象还负责发现网络中的设备,并且决定向他们提供何种应用服务。ZigBee应用 层除了提供一些必要函数以及为网络层提供合适的服务接口外,一个重要的功能 是应用者可在这层定义自己的应用对象。应用程序框架(AF)运行在ZigBee协议栈上的应用程序实际上就是厂商自定义的应用对象,并 且遵循规范(profile)运行在端点1-240上。在ZigBee应用中,提供2种标 准服务类型:键值对(KVP )或报文(MSG)。Zigbee设备对象(ZDO )远程设备通过ZDO请求描述符信息,接收到这些请求时,ZDO会调用配置对象获取相应描述符值。另外,ZDO提供绑定服务。协议栈休系分层架构与协议栈代码文件夹对应衣如下;协议栈体系分层架构硼际码文件夹物理层(PHY)顽件层目录(HAL)介质接入控制了层 MAC)链路层日录和Zmac网络层NWKJ网络层日录(NWK)应用支持层(ATS)网绪层目录NWK应用程序框架C AF)配置文件目录(Profile)和应用程序(sapl)ZigBee设备对象(ZDO)设备対彖H录(2D0)6. Z-Stack软件构架Z-Stack由main ()函数开始执行,main ()函数共做了 2件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统,如下图所示:7. Z-StackQEMjSuck RAfboard LOCI初 ifJtNVFALSH側始化macL-丿I-始系统运行流程图讼取NV ITEMSOSALOSAL任夯 轮淅扛鮒环和对低-r0时 nT调HI車件 柱舛當库8. Z-Stack在项目中的目录结构(1) App:应用层目录,这个目录下的文件就是创建一个新项目时自己要添加的文件,(2)HAL:硬件层目录,Common目录下的文件是公用文件,基本上与硬件 无关,其中hal_assert.c是断言文件,用于调用,hal_drivers.c是驱动文件,抽 象出与硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,而Target目录下的文件是跟 硬件平台相关的,可能看到有两个平台,分别是 Cc2430DB 平台和一个CC2430EB平台。后面的DB和EB表示的是TI公司开发板的型号,其实还有一 种类型是 BB 的,BB: Battery BoardDB: Development Board EB: Evaluation Board分别对应TI公司开发的三种板型,其功能按上顺序依次变强。可以参看Z-Stack Users Guide for CC2430的图片,可以获得更直观的认识。(3)MAC : MAC 层目录,High Level 和 Low Level 两个目录表示 MAC 层分为了高层和底层两层,Include目录下则包含了 MAC层的参数配置文件及 基MAC的LIB库函数接口文件,这里的MAC层的协议是不开源的,以库的形 式给出(4)MT:监制调试层目录,该目录下的文件主要用于调试目的,即实现通过 串口调试各层,与各层进行直接交互。(5 )NWK:网络层目录,含有网络层配置参数文件及网络层库的函数接口文件, 及APS层库的函数接口(6)OSAL :协议栈的操作系统抽象层目录(7)Profile : AF 层目录,Application Farmework应用框架,包含 AF 层处 理函数接口文件。(8 ) Security :安全层目录,包含安全层处理函数接口文件(9)Services:ZigBee 和802.15.4 设备地址处理函数目录,包括地址模式的 定义及地址处理函数(10)Tools :工作配置目录,包括空间划分及Z-Stack相关配置信息(11)ZDO :指ZigBee设备对象,可认为是一种公共的功能集,文件用户用 自定义的对象调用APS子层的服务和NWK层的服务(12)ZMAC:其中 Zmac.c 是 Z-StackMAC 导出层接口文件,zmac_cb.c 是 ZMAC需要调用的网络层函数(13)Zmain:Zmain.c主要包含了整个项目的入口函数main(),在OnBoard.c 包含硬件开始平台类外设进行控制的接口函数(14)Output:输出文件目录,这个是EW8051 IDE自动生成的9. Z-stack 中实现自己的任务在Zstack(TI的Zigbee协议栈)中,对于每个用户自己新建立的任务通常需要 两个相关的处理函数,包括:用于初始化的函数女:SampleApp_Init(),这个函数是在 osalInitTasks()这个 osal(Zstack 中自带的小操作系统)中去调用的,其目的就是把一些用户自己写的任务中的 一些变量,网络模式,网络终端类型等进行初始化;用于引起该任务状态变化的事件发生后所需要执行的事件处理函如 :SampleApp_ProcessEvent(), 这 个 函 数 是 首 先 constpTaskEventHandlerFn tasksArr中进行设置(绑定),然后在osalInitTasks()中如果发生事件进行调 用绑定的事件处理函数。1)用户自己设计的任务代码在Zstack中的调用过程main()执行(在Zmain 目录中 ZMain.c)-Tosal_init_system( )(在 OSAL 目 录中的 OSAL.c中)-9调用 osalInitTasks()(在 APP目录中的 OSAL_SerialApp.c)-T调用 SerialApp_Init( ),(在 APP 目录中的 SerialApp.c 中)。在 osalInitTasks() 中 实 现 了 多 个 任 务 初 始 化 的 设 置 , 其 中 macTaskInit(taskID+ 到 ZDApp_Init(taskID+ )的几行代码表示对于几个系 统运行初始化任务的调用,而用户自己实现的SampleApp_Init()在最后,这里 taskID 随着任务的增加也随之递增.所以用户自己实现的任务的初始化操作应该 在 osalInitTasks()中增加。(在 APP 目录中的 OSAL_SerialApp.c 中增加)。2)任务处理调用的重要数据结构在 Zstack 里,对于同一个任务可能有多种事件发生,那么需要执行不同的事 件处理,为了方便,对于每个任务的事件处理函数都统一在一个事件处理函数中实 现撚后根据任务的ID号(task_id)和该任务的具体事件(events)调用某个任务的 事件处理函数,进入了该任务的事件处理函数之后,再根据 events 再来判别是该 任务的哪一种事件发生,进而执行相应的事件处理。pTaskEventHandlerFn 是一个指向函数 (事件处理函数)的指针,这里实现的每一个数组元素各对应于一个任务的事件处理函数,比如SampleApp_ProcessEvent 对于用户自行实现的事件处理函数 uint16SampleApp_ProcessEvent( uint8 task_id,uint16 events ),所以这里如果我们 实现了一个任务,还需要把实现的该任务的事件处理函数在这里添加。注意,tasksEvents(在 APP 目录中的 OSAL_SerialApp.c 的 osallnitTasks(void )函数中)和 tasksArr(在 APP 中的 OSAL_SerialApp.c 中)里的顺序是对应的,tasksArr中的第i个事件处理函数对应于tasksEvents中的第i个任务的事件。3) 对于不同事件发生后的任务处理函数的调用osal_start_system()很重要,夬定了当某个任务的事件发生后调用对应的事件处理函数(在Zmain目录中ZMain.c)。10. Z-stack 添加一个新的任务在 osalInitTasks()和 tasksArr添加相应的项就可以了。osallnitTasks ()为初始化系统的任务,tasksArr为任务处理事件矩阵。在osallnitTasks ()和tasksArr添加相应的项就可以。1)修改 osalInitTasks()void osalInitTasks( void )OuhsApp_Init(taskID+ );PhotoApp_Init(taskID);2)修改 tasksArrconst pTaskEventHandlerFn tasksArr = OuhsApp_ProcessEventPhotoApp_ProcessEvent;3 )添加_Init()和_ProcessEvent()void PhotoApp_Init(uint8 task_id)PhotoApp_TaskID=task_id;PhotoInit();RegisterForPhoto(PhotoApp_TaskID );uint16 PhotoApp_ProcessEvent( uint8 task_id uint16 events )afIncomingMSGPacket_t *MSGpkt;if ( events &SYS_EVENT_MSG )MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( PhotoApp_TaskID );while ( MSGpkt )switch ( MSGpkt-hdr.event ) case PHOTO_CHANGE:HalLedblink( HAL_LED_1 3 30 300 );/P0IE=1;break;/ Release the memoryosal_msg_deallocate( (uint8 *)MSGpkt );/ Next - if one is availableMSGpkt =(afIncomingMSGPacket_t *)osal_msg_receive( PhotoApp_TaskID );/ return unprocessed eventsreturn (events 人 SYS_EVENT_MSG);/ Discard unknown eventsreturn 0;TI 节点地址的获得:NLME_GetShortAddr() ;/调用 NLME_GetShortAddr()函数,获得 16 位短地址。(void)NLME_Ge tExt Addr() ;/ Load the saveEx tAddr poi nt er/ 获得 64位的IEEE地址。实例分析一:Sample Application工程:远程按键无线控制灯实例分析二: 按键处理
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!