ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.83KB ,
资源ID:23154192      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23154192.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(zigbee学习自我总结.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

zigbee学习自我总结.docx

1、zigbee学习自我总结1. Zigbee网络节点类型Zigbee网络有三类节点类型:即协调器Coordinator、路由器Router和终端设备EndDevice,其中协调器和路由器均为全功能设备,而终端设备选用精简功能设备。2. Zigbee协议栈各层主要功能模块3. Zigbee网络节点地址Zigbee网络协议的每一个节点皆有两个地址:位的地址及位网络地址EUI-6464-bit e*tended unique identifier164-bit地址,又称为MAC地址或IEEE地址。每个ZigBee节点都应该有全球唯一的64位IEEE地址。这个地址需要向IEEE组织申请才能使用。通信时,

2、将待发送的数据包的目的地址设为此64位IEEE地址,从而实现数据包的正确投递。216-bit地址,即网络地址,或称为短地址。当一个ZigBee网络形成后,ZigBee网络的每个节点,都会分配到一个16位的网络地址。通信时,将待发送的数据包的目的地址设为此16位网络地址。4.Zigbee协议术语配置文件(profile):Zigbee协议的配置文件是对逻辑组件及其相关接口的描述,是面向*个应用类别的公约、准则通常没有程序代码与配置文件相关联属性attribute:设备之间通信的每一种数据像开关的状态或温度计值等皆可称为属性每个属性可得到唯一的ID值簇cluster:多个属性的聚集形成了簇,每个簇

3、也拥有一个唯一的ID。虽然个体之间传输的通常是属性信息,但所谓的逻辑组件的接口指的却是簇一级的操作,而非属性一级终端endpoint:每个支持一个或多个簇的代码功能块称为终端。不同的设备通过它们的终端及所支持的簇来进展通信。PAN IDs:PAN IDs是用来在逻辑上别离在同一领域的多个节点组。这样不同组之间节点通信就不会干扰,且可以在同一通道channel上zigbee2007不行,因为它通信时可以改变频率的Pan id是16位,围是0*000003fff。当建立或参加网络时没有指定PAN ID的话,就会根据default PAN ID确定。它是个常量。E*tended PAN ID:zig

4、bee 增加了一个8字节的扩展PAN ID,便于提供效劳和PAN ID冲突检测。5.Zigbee协议构造物理层(PHY)物理层定义了物理无线信道和MAC子层之间的接口,提供物理层数据效劳和物理层管理效劳。物理层容: 1) ZigBee的激活;2)当前信道的能量检测;3)接收链路效劳质量信息;4 )ZigBee信道接入方式;5)信道频率选择;6)数据传输和接收。介质接入控制子层(MAC)MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号;支持PAN连接和别离,提供两个对等MAC实体之间可靠的链路。MAC层功能:1网络协调器产生信标;2与信标同步;3支持PAN (个域网)链路的建立和

5、断开;4为设备的平安性提供支持;5信道接入方式采用免冲突载波检测多址接入(CSMA-CA)机制;6处理和维护保护时隙(GTS)机制;7在两个对等的M AC实体之间提供一个可靠的通信链路。网络层NWKZigBee协议栈的核心局部在网络层。网络层主要实现节点参加或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能。网络层功能:1)网络发现;2)网络形成;3)允许设备连接;4)路由器初始化;5)设备同网络连接;6)直接将设备同网络连接;7)断开网络连接;8)重新复位设备;9)接收机同步;10)信息库维护。应用层APLZigBee应用层框架包括应用支持层(APS)、ZigBee设备对象(ZDO)和

6、制造商所定义的应用对象。应用支持层的功能包括:维持绑定表、在绑定的设备之间传送消息。ZigBee设备对象的功能包括:定义设备在网络中的角色(如ZigBee协调器和终端设备),发起和响应绑定请求,在网络设备之间建立平安机制。ZigBee 设备对象还负责发现网络中的设备,并且决定向他们提供何种应用效劳。ZigBee应用层除了提供一些必要函数以及为网络层提供适宜的效劳接口外,一个重要的功能是应用者可在这层定义自己的应用对象。应用程序框架AF运行在ZigBee协议栈上的应用程序实际上就是厂商自定义的应用对象,并且遵循规profile运行在端点1-240上。在ZigBee应用中,提供2种标准效劳类型:键

