当前位置:文档之家› ZigBee学习Z-stack外部中断

ZigBee学习Z-stack外部中断

ZigBee学习Z-stack外部中断
ZigBee学习Z-stack外部中断

ZigBee学习Z-stack外部中断

硬件抽象层:就是对硬件层做好了各种初始化,用户不用考虑硬件的初始配置,直接使用即可。

hal_driver.c文件:

HalDriverInit():用户可在此函数中添加硬件的初始化操作,如定时器、ADC、DMA、FLASH、AES、LCD、LED、UART、KEY、SPI、HID等(还有用于配置外部中断,类似按键的中断方式查询键值)

Hal_ProcessEvent():

处理HAL发生的事件、如:KEY、LED、电源管理等,用户可以在此添加处理自己的HAL事件,此事件ID必须是唯一的,定义在hal_driver.h中。如:HAL_KEY_EVENT(按键轮询与抖动)、HAL_LED_BLINK_EVENT(LED闪烁)、HAL_SLEEP_TIMER_EVENT(Power saving).

Hal_ProcessPoll():

被osal_start_system()调用,用于HAL_Timer和HAL_UART的事件轮询,关于系统编译连接,只要没有定义相关的宏定义,相应的驱动就不会编译进去,减少代码占用的空间。有以下的宏定义:

具体操作是:

Options->C/C++

Options->Preprocessor->Defined Symbols->enter:HAL_XXX=TRUE;

when XXX is ADC,UART,LED,LCD,KEY

不编译进代码,只要将其定义成FALSE

如何定做适合自己的HAL处理的程序

①修改原文件的方式:

1、HAL\include下的头文件应该保留一样。

2、在HAL\Target\hal_xxx.c修改相应的驱动函数,hal_adc.c, hal_key.c, hal_lcd.c, hal_led.c, hal_timer.c, and hal_uart.c

3、硬件驱动配置可以被修改在hal_board_cfg.h

②增加用户自己的目标驱动

1、增加新的头文件,在hal\include

2、在hal\Target\hal_xxx.c添加自己运行函数,xxx为自己的目标

3、如果GPIO有冲突或者没用到,应该保证驱动不被编译,否则后果严重。

4、检查GPIO有没有正确设置或冲突,通过hal_board_cfg.h

5、不想被编译,或者是老的文件,没用到的文件,可以通过选择options->"Exclude form build"

外部中断程序中断处理函数的定义:可以查看

hal\Target\hal_XXX.c\hal_mcu.h

HAL_ISR_FUNCTION(f,v)

HAL_ISR_FUNCTION (prototype, vector)

{

/* Do something when this interrupt happens!!! */

}

prototype是中断名称,vector是中断向量

①如何修改存在GPIO外部中断处理函数?

Example: Modify P1INT_VECTOR interrupt service routine in a CC2430 project. P1INT_VECTOR interrupt service routine is declared in hal_key.c.

HAL_ISR_FUNCTION (halKeyPort1Isr, P1INT_VECTOR)

{

halProcessKeyInterrupt ();//中断处理函数

}

增加新的中断处理函数

首先新建头文件,定义中断向量和定义要用到的GPIO地址,

(包函ioCC2530.h 即可)

ex:创建定时器1中断处理程序(T1_VECTOR)(中断向量定义在ioCC2530.h 中)主要就是,知道中断向量表的宏定义,然后使用HAL_ISR_FUNCTION(prototype, vector)建立处理函数。

现在就外部中断例子做以下笔记

新建一个hal_xxx.c文件和hal_xxx.h文件,此hal_xxx.h文件要在hal_driver.c 中包含,主要是使用hal_xxx.c定义外部中断初始化函数,而使用此初始化函数是在HalDriverInit中,在结尾中调用即可,就可以启动外部中断了,如以下

voidLightAdjInit( void )

{

/* Initialize previous key to 0 */

P1SEL&=~(1<<2);//设置P1_2为一般IO口功能

P1DIR&=~(1<<2);//设置P1_2为输入功能

P2INP&=~(1<<2);//设置为上拉

P1IEN|=(1<<2);//P1_2中断使能

PICTL&=~(1<<1);//上升沿引起中断

EA=1;//开启总中断

IEN2|=(1<<4);//端口1中断使能

P1IFG=0;//初始化中断标志位

}设置P1_2外部中断,此函数在hal_xxx.c文件中编写,

在hal_xxx.c中包含相应头文件,编写处理中断的函数和中断函数LightInterrupt(),HAL_ISR_FUNCTION( light_adj, P1INT_VECTOR )

light_adj是中断相应函数名,随便起,P1INT_VECTOR是中断向量,参考ioCC2530.h 在LightInterrupt中想产生相应事件,应该要定义相应的宏,在hal_drivers.h中定义,注意事件的定义规则,只能以0x0001/0x0002/0x0004/0x0008这样不同的位置定义,因此对于每个任务只能定义16个事件

