![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
zigbee
文章平均质量分 75
cucmakeit
这个作者很懒,什么都没留下…
展开
-
在ZigBee网络中怎么实现节电断电之后重新加入网络
最近遇到个问题,在ZigBee网络中,当终端设备断电之后,发现不能再次加入网络。看到飞比论坛上有朋友遇到过协调器断电之后再上电,终端设备不能入网的问题。其原因如下:网络组好后,将协调器关掉,路由器是不会再加入到重新上电的协调器了。因为PANID不同,路由器已经是一个独立的网络(协调器创建网络后也是一个普通的协路由器了)。如果你再重新给协调器上电,PANID和路由器相同不能建立网络,转载 2013-05-08 01:36:15 · 2728 阅读 · 0 评论 -
关于ZStack-CC2530-2.3.0-1.4.0中simpleApp例子的 终端节点入网以及绑定操作(一)
今天来看一下终端节点是如何加入网络,以及建立绑定操作并发送数据了。首先我们选择工作空间为SimpleSensorEB,好,我们先按一下S2键,因为在SAPI_Init中,我们利用RegisterForKeys( sapi_TaskID);注册了键盘消息,因此我们看一下在sapi如何对按键消息进行响应的。在UINT16 SAPI_ProcessEvent( bytetask_id, UINT16 e转载 2013-04-16 15:23:06 · 2937 阅读 · 0 评论 -
NLME_GetExtAddr函数
以前经常接触(void)NLME_GetExtAddr();这个函数,只知道它是用来获得扩展地址的,但是弄不明白为什么不设一个变量来保存获得的扩展地址呢?经过一番研究,终于弄明白了原因。(void)NLME_GetExtAddr();在调用的时候,会将获得的扩展地址(IEEE地址)保存到saveExtAddr这个数组里,saveExtAddr是在ZDApp.h里定义的:extern uint8转载 2013-04-16 21:52:14 · 3123 阅读 · 0 评论 -
关于ZStack-CC2530-2.3.0-1.4.0中simpleApp例子的 终端节点入网以及绑定操作(三)
上一节讲到终端节点向协调器发送一个绑定请求,在此之前呢,我们需要将协调器的绑定允许,这样终端节点才可以绑定成功~。好,我们选择workplace为simpleCollectorEB,然后我们按下s2键。在sapi层找到处理该事件的函数,找到SAPI_ProcessEvent中的如下代码: case KEY_CHANGE:#if ( SAPI_CB_FUNC ) z转载 2013-04-16 15:25:55 · 2216 阅读 · 0 评论 -
Zstack设置发送功率(CC2530)
RF输出功率可以由RF寄存器TRCTRLL.PA_LEVEL控制,具体设置参数可参考下表: ZStack中有如下定义:const uint8 CODE macRadioDefsTxPowerTable[] ={ /* 0 dBm */ 0x5F, /* characterized as -0.4 dBm in datasheet */ /* -转载 2013-04-23 15:15:55 · 1346 阅读 · 0 评论 -
Zstack设置发送功率(CC2530)
在mac_radio.c中找到macRadioSetTxPower函数,其具体内容复制如下:#ifndef HAL_MAC_USE_REGISTER_POWER_VALUESMAC_INTERNAL_API void macRadioSetTxPower(uint8 txPower){ halIntState_t s;#if defined MAC_RUNT转载 2013-04-23 15:04:03 · 1341 阅读 · 0 评论 -
ZStack API解读
网络层(NWK) 网络层为高层提供下面函数功能: · 网络管理 · 地址管理 · 网络变量和效能函数 除了管理功能外,NWK还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来发送数据。 网络管理 ZStatus_t NLME_NetworkDiscoveryRequest( uint32 ScanChannels,b转载 2013-04-23 15:44:37 · 1689 阅读 · 0 评论 -
zigbee组网流程
第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络//第一步:Z-Stack 由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统 int main( void ) { ....... // Initialize the operating s转载 2013-03-28 19:00:21 · 1921 阅读 · 0 评论 -
Zigbee绑定流程
Zigbee绑定流程(一) 绑定机制允许一个应用服务在不知道目标地址的情况下向对方(应用服务)发送数据包,发送时使用的目标地址将由应用支持子层从绑定表中自动获得,从而能是消息顺利被目标节点的一个或多个应用服务乃至分组接收。注意:由于所有绑定信息都子啊在Zigbee协调器中,所有只有协调器才能接收绑定请求。1.1 绑定方式:Zigbee Device Object Bi转载 2013-03-28 18:58:44 · 1542 阅读 · 0 评论 -
关于ZStack-CC2530-2.3.0-1.4.0中simpleApp例子的 终端节点入网以及绑定操作(四)
上一节看到,协调器向终端节点发送匹配描述符响应,由于终端节点在sapi注册了匹配描述符响应事件,因此,我们可以sapi层看到对此事件的处理:在sapi层找到: UINT16 SAPI_ProcessEvent( byte task_id, UINT16 events ){ osal_event_hdr_t *pMsg; afIncomingMSGPacket_t *pMSG转载 2013-04-16 15:26:42 · 1866 阅读 · 0 评论 -
关于ZStack-CC2530-2.3.0-1.4.0中simpleApp例子的组网
所有的C语言编写的程序,入口函数一定是main函数,首先看一下ZMain.c函数。int main( void ){ osal_int_disable( INTS_ALL); HAL_BOARD_INIT(); zmain_vdd_check(); InitBoard( OB_COLD ); HalDriverInit(); osal_nv_转载 2013-04-16 15:31:03 · 3154 阅读 · 0 评论 -
zstack 串口使用指南
Z-STACK问题之串口结构uartCfg_t乱说typedef struct{uint8 *rxBuf;//接收缓存uint8 rxHead;//头uint8 rxTail;//尾uint8 rxMax;//接收最大长度uint8 rxCnt;//计数uint8 rxTick;//时间uint8 rxHigh;//高位uint8 *txBuf;转载 2013-05-06 16:40:05 · 1254 阅读 · 0 评论 -
ZigBee和ZigBeePro的区别
网络参数ZigBeeZigBee Pro网络容量≥100≥1000大包分割OX跳频OX信道选择XX自动地址管理XX+成组访问转载 2013-04-18 21:48:50 · 2570 阅读 · 0 评论 -
Zigbee地址分配(二)
ZigBee2006和 ZigBee 2007使用分布式寻址方案来分配网络地址。这个方案保证在整个网络中所有分配的地址是唯一的。这一点是必须的,因为这样才能保证一个特定的数据包能够发给它指定的设备,而不出现混乱。同时,这个寻址算法本身的分布特性保证设备只能与他的父辈设备通讯来接受一个网络地址。不需要整个网络范围内通讯的地址分配,这有助于网络的可测量性。假设父设备可拥有的最大子设备数为Cm,其拥原创 2013-04-18 21:41:24 · 2921 阅读 · 0 评论 -
Zigbee地址分配
Zigbee有两种地址分配方式:分布式分配机制和随机分配机制。1.随机分配机制随机分配机制是指当NIB的nwkAddrAlloc值为0x02 时,地址随机选择。在这种情况下nwkMaxRouter就无意义了。随机地址分配应符合NIST测试中的描述 。当一个设备加入网络使用的是Mac地址,其父设备应选择一个尚未分配过的随机地址。一旦设备已分配一个地址,它没有理由放弃该地址,并应予以保转载 2013-04-18 21:25:36 · 1370 阅读 · 1 评论 -
AF_DataRequest zigbee单播、组播、广播
单播:按照协议栈示例GenericApp中的用法:单播有两种方式一种是绑定传输,一种是直接指定目标地址的单播传输按照如下步骤1.设定发送的目标地址GenericApp_DstAddr.addrMode = (afAddrMode_t)AddrNotPresent;GenericApp_DstAddr.endPoint = 0;GenericApp_DstAd转载 2013-04-18 00:43:46 · 3164 阅读 · 1 评论 -
关于ZStack-CC2530-2.3.0-1.4.0中simpleApp例子的 终端节点入网以及绑定操作(二)
当终端节点的ZDO向网络层发送完发现网络请求后,网络层操作完成后会向ZDO层发送发现网络确认,ZDO层利用ZDO_NetworkDiscoveryConfirmCB函数来对确认进行处理。下面看一下该函数的代码: ZStatus_t ZDO_NetworkDiscoveryConfirmCB( uint8ResultCount,转载 2013-04-16 15:24:57 · 2207 阅读 · 0 评论 -
绑定确认过程
注1:本文以ZStack-cc2530-2.3.1-1.4.0里的Collector-Sensor为例。注2:看本文先弄懂绑定基本正确的流程。 传感节点发送网络,并且加入网络后,就会进入MY_FIND_COLLECTOR_EVT事件,注意事件的位运算操作,MY_FIND_COLLECTOR_EVT属于ZB_USER_EVENTS事件中的一种。按如下的流程:zb_HandleOsalEv转载 2013-04-16 21:53:33 · 1461 阅读 · 0 评论 -
ZDO_NetworkDiscoveryConfirmCB
调用NLME_NetworkDiscoveryRequest()时,会执行ZDO_NetworkDiscoveryConfirmCB()这个函数,这个函数比较复杂,我也有很多东西没有弄懂,先做一个记录,以后再慢慢着磨,慢慢加深理解。 #define STACK_PROFILE_MAX 2ZStatus_t ZDO_NetworkDiscoveryConfirmCB( byte Resu转载 2013-04-16 21:50:44 · 1749 阅读 · 0 评论 -
z-stack 数据传输AF层application frame
前面已经把z-stack里面的操作系统的基本原理搞懂了,紧接着的任务就是深入了解,不同设备之间是如何进行数据传输的。(个人习惯喜欢自顶而下的学习方式)AF层是application通过空中向APS层传输数据的接口,它包括从通过aps层和NEW层空中传输数据的功能函数。它也能接收数据。AF层的功能:终端管理和数据收发。在zigbee中每个设备看做一个节点(node),每个node有长地址和短转载 2013-03-28 18:56:05 · 1436 阅读 · 0 评论 -
z-stack halprocesspoll与初始化
在osal的轮训任务只有halprocesspoll()里面只轮询timer和UART,在调试的过程中均没有引起task任务切换的标志出现。因此,鄙人可以大胆的猜想,在操作系统的初始化中是不是设置了定时轮询的任务。先调出所有初始化函数:osal_int_disable( INTS_ALL ); // Initialize HAL HAL_BOARD_INIT(); // Ma转载 2013-03-26 19:18:47 · 1580 阅读 · 0 评论 -
Zigbee任务间传递数据
1.定义任务间传递数据的结构体typedef struct{ osal_event_hdr_t hdr; uint8 mydata;}temp_collect_task_msg; typedef struct{ osal_event_hdr_t hdr; uint8 mydata;}voltage_scan_task_msg;转载 2013-03-26 19:02:25 · 815 阅读 · 0 评论 -
Z-stack 串口的使用
1、定义一个串口初始化函数,函数里面对串口进行配置void initUart(halUARTCBack_t pf){halUARTCfg_t uartConfig;uartConfig.configured = TRUE;uartConfig.baudRate = HAL_UART_BR_38400;uartConfig.flowControl = FALSE;转载 2013-03-26 18:55:59 · 1828 阅读 · 0 评论 -
ZigBee协议栈网络层的研究与实现
1. 引言 随着科学技术的发展,无线技术逐渐取代有线技术,仅支持静态固定拓扑的无线网络也逐渐被支持动态变化拓扑的无线网络取代。在短距离的无线控制、监测、数据传输领域,通用的技术有802.11、蓝牙、HomeRF等,它们各有自己的优势,但仍然存在功耗大、组网能力差等劣势。为了弥补上述协议的不足, ZigBee联盟于2004年12月中旬推出基于IEEE 802.15.4的ZigBee协议栈。 Z转载 2013-03-26 18:43:56 · 2674 阅读 · 0 评论 -
ZIGBEE:Coordinator中的邻居表(Neighbour Table)问题
主节点的邻居表的大小为24,意味着主节点最多只可以有24个子节点(enddevice或router)。在主节点中的JZA_vStackEvent事件中,在网络成功启动时可以设置这样一个参数: JZS_vEnableEDAddrReuse(1800);括号里德参数单位是s,表示的是,如果1800s内子节点还没有跟主节点进行数据通讯,则主节点会认为子节点死掉,接着就会触发JZS转载 2013-03-26 18:41:57 · 2136 阅读 · 0 评论 -
zigbee中profile,cluster的认识
答疑解惑区里面有人问这样的问题,我就把自己的理解发在这里吧。 在zigbee规范中,引入了profile, cluster的概念。具体说来,假设规范一个profile(可以理解成一套规定),这个profile用来规范智能家居领域的相关产品都要满足那些要求,那么home automation public profile就规定了智能家居都要做什么。当然了,你可以自己规范一个自己的pro转载 2013-03-26 18:40:46 · 831 阅读 · 0 评论 -
串口转以太网关键技术
1.概述 串口转以太网目前可以采用串口转以太网模块来实现,变得非常简单易用,但是在该技术中出现的一些新问题、使用误区需要引起注意。串口转以太网并不是简单传输媒介的变化,而是串口到TCP/IP的协议转化。其中关系到的关键技术包括:TCP/IP的工作模式问题、串口分帧技术、9位技术。这里详细分析这些串口转网口的技术。 2.澄清一个概念:到底是串口转以太网还是串口转转载 2013-03-26 18:36:53 · 1049 阅读 · 0 评论 -
zigbee协议重要英文缩写
AIB:应用支持层消息 AF:应用结构 APDU:应用支持层以下数据单位 APL:应用层 APS:应用支持层 APSDE:应用支持层以下数据实体 APSDE-SAP:应用支持层数据实体—服务通道 APSME:应用支持层管理实体 APSME-SAP:应用支持层管理实体—服务通道 ASDU:APS服务数据单位 BRT:广播重试计时器 BTR:广播处理记录转载 2013-03-26 18:35:01 · 1192 阅读 · 0 评论 -
协议栈和OS理解之一
刚开始学习zstack,真的不知如何下手,因为手边还是有不少资料的,于是就这本看看那本看看,但是由于每种资料的思路不一样,因此我看了很久也没搞清楚OSAL的作用,什么是绑定,为什么要添加任务等等,今天看了一本书叫《zigbee技术实践教程》,里面讲操作系统讲的特别通俗易懂。现在我将自己的一些理解写下来吧! 我们都知道,一个项目哪怕一段可运行的程序,开始部分都是在main函数里,当然协转载 2013-03-26 18:32:47 · 988 阅读 · 0 评论 -
ZStack API解读
这个文档是一个关键了,Z-Stack的应用程序接口。我们在程序中基本上应该调用的是这些API吧。ZDO层API实现了所有ZDP(ZigBee Device Profile)定义的命令和回应所需要的函数。ZDP描述了ZDO如何实现普通ZigBee设备的特性,它定义了设备描述和簇,ZDP为ZDO和应用提供一下功能:设备网络建立设备和服务发现节点设备邦定和解邦定服务网络管理服务转载 2013-03-28 21:09:47 · 1018 阅读 · 0 评论 -
ZigBee Z-stack 学习之osal_task
OSAL_TASK是操作系统任务,为了方便用户的设计和更改,TI的工程师将它以源代码的形式给出了。一般操作系统任务的应用命名格式为OSAL_“任务名”.C,例如,OSAL_SampleApp.c,我们建立新的任务时候可以把SampleApp改成我们自己工程的名字。每个子系统(sub_system)在系统中作为一个OSAL TASK来运行。每个应用至少要有一个OSAL TASK,通过调用osal转载 2013-03-26 19:14:52 · 989 阅读 · 0 评论 -
z-stack初始化物理地址
在z-stack提供的实例工程中,接通电源后都会出现LED2闪几下,LED1一直亮着。然后,调试一段时间后我,发现LED1,LED2都不亮了。经过逐步追踪发现,灯闪烁的程序实现在zmain_ext_addr()中,它的代码如下:static ZSEG void zmain_ext_addr( void ){ uint8 i; uint8 led; uint8 tmp;转载 2013-03-26 19:17:21 · 901 阅读 · 0 评论 -
CC2530的ZigBee应用层加入串口
头文件包含:#include "hal_uart.h" 设置串口号:#if !defined( SERIAL_APP_PORT )#define SERIAL_APP_PORT 0#endif 设置波特率:#if !defined( SERIAL_APP_BAUD )#define SERIAL_APP_BAUD HAL_UART转载 2013-03-26 18:53:59 · 1085 阅读 · 0 评论 -
ZigBee系统初始化流程
Osal_int_disable(INTS_ALL):关闭所有中断HAL_BOARD_INIT():初始化系统时钟Zmain_vdd_check():检测芯片电压是否正常Zmain_ram_init();初始化堆栈InitBoard(OB_COLD):初始化LED,配置系统定时器HalDriverInit():初始化芯片各个硬件模块Osal_nv_i转载 2013-03-26 18:46:37 · 2466 阅读 · 0 评论 -
揭开ZigBee 2006协议栈Z-Stack的”开源“面纱
我们都在说ZigBee 2006协议栈Z-Stack是开源的,但是这个协议栈到底是全部开源的,还是只是开源一部分,让我们来揭开它的“开源”面纱? Z-Stack是在2007年4月,德州仪器推出业界领先的ZigBee协议栈,Z-Stack符合ZigBee 2006规范,支持多种平台,Z-Stack包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的ZigBee领域占有很重要地位。配合OS转载 2013-03-26 18:39:37 · 3300 阅读 · 2 评论 -
IAR单步执行按钮功能解释图
转载 2013-03-26 18:38:23 · 2847 阅读 · 0 评论 -
z-stack调试之ZDApp_init
协议栈版本z-stack1.43-1.2.1,SimpleApp本人一般调试程序一般习惯自上而下的原则,在调试z-stack的过程中,在osal_init_system()就卡住了。进入osal_init_system()发现问题出在ZDApp_init().ZDApp_init()是ZD层的初始化函数。首先,我找到了ZD层的定义。ZDO即zigbee device object(zigb转载 2013-03-26 19:16:05 · 1238 阅读 · 0 评论 -
Z-stack数据接收问题
任务接收信息配置在API文档中介绍了这个函数ZDO_RegistorForZDOMsg(),应用程序调用这个函数登记信息就能接收任何无线信息。接收此信息的task可以自己解析数据,也可以调用ZDO里面的解析函数来解析。prototype ZStatus_t ZDO_RegisterForZDOMsg( uint8 taskID, uint16 clusterID )taskID转载 2013-03-26 19:12:27 · 1631 阅读 · 0 评论 -
函数---将十六位的网络地址转换为字符串类型
在做协调器与上位机进行通信时,往往我们想看到网络地址,这时调用NLME_GetShortAddr()就能得到,但是如果想显示出来就没那么容易了,需要用到下面这个函数,而调用方法是:trans_nwkaddr_to_uint8(NLME_GetShortAddr())。void trans_nwkaddr_to_uint8(uint16 x){ //nwk_addr[4];转载 2013-03-26 18:52:06 · 1298 阅读 · 0 评论 -
协议栈中网络拓扑的定义---nwk_globals.h
在nwk_globals.h中修改如下的代码:三种网络模式,星型,树型,和网状// Controls the operational mode of network#define NWK_MODE_STAR 0#define NWK_MODE_TREE 1#define NWK_MODE_MESH 2两种安全模式转载 2013-03-26 18:44:57 · 1708 阅读 · 1 评论