7、值对KVP或报文MSG。Zigbee设备对象ZDO远程设备通过ZDO请求描述符信息,接收到这些请求时,ZDO会调用配置对象获取相应描述符值。另外,ZDO提供绑定效劳。6. Z-Stack软件构架Z-Stack由main函数开场执行,main函数共做了2件事:一是系统初始化,另外一件是开场执行轮转查询式操作系统,如下列图所示:7.Z-Stack 系统运行流程图8. Z-Stack在工程中的目录构造1App:应用层目录,这个目录下的文件就是创立一个新工程时自己要添加的文件,2HAL:硬件层目录,mon目录下的文件是公用文件,根本上与硬件无关,其中hal_assert.c是断言文件,用于调用,hal

8、_drivers.c是驱动文件,抽象出与硬件无关的驱动函数,包含有与硬件相关的配置和驱动及操作函数。Include目录下主要包含各个硬件模块的头文件,而Target目录下的文件是跟硬件平台相关的,可能看到有两个平台,分别是Cc2430DB平台和一个CC2430EB平台。后面的DB和EB表示的是TI公司开发板的型号,其实还有一种类型是BB的,BB: Battery BoardDB: Development BoardEB: Evaluation Board分别对应TI公司开发的三种板型,其功能按上顺序依次变强。可以参看Z-Stack Users Guide for CC2430的图片,可以获得更

9、直观的认识。3MAC:MAC层目录,HighLevel和LowLevel两个目录表示MAC层分为了高层和底层两层,Include目录下则包含了MAC层的参数配置文件及基MAC的LIB库函数接口文件,这里的MAC层的协议是不开源的,以库的形式给出4MT:监制调试层目录,该目录下的文件主要用于调试目的,即实现通过串口调试各层,与各层进展直接交互。5NWK:网络层目录,含有网络层配置参数文件及网络层库的函数接口文件,及APS层库的函数接口6OSAL:协议栈的操作系统抽象层目录7Profile:AF层目录,Application Farmework应用框架,包含AF层处理函数接口文件。8Securit

10、y:平安层目录,包含平安层处理函数接口文件10Tools:工作配置目录,包括空间划分及Z-Stack相关配置信息11ZDO:指ZigBee设备对象,可认为是一种公共的功能集,文件用户用自定义的对象调用APS子层的效劳和NWK层的效劳12ZMAC:其中Zmac.c是Z-StackMAC导出层接口文件,zmac_cb.c是ZMAC需要调用的网络层函数13Zmain:Zmain.c主要包含了整个工程的入口函数main(),在OnBoard.c包含硬件开场平台类外设进展控制的接口函数14Output:输出文件目录,这个是EW8051 IDE自动生成的9.Z-stack 中实现自己的任务在Zstack(

11、TI的Zigbee协议栈)中,对于每个用户自己新建立的任务通常需要两个相关的处理函数,包括:用于初始化的函数如:SampleApp_Init(),这个函数是在osalInitTasks()这个osal(Zstack中自带的小操作系统)中去调用的,其目的就是把一些用户自己写的任务中的一些变量,网络模式,网络终端类型等进展初始化;用于引起该任务状态变化的事件发生后所需要执行的事件处理函数如:SampleApp_ProcessEvent(),这个函数是首先const pTaskEventHandlerFntasksArr中进展设置(绑定),然后在osalInitTasks()中如果发生事件进展调用绑

12、定的事件处理函数。1用户自己设计的任务代码在Zstack中的调用过程main()执行(在Zmain目录中ZMain.c)-osal_init_system()(在OSAL目录中的OSAL.c 中)-调用osalInitTasks( )(在APP目录中的OSAL_SerialApp.c)-调用SerialApp_Init(),(在APP目录中的SerialApp.c中)。在osalInitTasks()中实现了多个任务初始化的设置,其中macTaskInit(taskID+)到ZDApp_Init(taskID+ )的几行代码表示对于几个系统运行初始化任务的调用,而用户自己实现的SampleAp