事件的处理要看相应的任务,一般在Hal_ProcessEvent()函数中编写处理如:

if(events & HAL_LIGHT_EVENT)

{

LED2_SBIT=~LED2_SBIT;

return events ^ HAL_LIGHT_EVENT;

}

在外部中断处理函数中产生事件,可以使用osal_start_timerEx (Hal_TaskID, HAL_LIGHT_EVENT, 10);也可以使用osal_set_event(Hal_TaskID,UART_RX_CB_EVT);等让相应的任务处理事件。

ZigBee学习笔记CC2530

已入门选手进一步学习的重点 我发现最近群里很多人已经可以算是大致入门了,能够在原有例子的基础上进行一些简单工作,实现数据传输。但是我也发现很多人开始把精力投入到钻研协议栈代码细节上面去了,实际上这种学习方式是有问题的。第一:如果从应用的角度看,协议栈的一些实现细节是没有必要钻研的,这就好比是现在的PC机,已经有了Windows系统了,我们在这个系统之上实现自己应用程序的时候其实并不需要对Windows内部实现细节过多地关注,只要能够自由地在Windows下开发应用程序(其实就是调用大量的API函数)就可以了;第二:如果想从协议栈本身入手去做一些深入的工作,Zstack是不适合的,因为它不是完全开源,真想在路由算法、加密算法等方面做工作的话,目前TinyOS这样的开源协议栈才是首选。所以,进一步学习的重点应该是:在什么时间什么地点调用什么函数的问题! 那么如何来提高这方面的技能呢? 1、浏览ZDP和ZDO相关代码,熟悉一下都有什么函数,这两个部分都做了什么,学习的过程中千万不要去钻研代码实现的细节,只要了解其流程以及都作了什么就可以了,否则你一定会迷失在那成千上万行的代码之中而不能自拔。ZDP和ZDO的实现文件里面 有大量的函数在以后具体应用中可以去调用。 2、典型例子中的ZDO消息使用其实只有那么几个例子,比如: ZDO_RegisterForZDOMsg(TaskID,End_Device_Bind_rsp)这样的,这是讲底层的一些事件消息引入到应用层的注册方法。在深入应用的时候那么几个典型的消息注册是不够 用的,比如我在一个应用中就注册了以下: ZDO_RegisterForZDOMsg( TaskID, End_Device_Bind_rsp ); // 我自己解析 End_Device_Bind_rsp ZDO_RegisterForZDOMsg( TaskID, Match_Desc_rsp ); //我自己解析 Match_Desc_rsp ZDO_RegisterForZDOMsg( TaskID, Device_annce); //我自己解析 Device_annce ZDO_RegisterForZDOMsg( TaskID, Active_EP_rsp); //我自己解析 Active_EP_rsp ZDO_RegisterForZDOMsg( TaskID, Simple_Desc_rsp); //我自己解析 Simple_Desc_rsp ZDO_RegisterForZDOMsg( TaskID, NWK_addr_rsp); //我自己解析 NWK_addr_rsp 在具体应用中,你会根据不同的网络需求去调用很多协议栈的设置好的req和处理rsp消息,那么协议栈都有那些req和rsp是你进一步学习所应该深入认识的。 3、在自己使用系统的req和rsp的时候,如果你不知道该如何处理,你最好去看看MT是如何实现的,在MT功能模块中,对协议栈的绝大多数req和rsp都有调用和实现的例子可以参考,虽然我们在自己的应用中很少回去使用MT,但是Mt 的实现代码却是最好

Zigbee协议栈系统事件

系统常用事件处理函数: -按键事件 -接收消息事件 -网络状态改变事件 -绑定确认事件 -匹配响应事件 1、按键事件 Case KEY_CHANGE: 当有按键事件发生的时,调用按键事件处理函数Sample_HandleKeys()来处理按键事件。 在SampleApp例程中按键处理函数处理了以下2件事情 -如果按键1按下,将向网络中的其他设备发送LED闪烁命令 -如果按键2按下,检测组ID号为SAMPLEAPP_FLASH_GROUP的组是否已经注册。如果已经注册,调用aps_RemoveGroup()将其删除;如果没注册就在APS层注册

2、接收消息事件 Case:AF_INCOMING_MSG_CMD: 如果有接收消息事件发生,则调用函数SampleApp_MessageMSGCB(MSG)对接收的消息进行处理。一般的接收消息事件是通过用户自定义的端点输入簇和输出簇来处理的。 在LED闪烁命令的发送函数中的输出簇为SAMPLEAPP_FLASH_CLUSTERID,所以在接收消息事件的输入簇中为SAMPLEAPP_FLASH_CLUSTERID即收到LED闪烁命令

