ZigBee学习电子笔记

合集下载

zigbee读书笔记1

zigbee读书笔记1

7. Coordinator, Router 与 End Device 有什么区别? 好本与烂书的区别在于,好书在开头的时候就知道你在想什么,而烂书呢,到读到最后你也 不知道他在想什么。。 。 这个问题的答案在那本英文“大部头”的前面章节: 1.7 Device Types There are two types of devices in an IEEE 802.15.4 wireless network: full-function devices (FFDs) and reduced-function devices (RFDs). An FFD is capable of performing all the duties described in the IEEE 802.15.4 standard and can accept any role in the network. An RFD, on the other hand, has limited capabilities. For example, an FFD can communicate with any other device in a network, but an RFD can talk only with an FFD device. RFD devices are intended for very simple applications such as turning on or off a switch. The processing power and memory size of RFD devices are normally less than those of FFD devices. 1.8 Device Roles In an IEEE 802.15.4 network, an FFD device can take three different roles: coordinator, PAN coordinator, and device. A coordinator is an FFD device that is capable了一天的程序才发现这种想法太急功近利了,有句古话怎么讲来着--“欲速 则不达”,古人的话还是有道理的,于是决定调整思路,放平心态。但是到底从哪开始呢? 国内 Zigbee 方面的书寥寥无几,大多数又总感觉有种功利色彩。罢了,读英文的吧(借机 感谢下我大学良师 albert,亏着他当时的提点,现在读英文书还不算吃力) 。近期准备从两 个 地 方 下 手 , 一 个 是 TI 的 Zstack 手 册 , 另 外 一 个 是 国 外 的 朋 友 推 荐 的 一 本 叫 works.and.Transceivers 的电子书,不想读电子版的,只是在 深圳的书店还没找到。这是一本360多页的大部头,个人比较欣赏国外这种风格的书,往往 深入浅出,让一个没太有基础的人也容易读得懂,不用搞一大堆书去看同一个东西。国内的 大部头也不少,但很多感觉像我小时候写作文的风格--扯远了,抓紧时间吧~~~ --by outman from zigbeetech 2010.4.8 6. cc2430后面的的 DB,BB,EB 代表什么意思? BB: Battery Board DB: Development Board EB: Evaluation Board 分别对应 TI 公司开发的三种板型,其功能按上顺序依次变强。可以参看"Z-Stack User's Guide for CC2430"的图片,以获得直观认识(具体位置在:开始==》程序==》Texas Instruments ==》ZStack-1.4.3-1.2.1) --by outman 2010.4.8

zigbee基础知识笔记.docx

zigbee基础知识笔记.docx

1. 基础知识 (1)1.1IEEE 地址 (1)1.2 簇 (2)1.3 Profile ID (4)1.4网络地址与端点号、节点 (4)1.5 PANID (5)1.6 zigbee设备 (5)2. 绑定机制 (7)2.1 描述符绑定 (7)2.2 设备绑定 (23)1.基础知识1.1IEEE 地址IEEE 地址是 64 位,在设备进入网络之前就分配好了的,应该在全球是唯一的,而网络地址是在网络建立后,设备加入网络时,它的父节点给它分配的,在设备通信时,首先由ieee地址找到设备的网络地址,然后根据网络地址实现设备之间的通信,这样可以减少帧头长度,多传有效数据通俗的说IEEE 地址相当于你的手机号(11 位的那个),短地址就相当于你们公司的小号(3 、4) 位,一个公司的互打电话就用小号噻。

假设你的手机号138xxxxx666 ,这个是唯一的,但你的小号,假设是 666,在你的公司网中是唯一的,但是在另一个网中,可能别人的小号也是666。

1.2 簇簇就是相当于端点房间里面的人,是接收最终的目标。

这东西是 2 个字节编号,在射频发送的时候,必须要指定接收模块的镞,发送模块不需要指定。

首先每一个端点可以看成是一个 1 个字节数字编号的开有一扇门的房间,数据最终的目标是进入到无线数据包指定的目标端点房间,而取无线数据这个相关的代码在任务事件处理函数里,TI 协议栈有那么多的任务事件处理函数,所以必须要指定在哪个任务事件处理函数来取这个无线数据包里面的有用数据。

端点就相当于一个房间的门牌号!!!SimonApp_epDesc.endPoint= 10;//SimonApp_ENDPOINT;此端点编号为10SimonApp_epDesc.task_id = &SimonApp_TaskID;和我们应用层任务挂钩完成了簇信息表的构建,因为簇信息封装在SimonApp_SimpleDesc 里面,这里面却只是起到一个信息表的作用!方便数据到来的时候查询相关信息表!const cId_t SimonApp_ClusterList[SimonApp_MAX_CLUSTERS] ={SimonApp_CLUSTERID};const SimpleDescriptionFormat_t SimonApp_SimpleDesc = {SimonApp_ENDPOINT,// int Endpoint;SimonApp_PROFID,//uint16 AppProfId[2];SimonApp_DEVICEID,//uint16 AppDeviceId[2];SimonApp_DEVICE_VERSION,//int AppDevVer:4;SimonApp_FLAGS,//int AppFlags:4;SimonApp_MAX_CLUSTERS,//byte AppNumInClusters;(cId_t*)SimonApp_ClusterList,//byte *pAppInClusterList;SimonApp_MAX_CLUSTERS,//byte AppNumInClusters;(cId_t*)SimonApp_ClusterList//byte *pAppInClusterList;};接收到数据以后,判断是属于哪一个端点、属于哪一个簇1.3 Profile ID这个是由Zigbee 组织来分配的应用ID 号,比如无线开关用0x0001 ,智能电表用ox0002,万用遥控器用0x0003 等等。

ZigBee无线协议学习笔记

ZigBee无线协议学习笔记

1. ZigBee简介1.1. 概述zigbee协议栈结构由一些层构成,每个层都有一套特定的服务方法和上一层连接,称为协议。

数据实体(data entity)提供数据的传输服务,而管理实体(management entity)提供所有的服务类型。

每个层的服务实体通过服务接入点(service access point SAP)和上一层相接,每个SAP提供大量服务方法来完成相应的操作。

zigbee协议栈基于标准的OSI七层模型,但只是在相关范围来定义一些相应层来完成特定的任务。