13、p_Init()在最后,这里taskID随着任务的增加也随之递增.所以用户自己实现的任务的初始化操作应该在osalInitTasks()中增加。在APP目录中的OSAL_SerialApp.c中增加。2任务处理调用的重要数据构造在Zstack里,对于同一个任务可能有多种事件发生,则需要执行不同的事件处理,为了方便,对于每个任务的事件处理函数都统一在一个事件处理函数中实现,然后根据任务的ID号(task_id)和该任务的具体事件(events)调用*个任务的事件处理函数,进入了该任务的事件处理函数之后,再根据 events 再来判别是该任务的哪一种事件发生,进而执行相应的事件处理。pTaskEv

14、entHandlerFn 是一个指向函数(事件处理函数)的指针,这里实现的每一个数组元素各对应于一个任务的事件处理函数,比方SampleApp_ProcessEvent对于用户自行实现的事件处理函数 uint16 SampleApp_ProcessEvent( uint8 task_id,uint16 events ),所以这里如果我们实现了一个任务,还需要把实现的该任务的事件处理函数在这里添加。注意,tasksEvents(在APP目录中的OSAL_SerialApp.c的osalInitTasksvoid函数中)和tasksArr在APP中的OSAL_SerialApp.c中里的顺序是一一

15、对应的,tasksArr中的第i个事件处理函数对应于tasksEvents中的第i个任务的事件。3对于不同事件发生后的任务处理函数的调用osal_start_system()很重要,决定了当*个任务的事件发生后调用对应的事件处理函数(在Zmain目录中ZMain.c)。10.Z-stack 添加一个新的任务在osalInitTasks和tasksArr添加相应的项就可以了。osalInitTasks为初始化系统的任务,tasksArr为任务处理事件矩阵。在 osalInitTasks和 tasksArr添加相应的项就可以。1修改 osalInitTasks void osalInitTasks

16、( void ) OuhsApp_Init(taskID+ ); PhotoApp_Init(taskID); 2修改 tasksArr const pTaskEventHandlerFn tasksArr = OuhsApp_ProcessEvent PhotoApp_ProcessEvent ;3添加_Init( )和_ProcessEvent( )void PhotoApp_Init(uint8 task_id) PhotoApp_TaskID=task_id; PhotoInit(); RegisterForPhoto(PhotoApp_TaskID ); uint16 PhotoAp