3、网络状态改变事件 Case:ZDO_STATE_CHANGE 当有网络状态改变事件发生后,会调用函数SampleApp_NwkState()来处理网络状态改变事件。在SampleApp例程中,网络状态改变事件主要处理了以下事件: -判断设备类型(区分协调器、路由节点、终端节点) -当协调器网络建立成功后或其他类型节点加入网络后点亮led1 -通过调用osal_start_timerEx()设置一个定时事件,当时间到达后启用用户自定义事件SampleApp_Send_PERIODIC_MSG_EVT 备注:在使用过程中这里的3种设备类型不是全选,写一个就可以了,其他的删除

ZigBee网络拓扑结构显示

实验二ZigBee网络拓扑结构显示 【实验目的】 1、熟悉Qt编写程序的方法; 2、了解Qt显示ZigBee网络拓扑结构的工作原理; 【实验设备】 1、装有RedHat AS5系统或装有RedHat AS5虚拟机的PC机一台; 2、物联网开发设计平台一套; 【实验要求】 使用Qt为ZigBee网络编写拓扑结构; 1、编程要求:使用提供的API函数编写应用程序; 2、实现功能:构建ZigBee网络拓扑结构; 3、实验现象:显示网络的拓扑结构; 【实验原理】 本实验箱针对Qt下,将服务程序的API做了一定的封装,并提供了非常方便使用的接口函数,可以让用户在Qt环境下绘制Zigbee网络的拓扑结构。这些函数都被封装在一个叫做TopologyWidget的类中,它们的详细介绍如下: 【函数原型】void TopologyWidget::SetTopologyArea(const QString &ip, QScrollArea *area); 【功能】设置用来显示拓扑图的滚动区域控件 【参数】ip: 运行服务程序的网关(计算机)的IP地址area: 用来显示拓扑图的滚动区域控件【返回值】无 【头文件】使用本函数需要包含"topologywidget.h" 【函数原型】void TopologyWidget::UpdateTopologyArea(QScrollArea *area); 【功能】立即刷新滚动区域控件中的拓扑图 【参数】area: 用来显示拓扑图的滚动区域控件 【返回值】无 【头文件】使用本函数需要包含"topologywidget.h" 在实际应用中,用户需要首先在界面中放置一个,假设其名称为“scrollArea”,只需要在窗体的构造函数中,完成了setupUi的操作之后,调用TopologyWidget::SetTopologyArea函数即可使拓扑图显示在这个滚动区域中,参考下面的代码。 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); // 将界面中的scrollArea设置为用来显示拓扑图 TopologyWidget::SetTopologyArea("127.0.0.1", ui->scrollArea); } 【实验步骤】 1.双击打开桌面上的VMware Player。如图 2.1所示;

Zigbee协议栈原理基础

1Zigbee协议栈相关概念 1.1近距离通信技术比较: 近距离无线通信技术有wifi、蓝牙、红外、zigbee,在无线传感网络中需求的网络通信恰是近距离需求的,故,四者均可用做无线传感网络的通信技术。而,其中(1)红外(infrared):能够包含的信息过少;频率低波衍射性不好只能视距通信;要求位置固定;点对点传输无法组网。(2)蓝牙(bluetooth):可移动,手机支持;通信距离10m;芯片价格贵;高功耗(3)wifi:高带宽;覆盖半径100m;高功耗;不能自组网;(4)zigbee:价格便宜;低功耗;自组网规模大。?????WSN中zigbee通信技术是最佳方案,但它连接公网需要有专门的网关转换→进一步学习stm32。 1.2协议栈 协议栈是网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议。 1.2.1Zigbee协议规范与zigbee协议栈 Zigbee各层协议中物理层(phy)、介质控制层(mac)规范由IEEE802.15.4规定,网络层(NWK)、应用层(apl)规范由zigbee联盟推出。Zigbee联盟推出的整套zigbee规范:2005年第一版ZigBeeSpecificationV1.0,zigbee2006,zigbee2007、zigbeepro zigbee协议栈:很多公司都有自主研发的协议栈,如TI公司的:RemoTI,Z-Stack,SimpliciTI、freakz、msstatePAN 等。 1.2.2z-stack协议栈与zigbee协议栈 z-stack协议栈与zigbee协议栈的关系:z-stack是zigbee协议栈的一种具体实现,或者说是TI公司读懂了zigbee 协议栈,自己用C语言编写了一个软件—---z-stack,是由全球几千名工程师共同开发的。ZStack-CC2530-2.3.1-1.4.0软件可与TI的SmartRF05平台协同工作,该平台包括MSP430超低功耗微控制器(MCU)、CC2520RF收发器以及CC2591距离扩展器,通信连接距离可达数公里。 Z-Stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和Mesh自组网模块。与z-stack 相比msstatePAN、freakz协议栈都是全部真正的开源的,它们的所有源代码我们都可以看到。但是由于它们没有大的商业公司的支持,开发升级方面,性能方面和z-stack相比差距很大,并没有实现商业应用,只是作为学术研究而已。 还可以配备TI的一个标准兼容或专有的网络协议栈(RemoTI,Z-Stack,或SimpliciTI)来简化开发,当网络节点要求不多在30个以内,通信距离500m-1000m时用simpliciti。 1.2.3IEEE802.15.4标准概述 IEEE802.15.4是一个低速率无线个人局域网(LowRateWirelessPersonalAreaNetworks,LR-WPAN)标准。定义了物理层(PHY)和介质访问控制层(MAC)。 LR-WPAN网络具有如下特点: ◆实现250kb/s,40kb/s,20kb/s三种传输速率。 ◆支持星型或者点对点两种网络拓扑结构。 ◆具有16位短地址或者64位扩展地址。 ◆支持冲突避免载波多路侦听技术(carriersensemultipleaccesswithcollisionavoidance,CSMA/CA)。(mac层) ◆用于可靠传输的全应答协议。(RTS-CTS) ◆低功耗。 ◆能量检测(EnergyDetection,ED)。 ◆链路质量指示(LinkQualityIndication,LQI)。 ◆在2.45GHz频带内定义了16个通道;在915MHz频带内定义了10个通道;在868MHz频带内定义了1个通道。 为了使供应商能够提供最低可能功耗的设备,IEEE(InstituteofElectricalandElectronicsEngineers,电气及电子工程师学会)定义了两种不同类型的设备:一种是完整功能设备(full.functionaldevice,FFD),另一种是简化功能设备