IEEE802.15.4-2003标准定义了下面的两个层:物理层(PHY层)和媒介层(MAC层)。

zigbee联盟在此基础上建立了网络层(NWK 层)以及应用层(APL层)的框架(framework)。

APL层又包括应用支持子层(application support sub-layer APS),zigbee的设备对象(zigbee device object ZDO)以及制造商定义的应用对象。

1.2. 缩略语和简称AIB 应用支持层的信息库AF 应用框架APDU 应用支持子层协议数据单元APL 应用层APS 应用支持子层APSDE 应用支持子层数据实体APSDE-SAP 应用支持子层数据实体-服务接入点APSME 应用支持子层管理实体APSME-SAP 应用支持子层管理实体-服务接入点ASDU APS服务数据单元MAC 媒体访问控制MCPS-SAP 媒体访问控制公用部分子层-服务接入点MLME-SAP 媒体访问控制子层管理实体-服务接入点MSG 信息服务类型NHLE 上层实体NIB 网络层信息库NWK 网络OSI 开放式系统互连PAN 个人区域网络PDU 协议数据单元PHY 物理层QOS 服务质量RREP 路由应答RREQ 路由请求SAP 服务接入点ZB ZigBeeZDO ZigBee设备对象1.3. ZDOZigBee设备对象(ZDO)描述了一个基本的功能函数类,在应用对象、设备profile和APS 之间提供了一个接口。

Ti_CC2530之Zigbee学习笔记

Ti_CC2530之Zigbee学习笔记

Ti_CC2530之Zigbee学习笔记网友学习Zigbee的笔记这种学习方法值得借鉴,也值得推广,希望对大家学习Zigbee有所帮助。

硬件参考西安迖泰电子公司的CC2430开发套件。