17、p_ProcessEvent( uint8 task_id uint16 events ) afIningMSGPacket_t *MSGpkt; if ( events &SYS_EVENT_MSG ) MSGpkt = (afIningMSGPacket_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

18、memory osal_msg_deallocate( (uint8 *)MSGpkt ); / Ne*t - if one is availableMSGpkt =(afIningMSGPacket_t *)osal_msg_receive( PhotoApp_TaskID ); / return unprocessed events return (events SYS_EVENT_MSG); / Discard unknown events return 0; TI节点地址的获得:NLME_GetShortAddr();/调用NLME_GetShortAddr()函数,获得16位短地址。

19、void)NLME_GetE*tAddr();/ Load the saveE*tAddr pointer/获得64位的IEEE地址。实例分析一:Sample Application工程:远程按键无线控制灯实例分析二:按键处理硬件层对按键的处理:InitBoard-( HalKeyConfig(OnboardKeyIntEnable,OnBoard_KeyCallback);/按键配置,设置回调函数对按键进展处理- HalDriverInit();/初始化外设- HalKeyInit()- HalKeyConfig( )- /* Register the callback fution/注册回

20、调函数 */pHalKeyProcessFunction = cback;/设置回调函数- OnBoard_KeyCallback或如没有使用中断,osal_start_timerE* (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_POLLING_VALUE);/*Kickoffpolling-uint16 Hal_ProcessEvent( uint8 task_id, uint16 events )对按键进展扫描-HalKeyPoll();/检查按键-OnBoard_KeyCallback(uint8keys,uint8state)-OnBoard_SendKey

21、s( keys, shift )- osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );/发送消息KEY_CHANGE应用层对按键的处理:GenericApp_ProcessEvent( byte task_id, UINT16 events )-在应用层是通过消息来处理按键的。通过标识KEY_CHANGE来识别- GenericApp_HandleKeys( (keyChange_t *)MSGpkt)-state, (keyChange_t *)MSGpkt)-keys )实例分析三:串口处理过程:SerialAPP工程Main -

22、HalDriverInit()-HAL:hal_drivers.c-HalDriverInit-HalUARTInit()-HAL:Target:hal_uart.c-HalUARTInit()-HalUARTInitDMA()或HalUARTInitISR()-ZStack-cc2530-CC2530EB_hal_uart_isr.c:HalUARTInitISR(void)或ZStack-cc2530-ponentshaltargetCC2530EB_hal_uart_dma.c:HalUARTInitDMA(void)osal_init_system()-osalInitTasks()-

23、SerialApp_Init( taskID )-APP-SerialApp.c: SerialApp_Init( taskID )- HalUARTOpen()- -HalUARTOpenISR(config)-初始化及配置完成之后剩下的就是如何使用:SerialApp_ProcessEvent( uint8 task_id, UINT16 events ):收:case AF_INING_MSG_CMD: SerialApp_ProcessMSGCmd( MSGpkt ); break;发: if ( events & SERIALAPP_SEND_EVT ) SerialApp_Send

24、(); return ( events SERIALAPP_SEND_EVT ); SerialApp_Send();/发送数据-AF_DataRequest(&SerialApp_T*Addr,(endPointDesc_t*)&SerialApp_epDesc, SERIALAPP_CLUSTERID1, SerialApp_T*Len+1, SerialApp_T*Buf, &SerialApp_MsgID, 0, AF_DEFAULT_RADIUS)实例分析四:SimpleAPP测温分析SimpleSensor:采集温度值并发送:Mian( )-初始化HAL,在HAL目录下的hal_b

25、oard_cfg.h的HAL_BOARD_INIT()- Initialize board I/O,在ZMain目录下的OnBoard.c里 InitBoard( )-在HAL目录下的hal_drivers.c里HalDriverInit()-在OSAL目录下的OSAL.C里osal_init_system()-在APP目录下的sapi.c里osalInitTasks()-在APP目录下的sapi.c里SAPI_Init,同时设置了应用开场事件ZB_ENTRY_EVENT用osal_set_event(task_id, ZB_ENTRY_EVENT)实现-在APP目录下的sapi.c里SAPI

26、_ProcessEvent事件处理-在APP目录下的SimpleSensor.c里zb_HandleOsalEvent读取温度值-在APP目录下的sapi.c里通过zb_SendDataRequest 调用AF_DataRequest把温度发出去-注:zb_SendDataRequest( 0*FFFE, SENSOR_REPORT_CMD_ID, 2, pData, 0, AF_ACK_REQUEST, 0 );参数pData就是采集到的温度值。SimpleCollector:温度值接收并上报:Mian( )-osal_init_system()-在APP目录下的sapi.c里osalIni

27、tTasks()-在APP目录下的sapi.c里SAPI_Init-tasksArr-SAPI_ProcessEvent-case AF_INING_MSG_CMD:SAPI_ReceiveDataIndication-zb_ReceiveDataIndication( source, mand, len, pData )该函数在APP目录的SimpleCollector.c里-if (mand = SENSOR_REPORT_CMD_ID),执行DataChange(pData,buf) 数据处理,该函数在DS18B20.C里-通过调用debug_str();函数发送到串口。实例分析五:无线

28、串口透明传输typedef struct osal_event_hdr_t hdr; /* OSAL Message header */ uint16 groupId; /* Messages group ID - 0 if not set */ uint16 clusterId; /* Messages cluster ID */ afAddrType_t srcAddr; /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP, its an InterPAN message */ uint16 macDestAddr; /* MAC

29、header destination short address */ uint8 endPoint; /* destination endpoint */ uint8 wasBroadcast; /* TRUE if network destination was a broadcast address */ uint8 LinkQuality; /* The link quality of the received data frame */ uint8 correlation; /* The raw correlation value of the received data frame

30、 */ int8 rssi; /* The received RF power in units dBm */ uint8 SecurityUse; /* deprecated */ uint32 timestamp; /* receipt timestamp from MAC */ afMSGmandFormat_t cmd; /* Application Data */ afIningMSGPacket_t;typedef structuint8 event; uint8 status; osal_event_hdr_t;typedef struct byte TransSeqNumber; uint16 DataLength; / Number of bytes in TransData byte *Data; afMSGmandFormat_t;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1