物联网专业需要看的书籍

物联网专业需要看的书籍

课程1、物联网产业与技术导 论使用电子工业出版社《物联网:技术、应用、标准、安全与商业模式》等等教材。在学完高等数学,物理,化学,通信原理,数字电路,计算机原理,程序设计原理等课程后开设本课程,全面了解物联网之RFID、M2M、传感网、两化融合等技术与应用。 课程2、C语言程序设计使用清华大学出版社《C语言程序设计》等教材。物联网涉及底层编程,C语言为必修课,同时需要了解OSGi,OPC,Silverlight等技术标准 课程3、Java程序设计,使用机械工业出版社《Java语言程序设计教程》等教材。物联网应用层,服务器端集成技术,开放Java技术也是必修课,同时需要了解Eclips e,SWT, Flash, HTML5,SaaS等技术 课程4、无线传感网络概论,使 用无线龙通讯科技出版社《现代无线传感器网络概论》、北京航空航天大学出版社《短距离无线通讯入门与实战》等教材。学习各种无线

RF通讯技术与标准,Zigbee, 蓝牙,WiFi,GPR S,CDMA,3G, 4G, 5G等等 课程5、TCP/IP网络与协议,《TCP/IP网络与协议》,清华大学出版社,等教材。TCP/IP以及OSI网络分层协议标准是所有有线和无线网络协议的基础,Socket 编程技术也是基础技能,为必修课 课程6、嵌入式系统技,《嵌入式系统技术教程》,人民邮电出版社等教材。嵌入式系统是物联网感知层和通讯层重要技术,为必修课 课程7、传感器技术概论,《传感器技术》,中国计量出版社,等教材。物联网专业学生需要对传感器技术与发展,尤其是在应用中如何选用有所了解,但不一定需要了解传感器的设计与生产,对相关的材料科学,生物技术等有深入了解 课程8、RFID技术概论,《射频识别(RFID)技术原理与应用》,机械工业出版社,

ZigBee技术网络层的路由算法分析(1).