目录一、重要变量说明 (2)二、重要属性 (9)三、重要结构 (13)四、重要的表 (17)五、ZigBee网络中的设备信息 (18)六、协调器网络的建立 (20)七、输入输出命令的邦定过程及数据发送 (23)一、重要变量说明编译选项:HOLD_AUTO_START --网络设备启动应用程序NV_RESTORE --在NV中保存网络状态RTR_NWKHAL_ADC --是否自持ADCHAL_DMA --是否支持DMAHAL_AESHAL_LCDHAL_LEDHAL_UARTHAL_KEYZDO_MGMT_NWKDISC_REQUEST --请求目标设备执行网络扫描ZDO_MGMT_NWKDISC_RESPONSE --响应目标设备执行网络扫描ZDO_MGMT_LQI_REQUEST --请求目标设备相邻设备列表ZDO_MGMT_LQI_RESPONSE --响应目标设备相邻设备列表ZDO_MGMT_RTG_REQUEST --请求目标设备路由表ZDO_MGMT_RTG_RESPONSEZDO_MGMT_BIND_REQUEST --请求目标设备绑定表ZDO_MGMT_BIND_RESPONSEZDO_MGMT_LEAVE_REQUEST --请求目标设备离开网络ZDO_MGMT_LEAVE_RESPONSEZDO_MGMT_ JOINDIRECT_REQUEST --请求目标设备直接连接另一个设备 ZDO_MGMT_ JOINDIRECT_RESPONSEZDO_MGMT_PERMIT_JOIN_RESPONSE --响应设备允许或拒绝连接宏:MAC_RADIO_TURN_OFF_POWER --关闭无线电MAC_RADIO_TURN_ON_POWER --打开无线电返回值状态:ZSUCCESS 0INVALID_TASK 1MSG_BUFFER_NOT_AVAIL 2INVALID_MSG_POINTER 3INVALID_LEN 4INVALID_SENDING_TASK 5INVALID_DESTINATION_TASK 6INVALID_EVENT_ID 7INVALID_TIMEOUT_VALUE 8INVALID_INTERRUPT_ID 9INVALID_ISR_PTR 10INVALID_TASK_TABLE 11NO_TIMER_AVAIL 12INVALID_MSG_LEN 13NOT_READY 14NV_ITEM_UNINIT 15NV_OPER_FAILED 16INVALID_MEM_SIZE 17NV_BAD_ITEM_LEN 18全局状态值:ZSuccess --成功 0x00 ZFailure --失败 0x01 ZInvalidParameter --无效参数 0x02 ZStack状态值:ZMemError --系统内存错误 0x10 ZBufferFull --缓冲区满 0x11 ZUnsupportedMode --未支持的模式 0x12 ZMacMemError --MAC 内存错误 0x13 ZSapiInProgress 0x20 ZSapiTimeout 0x21 ZSapiInit 0x22 APS层状态值:ZApsFail --失败 0xb1 ZApsTableFull --表满 0xb3ZApsIllegalRequestZApsInvalidBinding --绑定无效 0xb4 ZApsUnsupportedAttrib --未支持的属性0xb5 ZApsNotSupported --未支持0xb6 ZApsNoAck --没有Ack 0xb7 ZApsDuplicateEntry --条目重复 0xb8 ZApsNoBoundDevice --没有绑定设备 0xb9 SEC层状态值: ZSecNoKey --没有密钥0xa1 ZSecOldFrmCount 0xa2 ZSecMaxFrmCount --最大帧数 0xa3 ZSecCcmFail 0xa4 NWK层状态值:ZNwkInvalidParam --无效参数 0xc1 ZNwkInvalidRequest --无效请求0xc2 ZNwkNotPermitted --不允许0xc3 ZNwkStartupFailure --启动失败 0xc4 ZNwkAlreadyPresent --已存在0xc5 ZNwkSyncFailure --同步失败0xc6 ZNwkTableFull --表满0xc7 ZNwkUnknownDevice --未知设备0xc8 ZNwkUnsupportedAttribute --未支持的属性0xc9 ZNwkNoNetworks --没有网络 0xca ZNwkLeaveUnconfirmed --离开未确认 0xcb ZNwkNoAck --没有ACK 0xcc ZNwkNoRoute --没有路由 0xcd MAC层状态值:ZMacSuccess --成功 0x00 ZMacBeaconLoss --信标丢失 0xe0 ZMacChannelAccessFailure 0xe1 ZMacDenied 0xe2 ZMacDisableTrxFailure 0xe3ZMacFailedSecurityCheck 0xe4 ZMacFrameT ooLong 0xe5 ZMacInvalidGTS 0xe6 ZMacInvalidHandle 0xe7 ZMacInvalidParameter 0xe8 ZMacNoACK 0xe9 ZMacNoBeacon 0xea ZMacNoData 0xeb ZMacNoShortAddr 0xec ZMacOutOfCap 0xed ZMacPANIDConflict 0xee ZMacRealignment 0xef ZMacTransactionExpired 0xf0 ZMacTransactionOverFlow 0xf1 ZMacTxActive 0xf2 ZMacUnAvailableKey 0xf3 ZMacUnsupportedAttribute 0xf4 ZMacUnsupported 0xf5 组件标示:COMPID_OSAL 0COMPID_MTEL 1COMPID_MTSPCI 2COMPID_NWK 3COMPID_NWKIF 4COMPID_MACCB 5COMPID_MAC 6COMPID_APP 7COMPID_TEST 8COMPID_RTG 9COMPID_DATA 11测试中的组件标示:COMPID_TEST_NWK_STARTUP 20COMPID_TEST_SCAN_CONFIRM 21COMPID_TEST_ASSOC_CONFIRM 22COMPID_TEST_REMOTE_DATA_CONFI23RM系统事件:SYS_EVENT_MSG系统消息:SPI_INCOMING_ZTOOL_PORT 0x21SPI_INCOMING_ZAPP_DATA 0x22MT_SYS_APP_MSG 0x23MT_SYS_APP_RSP_MSG 0x24AF_DATA_CONFIRM_CMD 0xFDAF_INCOMING_MSG_CMD 0x1AAF_INCOMING_KVP_CMD 0x1BAF_INCOMING_GRP_KVP_CMD 0x1CKEY_CHANGE 0xC0ZDO_NEW_DSTADDR 0xD0ZDO_STATE_CHANGE 0xD1ZDO_MATCH_DESC_RSP_SENT 0xD2ZDO_CB_MSG 0xD3为用户所保留的消息id(用户自定义)0xE0—0xFF各层簇定义:APP层簇ID void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) SAMPLEAPP_MAX_CLUSTERS --最大簇数 2SAMPLEAPP_PERIODIC_CLUSTERID --一个簇标识的周期 1SAMPLEAPP_FLASH_CLUSTERID --一个簇标识的闪烁 2ZDO层簇ID void ZDApp_ProcessMsgCBs( zdoIncomingMsg_t *inMsg ) ZDO, _RESPONSE_BIT_V1_0 --响应位V1.0版本 0x80ZDO_RESPONSE_BIT --响应位 0x8000NWK_addr_req --网络地址请求 0x0000IEEE_addr_req --IEEE地址请求 0x0001Node_Desc_req --节点描述符请求 0x0002Power_Desc_req --电源描述符请求 0x0003Simple_Desc_req --简单描述符请求 0x0003Active_EP_req --动态端点/接口请求 0x0005Match_Desc_req --匹配描述符请求 0x0006NWK_addr_rsp (NWK_addr_req | ZDO_RESPONSE_BIT)IEEE_addr_rsp (IEEE_addr_req | ZDO_RESPONSE_BIT)Node_Desc_rsp (Node_Desc_req | ZDO_RESPONSE_BIT)Power_Desc_rsp (Power_Desc_req | ZDO_RESPONSE_BIT)Simple_Desc_rsp (Simple_Desc_req | ZDO_RESPONSE_BIT)Active_EP_rsp (Active_EP_req | ZDO_RESPONSE_BIT)Match_Desc_rsp (Match_Desc_req | ZDO_RESPONSE_BIT)Complex_Desc_req --复杂描述符请求 0x0010User_Desc_req --用户描述符请求 0x0011Discovery_Cache_req --缓存发现请求 0x0012End_Device_annce --终端设备性能 0x0013User_Desc_set --设置用户描述符 0x0014Server_Discovery_req --服务发现请求 0x0015Complex_Desc_rsp (Complex_Desc_req | ZDO_RESPONSE_BIT)User_Desc_rsp (User_Desc_req | ZDO_RESPONSE_BIT)Discovery_Cache_rsp (Discovery_Cache_req | ZDO_RESPONSE_BIT) User_Desc_conf (User_Desc_set | ZDO_RESPONSE_BIT)Server_Discovery_rsp (Server_Discovery_req | ZDO_RESPONSE_BIT)End_Device_Bind_req --终端设备绑定请求 0x0020Bind_req --绑定请求 0x0021Unbind_req --解除绑定请求 0x0022Bind_rsp (Bind_req | ZDO_RESPONSE_BIT)End_Device_Bind_rsp (End_Device_Bind_req | ZDO_RESPONSE_BIT) Unbind_rsp (Unbind_req | ZDO_RESPONSE_BIT)Mgmt_NWK_Disc_req --网络扫描请求 0x0030Mgmt_Lqi_req --相邻设备请求Mgmt_Rtg_req ((uint16)0x0032)Mgmt_Bind_req ((uint16)0x0033)Mgmt_Leave_req ((uint16)0x0034)Mgmt_Direct_Join_req ((uint16)0x0035)Mgmt_Permit_Join_req ((uint16)0x0036)Mgmt_NWK_Disc_rsp (Mgmt_NWK_Disc_req | ZDO_RESPONSE_BIT)Mgmt_Lqi_rsp (Mgmt_Lqi_req | ZDO_RESPONSE_BIT)Mgmt_Rtg_rsp (Mgmt_Rtg_req | ZDO_RESPONSE_BIT)Mgmt_Bind_rsp (Mgmt_Bind_req | ZDO_RESPONSE_BIT)Mgmt_Leave_rsp (Mgmt_Leave_req | ZDO_RESPONSE_BIT) Mgmt_Direct_Join_rsp (Mgmt_Direct_Join_req | ZDO_RESPONSE_BIT) Mgmt_Permit_Join_rsp (Mgmt_Permit_Join_req | ZDO_RESPONSE_BIT) 各层事件定义:MAC回调事件:void MAC_CbackEvent(macCbackEvent_t *pData)MAC_MLME_ASSOCIATE_IND --关联指示 1 MAC_MLME_ASSOCIATE_CNF --关联确认 2 MAC_MLME_DISASSOCIATE_IND --取消指示 3 MAC_MLME_DISASSOCIATE_CNF --取消确认 4 MAC_MLME_BEACON_NOTIFY_IND --信标通知指示 5 MAC_MLME_ORPHAN_IND --孤指示 6 MAC_MLME_SCAN_CNF --扫描确认7 MAC_MLME_START_CNF --开始确认8 MAC_MLME_SYNC_LOSS_IND --同步损失指示9 MAC_MLME_POLL_CNF --轮询确认10MAC_MLME_COMM_STATUS_IND --通信状态指示11 MAC_MLME_POLL_IND --轮询指示16 MAC_MCPS_DATA_CNF --数据确认 12 MAC_MCPS_DATA_IND --数据指示 13MAC_MCPS_PURGE_CNF --清除确认 14 MAC_PWR_ON_CNF --上电确认 15 ZDO层任务事件: UINT16 ZDApp_event_loop( byte task_id, UINT16 events )ZDO_NETWORK_INIT --设备初始化 0x0001ZDO_NETWORK_START --开始网络 0x0002ZDO_DEVICE_RESET --设备复位 0x0004ZDO_COMMAND_CNF --命令确认 0x0008ZDO_STATE_CHANGE_EVT --更新网路状态 0x0010ZDO_ROUTER_START --开始路由器 0x0020ZDO_NEW_DEVICE --新设备事件 0x0040ZDO_DEVICE_AUTH --设备确认事件 0x0080ZDO_SECMGR_EVENT --安全管理事件 0x0100ZDO_NWK_UPDATE_NV --保存网络状态 0x0200ZDO_FRAMECOUNTER_CHANGE --帧计数器改变 0x0400 二、重要属性获取或设置标准PIB MAC_MlmeGetReq() //获取属性值MAC_MlmeSetReq() //设置属性值MAC_ACK_WAIT_DURATION --等待确认帧的最大符号数MAC_ASSOCIATION_PERMIT --协调器允许关联MAC_AUTO_REQUEST --自动发送一个数据请求MAC_BATT_LIFE_EXT --启用电池寿命MAC_BATT_LIFE_EXT_PERIODSMAC_BEACON_PAYLOAD --信标负载内容MAC_BEACON_PAYLOAD_LENGTH --信标负载字节长度MAC_BEACON_ORDER --协调传送信标时间间隔MAC_BEACON_TX_TIMEMAC_BSN --信标帧序列号MAC_COORD_EXTENDED_ADDRESS --协调器扩展地址MAC_COORD_SHORT_ADDRESS --协调器短地址MAC_DSN --命令帧序列号MAC_GTS_PERMIT --PAN协调器接收GTS请求MAC_MAX_CSMA_BACKOFFS --消除信道之前,CSMA尝试抵消数 MAC_MIN_BE --如果设置为0,禁用避免碰撞MAC_PAN_ID --PAN标示符,0xFFFF不被关联MAC_PROMISCUOUS_MODE --mac处于混乱模式MAC_RX_ON_WHEN_IDLE --空闲周期启用接收器MAC_SHORT_ADDRESS --设备短地址,协调器在MAC_StartReq()设置,其他设备在关联中分配,MAC_ADDR_USE_EXT --设备没有短地址关联。