ZigBee技术网络层的路由算法分析(1) 摘要基于IEEE802.15.4标准的 ZigBee网络是一种具有强大组网能力的新型无线个域网,其中的路由算法是研发工作的重点。本文介绍了IEEE802.15.4标准及ZigBee规范的协议模型,重点研究了ZigBee协议网络层的路由算法,分析了Tree路由及Z-AODV路由算法,在此基础上提出了ZigBee网格型网络中基于数据特性的路由选择机制,该机制在网络性能和低功耗方面有明显的优势,并且可以平衡节点能量,最后简单介绍了ZigBee节点的硬件实现。 关键词 ZigBee协议;网络;IEEE802.15.4;路由算法;Tree路由;Z-AODV路由 1 概述 ZigBee技术是由英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦等公司在2002年10月共同提出设计研究开发的具有低成本、体积小、能量消耗小和传输速率低的无线通信技术。 2000年12月,IEEE 802 无线个域网(WPAN,Wireless Personal Area Network)小组成立,致力于WPAN无线传输协议的建立。2003年12月,IEEE正式发布了该技术物理层和MAC层所采用的标准协议,即IEEE 802.15.4协议标准,作为ZigBee技术的网络层和媒体接入层的标准协议。2004年12月,ZigBee联盟在IEEE 802.15.4 定义的物理层(PHY)和媒体接入层(MAC)的基础上定义了网络层和应用层,正式发布了基于IEEE 802.15.4的ZigBee标准协议。 2 网络层的研究 ZigBee技术的体系结构主要由物理层(PHY)、媒体接入层(MAC)、网络/安全层以及应用框架层组成,各层之间的分布如图1所示。 图1 ZigBee技术协议组成 PHY层的特征是启动和关闭无线收发器、能量检测、链路质量、信道选择、清除信道评估(CCA)以及通过物理媒体对数据包进行发送和接收。MAC 层可以实现信标管理、信道接入、时隙管理、发送确认帧、发送连接及断开连接请求,还为应用合适的安全机制提供一些方法。它包含具有时间同步信标的可选超帧结构,采用免碰撞的载波侦听多址访问(CSMA-CA)。安全层主要实现密钥管理、存取等功能。网络层主要用于ZigBee的LR-WPAN网的组网连接、数据管理等。应用框架层主要负责向用户提供简单的应用软件接口(API),包括应用子层支持APS(Application Sub-layer Support)、ZigBee设备对象ZDO (ZigBee Device Object)等,实现应用层对设备的管理,为ZigBee技术的实际应用提供一些应用框架模型等,以便对ZigBee技术的开发应用。 网络层的定义包括网络拓扑、网络建立、网络维护、路由及路由的维护。

ZigBee学习Z-stack外部中断

ZigBee学习Z-stack外部中断 硬件抽象层:就是对硬件层做好了各种初始化,用户不用考虑硬件的初始配置,直接使用即可。 hal_driver.c文件: HalDriverInit():用户可在此函数中添加硬件的初始化操作,如定时器、ADC、DMA、FLASH、AES、LCD、LED、UART、KEY、SPI、HID等(还有用于配置外部中断,类似按键的中断方式查询键值) Hal_ProcessEvent(): 处理HAL发生的事件、如:KEY、LED、电源管理等,用户可以在此添加处理自己的HAL事件,此事件ID必须是唯一的,定义在hal_driver.h中。如:HAL_KEY_EVENT(按键轮询与抖动)、HAL_LED_BLINK_EVENT(LED闪烁)、HAL_SLEEP_TIMER_EVENT(Power saving). Hal_ProcessPoll(): 被osal_start_system()调用,用于HAL_Timer和HAL_UART的事件轮询,关于系统编译连接,只要没有定义相关的宏定义,相应的驱动就不会编译进去,减少代码占用的空间。有以下的宏定义: 具体操作是: Options->C/C++ Options->Preprocessor->Defined Symbols->enter:HAL_XXX=TRUE; when XXX is ADC,UART,LED,LCD,KEY 不编译进代码,只要将其定义成FALSE 如何定做适合自己的HAL处理的程序 ①修改原文件的方式: 1、HAL\include下的头文件应该保留一样。 2、在HAL\Target\hal_xxx.c修改相应的驱动函数,hal_adc.c, hal_key.c, hal_lcd.c, hal_led.c, hal_timer.c, and hal_uart.c 3、硬件驱动配置可以被修改在hal_board_cfg.h ②增加用户自己的目标驱动 1、增加新的头文件,在hal\include 2、在hal\Target\hal_xxx.c添加自己运行函数,xxx为自己的目标 3、如果GPIO有冲突或者没用到,应该保证驱动不被编译,否则后果严重。 4、检查GPIO有没有正确设置或冲突,通过hal_board_cfg.h 5、不想被编译,或者是老的文件,没用到的文件,可以通过选择options->"Exclude form build" 外部中断程序中断处理函数的定义:可以查看 hal\Target\hal_XXX.c\hal_mcu.h HAL_ISR_FUNCTION(f,v) HAL_ISR_FUNCTION (prototype, vector) { /* Do something when this interrupt happens!!! */ }

2020年Zigbee协议栈中文说明免费

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。图1-1给出了这些组件的概况。 1.1.1ZigBee堆栈层 每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。 设备是由模板定义的,并以应用对象(Application Objects)的形式实现(见图1-1)。每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件。 图1-1 zigbe堆栈框架 从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。 端点之间的通信是通过称之为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。图1-1-2就是设备及其接口的一个例子:

图1-1-2 每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。一共有二个特殊的端点,即端点0和端点255。端点0用于整个ZigBee设备的配置和管理。应用程序可以通过端点0与ZigBee 堆栈的其它层通信,从而实现对这些层的初始化和配置。附属在端点0的对象被称为ZigBee设备对象 (ZD0)。端点255用于向所有端点的广播。端点241到254是保留端点。 所有端点都使用应用支持子层(APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZD0)对网络层参数进行配置和访问。 1.1.2 80 2.15.4 MAC层 IEEE 802.15.4标准为低速率无线个人域网(LR-WPAN)定义了OSI模型开始的两层。PHY层定义了无线射频应该具备的特征,它支持二种不同的射频信号,分别位于2450MHz波段和868/915MHz 波段。2450MHz波段射频可以提供250kbps的数据速率和16个不同的信道。868 /915MHz波段中,868MHz支持1个数据速率为20kbps的信道,915MHz支持10个数据速率为40kbps的信道。MAC层负责相邻设备间的单跳数据通信。它负责建立与网络的同步,支持关联和去关联以及MAC 层安全:它能提供二个设备之间的可靠链接。 1.1.3 关于服务接入点 ZigBee堆栈的不同层与802.15.4 MAC通过服务接入点(SAP)进行通信。SAP是某一特定层提供的服务与上层之间的接口。 ZigBee堆栈的大多数层有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。 1.1.4 ZigBee的安全性 安全机制由安全服务提供层提供。然而值得注意的是,系统的整体安全性是在模板级定义的,这意味着模板应该定义某一特定网络中应该实现何种类型的安全。 每一层(MAC、网络或应用层)都能被保护,为了降低存储要求,它们可以分享安全钥匙。SSP是通过ZD0进行初始化和配置的,要求实现高级加密标准(AES)。ZigBee规范定义了信任中心的用

zigbee学习笔记讲解

关于ZIGBEE技术 Zigbee的由来 在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。正因此,经过人们长期努力,Zigbee协议在2003年中通过后,于2004正式问世了。 Zigbee是什么 Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还可以与现有的其它的各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网络。 不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee―基站‖却不到1000元人民币;每个Zigbee 网络节点不仅本身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料; 除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。 每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。 Zigbee技术的应用领域 Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。另外它还可以对局部区域内移动目标例如城市中的车辆进行定位. 通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:1.需要数据采集或监控的网点多; 2.要求传输的数据量不大,而要求设备成本低; 3.要求数据传输可性高,安全性高; 4.设备体积很小,不便放置较大的充电电池或者电源模块; 5.电池供电; 6.地形复杂,监测点多,需要较大的网络覆盖; 7.现有移动网络的覆盖盲区; 8.使用现存移动网络进行低数据量传输的遥测遥控系统。 9.使用GPS效果差,或成本太高的局部区域移动目标的定位应用。 Zigbee 技术的特点 省电:两节五号电池支持长达6个月到2年左右的使用时间。 可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用

从Zigbee协议栈底层添加自己的按键配置

本实验是基于ZStack-CC2530-2.5.1a版本的协议栈来进行实验的,整个实验需要改动 hal_board_cfg.h、hal_board_cfg.h、hal_key.c、hal_key.h和自己定义的Coordinator.c这5个文件。 注意:添加自己的按键时尽量不要修改协议栈里面的按键程序,自己另行添加即可。 1、hal_key.h 在/* Switches (keys) */下面添加自己的按键定义 #define HAL_KEY_SW_8 0x80 图1: ---------------------------------------------------------------------------------------- 2、hal_board_cfg.h 在/* S6 */ #define PUSH1_BV BV(1) #define PUSH1_SBIT P0_1 #if defined (HAL_BOARD_CC2530EB_REV17) #define PUSH1_POLARITY ACTIVE_LOW #elif defined (HAL_BOARD_CC2530EB_REV13) #define PUSH1_POLARITY ACTIVE_LOW #else #error Unknown Board Indentifier #endif 下面模仿/* S6 */下的程序定义自己的按键值: /* S8 */ #define PUSH8_BV BV(4)//修改 #define PUSH8_SBIT P0_4//修改 #if defined (HAL_BOARD_CC2530EB_REV17)

2016年度秋物联网技术基础学习知识本科试卷

2016年秋|物联网技术基础|本科(试卷) 1. 以下关于EPC-96I型编码标准的描述中错误的是( )。 (A) 用来标识是哪一类产品的对象分类字段长度为24位 (B) 用来标识产品是由哪个厂家生产的域名管理字段长度为28位 (C) 用来标识每一件产品的序列号字段长度为36位 (D) 用来标识编码标准版本的版本号字段长度为6位 分值:2 2. 以下关于入侵检测系统特征的描述中,错误的是( )。 (A) 监测和发现可能存在的攻击行为,采取相应的防护手段 (B) 重点评估DBMS系统和数据的完整性 (C) 检查系统的配置和漏洞 (D) 对异常行为的统计分析,识别攻击类型,并向网络管理人员报警 分值:2 3. 基于物联网的智能安防系统不具有的特点是( )。 (A) 覆盖范围更