ZIGBEE学习笔记

ZIGBEE学习笔记

1、ZigBee协议栈:ZigBee协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。

协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来遵循和使用这个协议的,进而实现无线数据收发。

2、ZigBee无线网络协议层的架构:ZigBee协议分为两部分---IEEE 802.15.4和ZigBee,IEEE 802.15.4定义了PHY (物理层)和MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。

ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供API(应用层),用户可以直接调用---学习Zigbee就是熟悉API和学习如何使用对应函数。

3、用户实现简单的无线数据通信的一般步骤:---组网:调用协议栈的组网函数、加入网络函数,实现网络的建立与节点的加入。

---发送:发送节点调用协议栈的无线数据发送函数,实现无线数据发送。

---接收:接收节点调用协议栈的无线数据接收函数,实现无线数据接收。

4、Z-STACK协议栈工作原理:Z-stack可以看做是一个小型的操作系统(本质是大型的程序),用于实现底层和网络层的内容,Z-stack将复杂部分屏蔽掉。

用户通过API函数就可以轻易用ZigBee。

5、协调器、路由器、终端:Router----路由器Coodinator----协调器EndDevice----终端设备(1)协调器:(coordinator)每个zigbee网络只允许有一个zigbee的协调器,协调器首先选择一个信道和网络标识(PAN ID),然后开始这个网络.因为协调器是整个网络的开始,他具有网络的最高权限,是整个网络的维护者,还可以保持间接寻址用的表格绑定,同时还可以设计安全中心和执行其他动作,保持网络其他设备的通信。

zigbee学习笔记(一)

zigbee学习笔记(一)

Zstack的任务处理机制Zmain.c中初始化部分重点掌握:osal_init_system(); //初始化操作系统osal_start_system(); //执行操作系统Z-Stack 操作系统初始化中:osalInitTasks(); //初始化系统的任务初始化系统的任务:void osalInitTasks( void ){uint8 taskID = 0;//分配内存,返回指向缓冲区的指针tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);//设置所分配的内存空间单元值为0osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt)); //任务优先级由高向低依次排列,高优先级对应taskID 的值反而小macTaskInit( taskID++ ); //macTaskInit(0),用户不需考虑nwk_init( taskID++ ); //nwk_init(1),用户不需考虑Hal_Init( taskID++ ); //Hal_Init(2),用户需考虑APS_Init( taskID++ ); //APS_Init(3),用户不需考虑ZDApp_Init( taskID++ ); //ZDApp_Init(4),用户需考虑GenericApp_Init ( taskID ); // GenericApp_Init _Init(5),用户需考虑}注明用户不需考虑的任务Ti已经给初始化完成了,在编程的时候可以不予考虑。

我们只需要考虑硬件层和应用层的任务初始化。

如:Hal_Init( taskID++ );ZDApp_Init( taskID++ );GenericApp_Init ( taskID );下面说一下如何在程序中加入自己的任务:在osalInitTasks()和tasksArr[]添加相应的项就可以了。