小 (B) 更实时 (C) 更全面 (D) 更智慧 分值:2 4. 以下关于ADSL接入技术的描述中错误的是( )。 (A) 从互联网下载文档的信道称为上行信道 (B) 数字用户线是指从用户家庭、办公室到本地电话交换中心的一对电话线 (C) 家庭用户需要的下行信道与上行信道的带宽是不对称的 ADSL技术可以最大限度地保护电信运营商在组建电话交换网方面的投 (D) 资 分值:2 5. 以下关于数据增长特点的描述中错误的是( )。 新的数据种类与新的数据来源在不断增 (A) 长

(B) 同一类数据的数据量在快速增长 (C) 数据量单位的增长在加快 (D) 数据增长的速度在加快 分值:2 6. 基于物联网技术的环境监测网络不具有的特点是( )。 监测更加精 (A) 细 监测更加全 (B) 面 监测数据更 (C) 少 监测更加实 (D) 时 分值:2 7. 下面关于智能医疗环境中的医院信息系统的描述中错误的是( )。

zigbee路由算法研究

毕业设计(论文) 题目:zig bee路由算法研究(zigbee R outing algorithm research) 姓名:王龙龙 学号:0904010117 指导教师:郝毫毫(副教授) 专业:测控技术与仪器 班级:测控01 所在学院:电气信息学院 年月

目录 摘要.....................................................................................................II Abstract................................................................................................ III 第一章绪论.......................................................................................... (1) 1.1 XXXX ............................................................................................. . (1) 1.2 XXXX ............................................................................................... .. x 第二章 XXXX .. (x) 2.1 XXXX .............................................................................................. (x) 2.2 XXXX .............................................................................................. (x) 2.3 XXXX .............................................................................................. (x) 第三章 XXXX............................................................................................. ..x 3.1 XXXX .............................................................................................. (x) 3.2 XXXX .............................................................................................. (x) 第四章 XXXX (x) 4.1 XXXX .............................................................................................. (x) 4.2 XXXX .............................................................................................. (x) 4.3 XXXX .............................................................................................. (x) 总结 (x) 致谢 (x) 参考文献 (x) 附录(可选项) (x) 说明:目录中的标题只列出2级标题(如1.1, 2.3等),不要出现3级及以上标题(如 2.1.2等)。章节不宜划分过细,目录内容不宜超过一页。

ZigBee学习电子笔记

第一讲

第二讲 https://www.doczj.com/doc/115294775.html,2530通用I/O口有21个:P0/P1/口个8个;P2口5个,其中,P1_0、P_1 有20mA的驱动能力,其余只有4mA 2.IO口配置相关的寄存器(3个) PxSEL: P0SEL、P1SEL、P2SEL,每个寄存器是1byte,分别用来设定3个口的工作模式。

IO的两种工作模式: 1.普通IO口模式:点灯、监测按键输入 2.片上外设模式:作为串口或者其他非普通IO口 PxDIR:P0DIR/P1DIR/P2DIR,每个寄存器占一个字节,用来设定IO口作为输入还是输出

PxINP:P0INP/P1INP/P2INP: 输入情况下,注意P2INP寄存器后3位的用法(见下图):

输出示例(以P0_0为例): 1)设置P0_0为普通IO口工作模式,非片上外设:P0SEL=0xFE(&11111110) 2)让P0_0作为输出用,非输入监测用:P0DIR=0x01(+ 00000001) 3)输出(如P0_0=0或P0_0=1等)。 输入示例(让P1_2作为输入): 1)设置P1_2为普通IO口工作模式,非片上外设:P1SEL=0xfd(11111011) 2)让P1_2作为输入检测用,非输出用P1DIR=0xfd(11111011) 3)选择上拉、下拉或三态中的一种输入(因为上电的时候寄存器默认为0,所以IO口都默认工作在普通IO口输入、上下拉模式) 4)检测用: If (P1_2= =0 or 1) { } Else { } 总结:由此可见,当芯片上电初始化后,3组IO口默认工作在普通IO口下的输入监测、上拉输入模式。 自己编程示例:

CC2530开发环境搭建与快速入门攻略

OHY研修笔记之“物联网应用技术”01 CC2530单片机开发技术开发环境搭建与快速入门攻略 广东职业技术学院 2017年4月15日

【引言】 在本次笔记中讲述2部分内容: 第一部分:CC2530的开发环境搭建。 第二部分:建立第一个工程-LED跑马灯程序。 通过这两部分的学习,完成掌握了CC2530单片机的开发流程,通过一个LED 跑马灯程序,快速掌握IAR开发环境下CC2530单片机的工程创建、代码编写、程序编译、仿真调试和代码烧写,达到快速入门的目的。 第一部分:CC2530的开发环境搭建 由于CC2530使用的是8051内核,需要选用IAR的IAR Embedded Workbench for 8051版本,作为开发环境。这里需要安装四个内容:IAR软件、CC Debugger 仿真器驱动、烧写软件SmartRF Flash Programmer和Z-Stack协议栈。 一、IAR开发环境的安装 1、打开“IAR-EW8051-8101”文件中的“ew8051”文件夹,运行setup.exe程序,安装8.10.1版本的IAR软件,点击下一步即可License输入界面。 2、因为在要输入License的对话框中要输入序列号,先运行“IAR-EW8051-8101”文件中keygen.exe软件,生成相关的信息。