zigbee学习杂记

zigbee学习杂记

杂记
ZigBee网络层的主要功能是路由,路由算法是它的核心。

目前ZigBee网络层主要支持两种路由算法——树状路由和网状路由。

树状路由(具体可以参考ZigBee的协议栈规范)把整个网络看作是以协调器为根的一棵树,因为整个网络是由协调器所建立的。

协调器的子节点可以是路由器或者是末端节点,路由器的子节点也可以是路由器或者末端节点,而末端节点没有子节点,相当于树的叶子。

树状路由利用了一种特殊的地址分配算法,使用四个参数—深度、最大深度、最大子节点数和最大子路由器数来计算新节点的地址,于是寻址的时候根据地址就能计算出路径,而路由只有两个方向——向子节点发送或者向父节点发送。

树状路由不需要路由表,节省存储资源,但缺点是很不灵活,浪费了大量的地址空间,并且路由效率低。

ZigBee当中还有一种路由方法是网状路由,这种方法实际上是AODV路由算法的一个简化版本,非常适合于低成本的无线自组织网络的路由。

它可以用于较大规模的网络,需要节点维护一个路由表,耗费一定的存储资源,但往往能达到最优的路由效率,而且使用灵活。

除了这两种路由方法,ZigBee 当中还可以进行邻居表路由,其实邻居表可以看作是特殊的路由表,只不过只需要一跳就可以发送到目的节点。

Zigbee学习知识重点

Zigbee学习知识重点

第一章Zigbee概述1、Zigbee是一种新兴的短距离、低速率无线网络技术,主要用于近距离无线连接。

2、Zigbee的特点是功耗低、成本低、时延短、网络容量大、可靠安全。

3、常见的Zigbee芯片有CC243X系列、MC1322X系列和CC253X系列。

4、常见的Zigbee协议栈有非开源(msstatePAN)协议栈、开源(freakz)协议栈和半开源(Zstack)协议栈。

5、Zigbee软件开发平台包括IAR、Zigbee Sniffer、物理地址修改软件以及其它辅助软件。

6、Zigbee硬件开发平台采用Altium Designer进行设计。

7、简述Zigbee的定义。

答:Zigbee是一种近距离、低复杂度、低功耗、低成本的双向无线通讯技术。

主要用于距离短、功耗低且传输速率不高的各种电子设备之间,进行数据传输(包括典型的周期性数据、间歇性数据和低反应时间数据)的应用。

(Zigbee的基础是IEEE802.15.4,但是IEEE802.15.4仅处理低级的MAC(媒体接入控制协议)层和物理层协议,Zigbee联盟对网络层协议和应用层进行了标准化。

)8、简述无线传感器网络与Zigbee之间的关系。

答:从协议标准来讲:目前大多数无线传感器网络的物理层和MAC层都采用IEEE802.15.4协议标准。

IEEE802.15.4描述了低速率无线个人局域网的物理层和媒体接入控制协议(MAC 层),属于IEEE802.15.4工作组。

而Zigbee技术是基于IEEE802.15.4标准的无线技术。

从应用上来讲:Zigbee适用于通信数据量不大,数据传输速率相对较低,成本较低的便携或移动设备。

这些设备只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另外一个传感器,并能实现传感器之间的组网,实现无线传感器网络分布式、自组织和低功耗的特点。

9、Zigbee技术特点:低功耗、低成本、大容量、可靠、时延短、灵活的网络拓扑结构。

ZigBee相关笔记

ZigBee相关笔记

常用控制寄存器相关技巧写1操作数据发送AF-DataRequest函数:afStatus_t AF_DataRequest( afAddrType_t * dstAddr,endPointDesc_t *srcEP,uint16 cID,uint16 le n, uint8 *buf,uint8 *transID,uint8 options,uint8 radius)MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID )解释: (afIncomingMSGPacket_t *)是强制类型转换,SampleApp_TaskID包含的事件ID交给osal_msg_receive函数从消息队列上接受消息,并转换成afIncomingMSGPacket_t结构体类型并赋给MSGpkt遇到问题:1、电脑无法识别板子解决方法:电池组供电,单纯靠USB供电不足2、安装完USB转串口驱动后依然无法识别串口解决方法:去掉仿真器直接将板子与PC相连3、IAR编译问题解决办法:4、功放烧毁原因:上电顺序,先上电再装天线会烧毁功放5、自己定义头文件在IAR中编译时出现“Fatal Error[Pe1696]: cannot open source file”解决方法:在IAR提供的头文件中缺少你定义的,可以使用#include "E:\毕业设计\程序\5883L\5883L test\HMC5883.h",用具体的地址来解决这个问题6、IAR编译时出现“Error[Pe029]: expected an expression”解决方法:定义问题,检查定义语句,#defien定义是不需要加”;”,但是typedef定义是必须要加”;”7、在两个.C文件中使用同一个变量解决方法:方案1:在一个文件中定义全局变量“类型 tmp;”,注意是全局变量。

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.使用现存移动网络进行低数据量传输的遥测遥控系统。

Zigbee读书日记(三)

Zigbee读书日记(三)

Zigbee读书日记(三)前两篇的笔记基本上都在“补课”,对zigbee协议的学习做了铺垫,了解了OSAL系统的基本原理,相信仔细读过前面笔记的同学,现在看起程序来不会那么吃力了吧?--如果真的能达到这个效果,那这两天“挑灯苦读”也算没白费了。

先赞自己一个,也趁机感谢下一直关心、支持我的老婆大人~(背景音:切,这个人真臭P~~~)接下来才回到第一篇笔记里的第1个问题--数据传输是如何实现的?到现在为止,我们还没搞清楚各个设备之间到底是怎么建立连接,怎么“说上话”的--还是个“门外汉”,对于在座的这么喜欢钻研的同学们,被人这样讲,肯定是要丢面子的。

那就让我们一起进入无线电波的美妙世界吧。

(怎么又是这个句型?~)[注:本文源自--“飞比”Zigbee论坛,为尊重劳动者成果,如需转载请保留此行]10. "老王,吃了没?"--中国人老是喜欢用这样的开场白跟别人打招呼(建立连接),那zigbee设备之间呢?他们是怎么建立连接,怎么交谈的呢?(欲知后事如何,且听下回分解。

)--by outman from 2010.4.16 11:08最近杂事太多,一直也没时间更新笔记。

多怀念上学时的时光,有那么多时间可以做自己想做的事情。

实在对不住还在关心我笔记的网友,评书过了12天可能也没人听了,不过我还得硬着头皮写下去,要不然连自己也对不住了。

当决定要做一件事情后,无论多难,我都会坚持下去,因为我相信“坚持就是一种力量”--by outman"老王,吃了没?",多简单的一句话。

之所以我们认为简单,那是因为第一,我们都是人,第二我们都说汉语。

但对机器来说,这个情况这有点复杂了,因为我们要创造它的认知系统,创造它的语言。

所以。

呃。

对不住大家了,这个问题没那么容易说清楚,要分几部分,让我们一点点地共同学习,也许这个问题10要分N个子问题了。

Zigbee及802.15.4是一个比较复杂的系统,TI 2430的IC对我们来说也同样陌生。

zigbee学习笔记

zigbee学习笔记

要试验的:1串口查看数据2用自己的温度传感器看3串口通信,该代码,发送自己想发的数据。

如果修改数据长度看路由代码。

修改路由代码弄串口这边原理。

两头拼。

要解决的问题:1温度采集代码2zigbee传输代码3串口传输数据代码4endpoint与任务的关系。

与按键串口服务关系。

已经解决的问题:1开发的流程2如何添加新任务3osal工作原理,任务调度机制。

难点:几个关键回调函数的理解关键点(总体规划):1、数据采集,这部分的关键是I-WIRE协议的理解。

传感器与51的通信问题。

自己必须先把这部分搞定,现在要解决这个问题,即在TI提供的协议栈的基础上开发自己的应用。

要弄懂温度,湿度,PH值传感器的工作原理,一般采用I-WIRE总线的协议。

2、将数据传输到协调器(控制节点),这部分关键是zigbee通信协议,要充分利用TI的Z-STACK 协议栈来进行二次开发。

主要关注数据的收发模块,数据的格式、特点。

3、数据从协调器传到PC,这部分关键是串口通信协议。

正确的将数据传到上位机。

4、PC控制显示界面,这部分关键是找到关键的API,然后取出自己想要的数据显示。

如果需要存储数据,要操纵数据库,选择数据库。

解决这几个问题这个项目就算完成了。

现在猜想:一、开发一个新的应用应该做什么呢?1获取模板标识符,簇标识符,设备标识符的相关信息,我要进一步了解这两个关键的概念。

2在1基础上我要能注册application,taskID,endpoint,以建立自己应用与操作系统交互。

这是一个关键的点。

二、必须弄懂传感器采集的原理,代码。

三、必须弄懂串口的原理,代码。

关键的概念1、PAN标识符,PAN ID2、模板标识符,profileID3、簇标识符,clusterID 8bit4、节点,ieee地址(扩展地址)网络地址(短地址)64bit/16bit5、端点,endpoint 8bit6、设备标识符,Device Description 16bit7、应用任务ID,taskID8、属性Attribute 16bit9、Taskevents envents 16bit申请到模板标识符后,可以为模板定义设备描述符、簇标识符、服务类型(KVP或MSG)属性(Attribute)。

ZigBee学习笔记

ZigBee学习笔记

1 普通IO口控制硬件连接如图1-1所示[P1_0]->[LED1],[P1_1]->[LED2],[P1_4/CSN]->[LED3],其中P1_4/CSN 引脚与调试器的引脚复用,若使其正常工作,需拔下调试器,使用串口供电。

图1-1 LED硬件连接在进行IO口操作时,首先需要设置IO口的工作方式,常用到PxSEL,PxDIR,PxINP,其中x 为0,1,2,表示0,1,2组IO口。

如图1-2所示,PxSEL设置IO口功能,默认为0,即通用IO;值1表示外设功能。

PxDIR设置输入输出,默认为0,即输入;值1表示输出。

PxINP 设置IO输入时,是否使用芯片内部的上下拉电阻,详细设置可以查询CC2530芯片手册。

图1-2 设置IO口寄存器1.1输出/*程序功能:三个LED灯顺序闪烁*/#include <ioCC2530.h>/* 无符号八位数据类型*/#define uint unsigned int#define uchar unsigned char/* IO端口映射*/#define LED1 P1_0#define LED2 P1_1#define LED3 P1_4/* 函数声明*/void delay(uint); // 延时void initIO(); // 初始化IO口// 入口void main(){initIO();while (1){LED1 = !LED1;delay(20000);LED2 = !LED2;delay(20000);LED3 = !LED3;delay(20000);}}// 延时void delay(uint x){unit i;for (i = 0; i < x; i++);for (i = 0; i < x; i++);for (i = 0; i < x; i++);for (i = 0; i < x; i++);for (i = 0; i < x; i++);}// 初始化IO口void initIO(){P1DIR |= 0x13;LED1 = 1;LED2 = 1;LED3 = 1;}1.2 输入开关S1的硬件连接如图1-3所示,芯片外部另接有上拉电阻,所以P0_1口的输入模式应设置为三态模式,当开关S1断开时,由于上拉电阻的存在,P0_1值为1,当开关S2闭合时,高电压直接到地,所以此时P0_1值为0。

zigbee 网络层学习笔记 (修复的)

zigbee 网络层学习笔记 (修复的)

问题:1、MLME-START.request原语中的BeaconOrder 和 SuperframeOrder 参数值设置为15,表明beaconless操作??????标记:绿色底纹标记的内容为内容多,但一定要好好理解的内容3.3.1 网络层数据服务NLDE-DATA.request3.3.2 网络发现3.3.2.1 NLME-NETWORK-DISCOVERY.request原语支持网络层上层应用该原语来发现在POS范围内正在运行的网络。

Scanchannels:32位,b31~b27保留,b0~b26决定要扫描的信道,1代表扫描,0不扫描ScanDuration:扫描时间3.3.2.2 NLME-NETWORK-DISCOVERY.confirm 原语NetworkDescriptor参数中网络描述符所包含的具体内容。