3、先输入License number,然后下一步。 4、再输入对应的License Key,点击下一步。 5、选择Custom安装。

6、选择所需要安装的组件。 7、如有需要可以更改安装的路径。 8、然后一直下一步到Install,开始安装

zigbee学习笔记3-通信例程之GenericApp

zigbee学习笔记3-通信例程之GenericApp 2011-09-22 11:02 刚入手的朋友,对Z-Stack 非常迷糊的时期,如果能够跑通几个例子、看几个演示,那么可以大大提高学习兴趣;另外如果知道某个例子的大致功能及实现,那么在去看具体实现过程目的性就非常明确。 首先来看看TI 究竟有哪些例子:可以看出其例子是非常丰富的。 GenericApp(设备互相绑定传送信息-hellow world),Location(定位),SampleApp(设备发送和接收LED灯信息),SimpleApp(温度和灯开关,和智能家居结合使用的,have Profile),HomeAutomation(智能家居的应用,have Profile),SerialApp(串行传输的应用),Transmit(发送应用),ZLOAD(协议文件夹中只有Source)。这样看来还是不少的。其中SampleApp 例子已经在前面的学习中有所涉及,可以说前面的所有学习都是基于这个例子的,所以这里就不测试它了。Location 是定位的测试例子,这里我的硬件是不够的,所以也不做测试。其他我都做点测试,能成功的就成功,不能成功的就失败,这个我也没办法。 1、GenericApp 这个实验是两个模块相互绑定后可以对传数据,模块绑定之后,两个模块之间相互传输字符串"Hello World"。 实验说明:首先启动一个网络协调器,协调器如果建立网络成功后,会在LCD 上显示该节点为协调者同时显示网络ID号。然后打开一个终端节点或路由器的电源,此时节点会自动加入网络。加入网络成功后,节点会显示自己的节点类型、网络地址和父节点的网络地址。 节点加入网络成功后,首先把主机模块的摇杆往右拔一下,然后把要绑定模块的RIGHT按一下,如果两边的LED4 都熄灭或是点亮后马上熄灭,表示绑定成功。绑定成功后,两个节点就开始相互定时发送数据,并在对方的LCD屏上显示出来,发送的数据为"Hello World"。此时如果把相互绑定模块中的left 按一下,可以发送Match Description Request命令,对方则显示Match Description Request信息。(以上无线龙手册提供) 2 关键函数分析: 我开始没搞清楚,功能是个啥大约浏览了下,这个例子似乎还与设备的所以还决定看看程序来判断这个例子的功能。绑定有关系,在key control 描述中发现 //***************** Key control**************************// SW2: initiates end device binding //--初始化中断设备绑定 SW4: initiates a match description request //--初始化一个匹配描述请求 2.1 按建处理程序中发现: if ( keys & HAL_KEY_SW_2 ) { HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF ); // Initiate an End Device Bind Request for the mandatory endpoint dstAddr.addrMode = Addr16Bit; dstAddr.addr.shortAddr = 0x0000; // Coordinator ZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(), GenericApp_epDesc.endPoint, GENERICAPP_PROFID, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, FALSE ); } 很明显这里按键2(右键)是发送绑定请求的命令。 if ( keys & HAL_KEY_SW_4 ) { HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF ); // Initiate a Match Deion Request (Service Discovery) dstAddr.addrMode = AddrBroadcast; dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR; ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR, GENERICAPP_PROFID,

zigbee协议栈代码主要名词解释

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. 在网络中发现设备和决定供给哪个应用服务 ZDO同样有责任在网络中发现设备和为他们提供应用服务。 1.1.4 网络拓扑 ZIGBEE网络层支持星状、树状和网状拓扑。在星状拓扑中网络受约束与单个设备,呼叫COORD。COORD有责任建立和维持在网络中发现的设备和其他所有设备,都知道的终端接点直接和COORD 通信。在网状和树状拓扑中,COORD有责任建立一个网络和选择几个关键网络参数,但是网络有有可能直接应用于ZigBee路由器。在树状网络中,利用分等级路由策略完成路由传输数据和控制消息直通网络。树状网络在802.15.4-2003中可以采用信标引导通信。网状网络将允许所有对等网络通信。ZIGBEE 路又将不能在网状网络中发射规则的IEEE802.15.4-2003信标。

相关主题
文本预览
相关文档 最新文档