3.3.3 网络的形成设备的应用层初始化,成为一个新的ZigBee网络协调器3.3.3.1 NLME-NETWORK-FORMATION.request 原语该原语请求设备发起一个新的ZigBee网络并将其自身作为ZigBee协调器3.3.3.2 NLME-NETWORK-FORMATION.confirm 原语3.3.4 允许设备连接3.3.4.1 NLME-PERMIT-JOINING.request 原语仅允许ZigBee协调器或路由器的上层发送该原语任何一个由上层发出的NLME-PERMIT-JOINING.request原语,可以取代所有一切的请求3.3.4.2 NLME-PERMIT-JOINING.confirm原语3.3.5.1 NLME-START-ROUTER.request原语该原语允许一个ZigBee路由器的上层发起路由,路由器的设备接收3.3.5.2 NLME-START-ROUTER.confirm原语3.3.6能量扫描该原语定义了设备的上层如何操作能量扫描3.3.6.1 NLME-ED-SCAN.request原语3.3.6.2 NLME-ED-SCAN.confirm原语3.3.7 设备同网络连接该原语给定了设备同网络连接的方式:(1)通过联合方式请求连接网络(2)直接请求连接网络(3)如果成为孤点设备,请求重新连接网络3.3.7.1 NLME-JOIN.request 原语CapabilityInformation参数的位字段如表3.18所示。

zigbee学习2笔记

zigbee学习2笔记

关于ZIGBEE技术学习Zstack之1Zstack情况:本人采用的是TI的Zstack1.4.3协议,据说这个需要IAR7.30B及以上版本,而目前市面上又没有破解,所以用的人很少,这也是我的机会!呵呵!(傻笑有点多,关键是WORD里没有表情符号,不能正常表达我此时的心情!)正式开始:开始之前在说一句:从TI网站上下载的Zstack的方法就不介绍了。

否则就是从-1开始了而不是从0开始了-----------------我是这么觉得的!第一步:安装Zstack从TI官方网站上下载的Zstack为:swrc072c.zip,我想这个压缩包大家都认识。

解压之后为:ZStack-CC2430-1.4.3.exe文件。

这个安装文件大家都会了。

默认安装路径为:C:\Texas Instruments\ZStack-1.4.3。

安装之后在C:\Texas Instruments\ZStack-1.4.3目录下有各PDF文档为:Getting Started Guide CC2430.pdf,不用多说,这个肯定是要看的。

既然把它放到这么前面,说明它是入门中的入门文档。

下面就简单介绍下这个文档:1、介绍了安装ZStack-CC2430-1.4.3.exe需要的硬件软件条件:需要电脑、操作系统为Windows 2000或Windows XP。

至于更高或更低版本的本人没有尝试。

2、讲了安装流程。

这个有点多余了,这年月哪个有电脑的没有安装上百上千次的软件啊?但是需要强调的是安装路径----默认就好!3、接下来就是让我们看的第一个文档为:Start->Programs->Texas Instruments->ZStack-1.4.3->Z-Stack User’s Guide,既然让我看我就来看看这个文档!!第二步:Z-Stack 用户指导这个文档的更新时间为:2007年12月21日----应该还是比较新的版本。

ZigBee学习笔记CC2530

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_rspZDO_RegisterForZDOMsg( TaskID, Match_Desc_rsp ); //我自己解析Match_Desc_rspZDO_RegisterForZDOMsg( TaskID, Device_annce); //我自己解析Device_annceZDO_RegisterForZDOMsg( TaskID, Active_EP_rsp); //我自己解析Active_EP_rspZDO_RegisterForZDOMsg( TaskID, Simple_Desc_rsp); //我自己解析Simple_Desc_rspZDO_RegisterForZDOMsg( TaskID, NWK_addr_rsp); //我自己解析NWK_addr_rsp在具体应用中,你会根据不同的网络需求去调用很多协议栈的设置好的req和处理rsp消息,那么协议栈都有那些req和rsp是你进一步学习所应该深入认识的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一讲第二讲2530通用I/O口有21个:P0/P1/口个8个;P2口5个,其中,P1_0、P_1有20mA的驱动能力,其余只有4mA2.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口下的输入监测、上拉输入模式。

自己编程示例:第三讲:外部中断检测中断有3级开关:CPU中断总开关------IO口组中断开关---------IO组内某口中断开关中断信号触发类型选择:上升、下降因此,某IO口产生中断需配置:1)CPU中断开关打开;EA=1;2)该口所在的IO组中断打开;P0组的中断开关在IEN1的第5位;P1组的中断开关在IEN2的第4位;P2组的中断开关在IEN2的第1位;3)该口中断打开;P0IEN;8位寄存器。

例如要把P0_2脚的中断开关打开,就要把该寄存器的第2位在程序中置1P1IENP2IEN4)配置中断信号的触发方式PICTL寄存器(8位)中断函数:编程示例:#pragma vector=P0INT_VECTOR__Interrupt void zd(){…...P0IFG=0;//为避免死循环需要先清零,该寄存器有8位,分别为P0组8个脚的标志位,若某个脚产生中断,则该位置1,故出中断函数时要清零。

P0IF=0;//CPU中断标志清零}第四讲:时钟的切换和控制串口时钟:cc2530片内有4个时钟源,芯片工作时必须使用一高一低频进行搭配,使用两个寄存器进行对其配置以及当前状态标志。

配置时钟源:CLKCONCMD命令寄存器:8位寄存器D6位用于高频时钟的选择;D7位用于低频时钟的选择;0表示外部,1表示内部?(视频里)芯片进行无线通信时必须将时钟切换到32MHz的石英晶振上CLKCONSTA除了时钟状态标志外还有时钟分频功能参考代码如下:串口串口0有两组备用位置:备用位置1为P0_2和P0_3;备用位置2为P1_4和P1_5。

到底选择哪组由PERCFG寄存器的第0位配置,0表示备用1,1表示备用2.串口编程示例(部分):第五讲:DIY无线通信模块射频通信注意:1)数据不能直接被发送出去,必须调制到高频载波上发送以提高通信效率,接收设备再解调恢复原始数据。

IEEE802.15.4 ISM信道:2.4GHz频段/915GHz频段/896GHz频段实验中ZigBee大约工作在2.4GHz频段(16个信道)2)什么是信道?2405M 11号信道2410M 12号信道2415M 13号信道…..2480M 26号信道信道一致的两个收发模块才能进行收发!3) 网络地址(网络短地址)、PANID(个域网ID)网络短地址:类似于计算机以太网的局域网,每台计算机都有唯一的一个IP地址。

在ZigBee网络中,每一个通信模块都有一个通信地址,即网络短地址;网络短地址为2个字节。

PANID:为了区分不同的ZigBee网络为每个ZigBee网络标示的ID,2个字节。

4)每一个CC2530芯片上都有一块RAM存放发送和接收数据,缓冲区。

都是128byte。

模块通信编程示例(以视频中板子为例)下图是主程序(主函数):#define SHORT_ADDR0 XREG( 0x6174 )#define SHORT_ADDR1 XREG( 0x6175 )//宏映射到CC2530的RAM上,操作宏就是操作对应地址上的RAM。

发送模块的主函数里做了哪些工作:1)板子上需要用到的资源初始化;2)设置本模块的网络短地址;3)等待按钮中断。

4)发生按钮中断时,在按钮中断里调用void RFSend(char*pstr,char len);函数把数据发送出去射频发送函数的定义如下:以上为数据发送做准备注意:RFST是数据发送寄存器射频接收函数定义如下:数码管配置程序:板子上其他硬件资源配置程序(均已模块化):实验中,使用key3按键控制另一模块的LED灯,该按键的中断程序如下图:其中涉及到该板子系统自定义的宏(如ON_LED0),参考如下:总结:ZigBee既需要软件上(协议栈)的支持,也需要硬件上支持协议就是基于某硬件上数据进行传输的格式第六讲:协议栈之操作系统抽象层OSAL1、操作系统是什么?能干什么事?为什么要在Zigbee里面引入操作系统他和Zigbee是什么关系?Main(){While(){A;B;//新加入B段代码后会对A段代码产生影响。

Delay();//浪费CPU的资源。

及时使用定时器也会使得代码繁琐}}//为了提高代码执行效率、便于管理代码、提高软硬件资源的利用率、提高整个程序效率,便引入了操作系统。

协议栈就是按照一定格式对数据进行打包、拆包以及一些其他功能的程序。

协议栈里面有一个类似操作系统的东西(OSAL)传统程序:Main(){While(){A;//采集数据B;//处理数据C;//报警、打印}}引入操作系统后:A;//采集数据-------模块化一个任务(功能、函数)1(ID)B;//处理数据C;//报警、打印任务的定义:在操作系统中实现某种功能的一块代码任务由一个全局变量来标识ID:任务ID char任务通信:使用全局变量来标记任务执行状态、交流信息如Char a=0来标记任务1正在执行,当为0时,主程序检测到该任务已完成,采取其他操作。

Main(){osal_init_system( )//初始化每一个任务osal_start_system( )}每一个任务:1)其内容由其自己的功能代码定义,代码在任务(处理)函数里,每个函数名是一个16位的地址,2)有自己的任务ID号3)每个任务都有一个用来通信的全局变量,为2个字节,存于16位的数组中,即16位变量tasksEvents[任务ID],如:tasksEvents[0]tasksEvents[1]操作系统初始化函数osal_start_system( )进入之后,是一个死循环:不管得检查每一个任务的通信变量是否为零如果为0,则反复检查,如果不为零,则通过该变量的下标找到其任务ID号码,在通过该ID号从tasksAst找到相应的任务函数进行处理这就是OSAL的运作原理。

事件:按钮按下以后产生中断,中断把某个任务通信的16位变量的某一位置1(还有其他一些操作)消息:向某一个任务发送消息就是把任务通信的16位变量的某一位置1,通信变量里面不同的位代表不同的消息调度:调度某一个任务就是运行某一个任务协议栈置操作系统抽象层按钮实验代码跟踪找到按键中断函数,half_key.c文件,里面的中断代码执行(通信变量置位等)完后发消息给主函数,检测到后进入处理函数。

怎么配置按钮中断、小灯:OnBoard.c一些全局的函数和变量配置在half_key.c配置一些寄存器和宏(注释:Ctrl+K,取消shift+Ctrl+K)OSAL 实际发消息机制1)按钮按下进入half_key.c2)操作系统的函数:(hal_drivers.c )OSAL 是TI 公司开发的一个类似OS 的调度软件,并不是真正的OS 第七讲:协议栈之组网通信在无线传感器网络里,按照其网络功能将ZigBee 模块分为协调器、路由器、终端这三者在网络中的不同点:1) 协调器是WSN 的发起者,创建网络,路由器和终端加入该网络2) 网络地址,加入到协调器所创建的网络里的节点(协调器、路由器、终端)都会获得一个在该网络里唯一的16位地址(2byte ),即网络地址(网络短地址),并且,协调器的网络地址永远是0x0000,其余节点的网络短地址是不确定的3)除了协调器之外,其他节点如要加入网络,需要待加入节点的父节点介绍引入,注意:终端节点是不能充当父节点的,其他均可个域网ID(PANID):区分不同ZigBee网络的网络标识ID4)端点:每个加入到ZigBee网络里的无线模块均是一个节点,每个节点里逻辑上存在若干个端点,模块间的收发消息均需指定一个端点进行,因此节点间通信的本质是端点间的通信,端点中有若干簇,端点号可以不同,但是簇号要一致。

ZigBee网络广播通信配置流程:<协调器>1)接收部分首先定义一个节点,定义一个端点描述符(结构体)簇(数组)ID16位填写端点描述符然后进行注册,注册完成后(端点和任务绑定),端点便可以接收消息了,外部从指定端点发来的数据都会引发对应用户任务的一个消息事件,然后调用任务处理函数,把数据取出来。

在接受处理函数里通过簇来区分2)发送部分首先定义一个节点,定义一个端点描述符(结构体)簇(数组)ID16位填写端点描述符然后进行注册,注册完成后(端点和任务绑定),端点便可以发送消息了。

因为发送的时候确定目标(宿主),所以必须要获取目标的信息,故发送方必须指定接收方的信息,如地址模式(宏),接收方接收端点设计一个系统函数:OSAL发数据的函数:第八讲:。

相关文档
最新文档