ZigBee_zstack协议栈_CC2530开发_学习笔记
【无线通信篇Zstack协议栈】CC2530ZigbeeZstack协议栈组网项目及详细讲解篇

【⽆线通信篇Zstack协议栈】CC2530ZigbeeZstack协议栈组⽹项⽬及详细讲解篇物联⽹⽆线通信技术,ZigBee⽆线传感⽹络CC2530最⼤的特点就是⼀个拥有⽆线收发器(RF)的单⽚机,既能实现单⽚机功能,也能实现⽆线传输Zstack协议栈是ZigBee协议栈⾥的翘楚,是ZigBee组⽹的⾸选协议栈项⽬实现功能:l 总共有三个端点,⼀个协调器和两个终端节点l 终端节点1连接DHT11温湿度传感器,定时上传给协调器l 终端节点2连接LED,可以通过协调器按键控制,定时上报LED开关状态l 协调器连接12864 OLED 屏幕,实时显⽰温湿度和LED状态l 协调器可以通过按键控制终端2的LED开关,控制后将会显⽰控制结果扩展功能(当前未实现,可进⼀步开发实现):l 连接协调器串⼝,将终端节点采集的数据通过串⼝发送,PC写上位机实现数据展⽰l 连接WIFI或者4G模块,WIFI模块如ESP8266,实现数据局域⽹⽆线传输或者上传到OneNET、机智云、阿⾥云、⾃⼰开发云服务器等,实现WEB或⼿机APP显⽰和控制。
⼀、项⽬测试(可想⽽知,⼴州的天⽓有多热,39℃了都)实现功能汇总:l 总共有三个端点,⼀个协调器和两个终端节点l 终端节点1连接DHT11温湿度传感器,定时上传给协调器l 终端节点2连接LED,可以通过协调器按键控制,定时上报LED开关状态l 协调器连接12864 OLED 屏幕,实时显⽰温湿度和LED状态l 协调器可以通过按键控制终端2的LED开关,控制后将会显⽰控制结果(⼀) 环境汇总芯⽚:CC2530F256Zstack协议栈:ZStack-CC2530-2.5.1a编程环境:IAR(⼆) 引脚分配协调器:128*64 OLED 0.96⼨屏幕供电:3.3V通信协议:IIC引脚:SDA P0_6SCL P0_7按键:IO:P0_1下降沿触发中断终端1:DHT11:通信⽅式:单总线协议供电:3.3VIO:P0_6终端2:LEDIO:P1_0说明:⾼电平点亮,低电平熄灭⼆、基础认识(⼀) CC2530单⽚机CC2530最⼤的特点就是⼀个拥有⽆线收发器(RF)的单⽚机,既能实现单⽚机功能,也能实现⽆线传输。
ZigBee学习电子笔记

第一讲第二讲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位寄存器。
Z-stack学习笔记

2、何为 IEEE 802.15.4,其特点。 是 ZigBee 无限传感器网络通信标准,具有短距离(10m) ,低功 耗,低速率,低成本的特点,支持单跳星形(10m 内)和多跳对
等(>10m)两种网络拓扑。
3、何为 Z-Stack? Z-Stack 是 TI 公司开发的 ZigBee 协议栈,并且经过了 ZigBee 联 盟的认可而为全球众多开发商所广泛采用。 Z-Stack 实际上是帮助 程序员方便开发 ZigBee 的一套系统, 它采用轮转查询式操作系统, 包括两个主要流程(如图) :系统初始化和执行操作系统。系统初 始化完成后,就进入执行操作系统,并且在其中是一个死循环。 执行操作系统中主函数即为轮询式操作系统的主体部分,也是我 们需要重点开发、 调用、 掌握的部分。 欲知其详, 且听下文分解。
Check for keys */表示检查按键情况。
这个程序到最后,调用了一个重要的函数指针 pHalKeyProcessFunction
这个指针是指向 void OnBoard_KeyCallback ( uint8 keys, uint8 state ) 在“ZMain\OnBoard .c”文件中可以找到。
其中 0 号 endpoint 是用"ZDO"预留的,不能占用。 4. Cluster ID,这个怎么叫呢?叫信息簇 ID 吧。我的理解是,“这是个哪类的信息”,发送 端和接收端一定要对应,但是具体这个“类”怎么分,是我们可以自己决定的。比如说这个例 子,我可以这样定:Cluster ID=1 代表开关一次,Cluster ID=2 代表连续闪烁。或者定 义 Cluster ID=1 代表点对点控制,而 Cluster ID=2 代表全部控制,等等。
二、开发 Z-Stack 须知。 1、ZigBee 的体系,数据及管理的方式和方向。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学习笔记

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),然后开始这个网络.因为协调器是整个网络的开始,他具有网络的最高权限,是整个网络的维护者,还可以保持间接寻址用的表格绑定,同时还可以设计安全中心和执行其他动作,保持网络其他设备的通信。
CC2530实现协议栈网络管理

文件名: 协议栈网络管理ZigBee 协议栈网络管理这章内容主要是对新加入的设备节点的设备管。
我们都知道每个CC2530 芯片出厂时候都有一个全球唯一的32 位MAC 地址。
当时当设备连入网络中的时候,每个设备都能获得由协调器分配的16 位短地址,协调器默认地址(0x0000)。
很多时候网络就是通过短地址进行管理。
注意:1.先安装好PL2302 USB转串口驱动,转备好USB线,连接计算机与接收模块。
2.需要两个或者两个以上模块,分别用于协调器、路由器、终端。
●实验目的:学习如何使用TI提供的协议栈,进行网络管理。
●实验步骤:1.打开工程文件:协议栈的无线数据传输\Projects\zstack\Samples\SampleApp\CC2530DB\ SampleApp,分别选择EndDeviceEB-Pro, RouterEB-Pro,CoordintorEB-Pro,分别下载到三个模块中,如下图所示。
2.连接计算机与协调器模块,可以看到协调器接收到数据。
实验结果:将修改后的程序分别以协调器、路由器、终端的方式下载到3个或以上设备,协调器连接到PC机。
上电后每个设备往协调器发送自身编号,协调器通过串口显示出来。
具体实验:要实现协调器收集数据的功能,可以使用点播方式传输数据,点播地址为协调器地址(0x0000),避免了路由器和终端之间的互传,减少网络数据拥塞。
在samplApp.c中修改发送数据函数为:void SampleApp_SendPointToPointMessage( void ){uint8 device;//设备类型变量if ( SampleApp_NwkState == DEV_ROUTER )device=0x01; //编号1表示路由器else if (SampleApp_NwkState == DEV_END_DEVICE)device=0x02;//编号2表示终端elsedevice=0x03;//编号3表示出错if ( AF_DataRequest( &Point_To_Point_DstAddr, //发送设备类型编号&SampleApp_epDesc,SAMPLEAPP_POINT_TO_POINT_CLUSTERID,1,&device,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ){}}修改完成后系统设备自动检测自己烧写的类型,然后发送对应的编号。
飞比”Zigbee论坛CC2530开发板学习教程

“飞比”Zigbee论坛CC2530开发板学习教程(一)--前言“奥特曼Zigbee读书日记”已经写到第六部分了,首先非常感谢广大网友的支持与长期关注,此系列笔记会继续按照开源的方向进行深入的学习及更新。
同时,应广大网友的要求,也由于CC2530替代CC2430的强劲动力,经论坛管理团队讨论,最终决定在最近的一段时间内暂停“奥特曼Zigbee读书日记”的更新,而推出更偏向于应用,且更贴近市场的教程--“飞比”Zigbee论坛CC2530开发板学习教程。
本教程将着眼于TI公司的新一代 2.4G Zigbee IC-CC2530及最新的Zigbee协议-Zstack2007的应用学习。
所采用的硬件平台为CC2530的官方开发板-CC2530DK (SmartRF05EB)。
少一点炒作,多做一点实事--本站致力于营造一个“潜心学习、踏实做事”的氛围,希望广大Zigbee技术的爱好者、从业者积极参与,一起为中国的“无线单片机”技术献出自己的微薄之力。
[注:本文源自--“飞比”Zigbee论坛,为尊重劳动者成果,如需转载请保留此行,并通知作者]在这一章里,首先介绍下本套教程的整体思路及具体会涉及到的例程。
需要声明的一点是,本教程不是单片机的入门教程,需要读者对单片机及C语言有一定的基础,它关注的是Zigbee协议的基本概念及TI公司公开发行的免费Zigbee协议-Zstack 2007的应用。
首先着眼于TI公司提供的学习例程的讲解,这其中不但包括Zstack 2007的例程,同时会介绍TI的一些简化协议,如Basic RF/SimpliciTI等;然后会将“奥特曼Zigbee读书日记”中介绍的开源协议-MSSTATE LRWPAN,移植到CC2530DK中;最后,我们再来一起进入一个具体的应用领域-智能家居,学习一下TI的专用Zigbee遥控器协议RemoTI。
以下为具体采用的平台及相应的例程:(以下例程很多是CC2430及CC2530中共用的,本教程将同时适用)1、TI Basic RF----Light Switch----PER test2、Zstack 2007-----Sample App-----Generic App-----Home Automation-----Serial App-----Transmit App-----Simple App-----OAD/ENP/ESP等,待定3、MSSTATE LRWPAN ---- 平台移植及Ping Pong例程4、RemoTI声明:本教程中采用的源代码均来源于官方网站,并在此基础上进行修改,本站尊重原作者的劳动,将保留所有源文件的版权信息,并将标明本站进行的修改。
ZigBee协议栈学习总结

ZigBee协议栈学习总结近年来,物联网技术发展迅猛,智能家居、智能工厂等应用逐渐普及。
而ZigBee协议作为一种广泛应用于物联网中的低功耗、近距离、网状网络通信协议,受到了广泛的关注和应用。
在ZigBee技术中,协议栈是关键的一环。
本文将对ZigBee协议栈的相关知识进行总结。
一、ZigBee协议栈概述ZigBee协议栈是指在物联网中实现ZigBee通信的软件系统,它包含了多个层级,每个层级负责不同的功能。
ZigBee协议栈分为应用层、网络层、MAC层和物理层,通过这些层级的协同工作,实现了ZigBee设备之间的通信。
1.1 应用层在ZigBee协议栈中,应用层是最上层的一层,负责定义应用数据的传输方式和应用协议。
应用层通过上层应用与下层协议栈进行交互,将上层应用数据封装为ZigBee命令帧发送给网络层。
1.2 网络层网络层是ZigBee协议栈的中间层,负责实现设备的网络发现、路由选择和网络管理等功能。
网络层通过维护网络拓扑结构,实现了ZigBee设备之间的互联互通。
1.3 MAC层MAC层即介质访问控制层,是介于网络层和物理层之间的一层。
MAC层负责管理无线通信信道,实现了数据的可靠传输和统计信息的收集。
1.4 物理层物理层是ZigBee协议栈的最底层,负责处理物理信号的传输和接收。
物理层根据不同的频段和传输速率,将数字信号转换为模拟信号进行无线传输。
二、ZigBee协议栈的工作原理ZigBee协议栈的各层级通过相互协作,实现了物联网设备之间的通信。
协议栈从应用层开始,将上层应用数据经过各层的处理和封装,最终通过物理层进行无线传输。
在接收端,协议栈将接收到的信号依次经过物理层、MAC层、网络层和应用层的解析,最终将数据传递给上层应用进行处理。
三、ZigBee协议栈的特点和优势ZigBee协议栈相较于其他通信协议具有以下特点和优势:3.1 低功耗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[]添加相应的项就可以了。
转:ZigBeeZ-StackCC2530实现低功耗运行的配置简介

转:ZigBeeZ-StackCC2530实现低功耗运⾏的配置简介设备⽀持低功耗运⾏是ZigBee⽹络的⼀⼤特点,该特性借助CC2530芯⽚能够很好地体现出来。
CC2530芯⽚有五种运⾏模式,分别为主动模式、空闲模式、PM1、PM2和PM3。
主动模式是⼀般运⾏模式;空闲模式除了CPU内核停⽌运⾏外,其他和主动模式⼀样;PM1、PM2、PM3是低功耗运⾏模式,CC2530通过关闭不必要的部分和调整系统时钟来达到低功耗的效果。
PM1:稳压器的数字部分开启,32 MHzXOSC和 16 MHz RCOSC都不运⾏。
32 kHz RCOSC或32 kHz XOSC运⾏。
复位、外部中断或睡眠定时器溢出时系统将转到主动模式。
PM2:稳压器的数字内核关闭。
32 MHzXOSC和 16 MHz RCOSC都不运⾏。
32kHz RCOSC或32 kHz XOSC运⾏。
复位、外部中断或睡眠定时器过期时系统将转到主动模式。
PM3:稳压器的数字内核关闭。
所有的振荡器都不运⾏。
复位或外部中断时系统将转到主动模式。
⼏种运⾏模式的对⽐如下表所⽰:PM2模式⼜叫LITE SLEEP模式,其功耗在毫安级别,多⽤于需要定时唤醒的场合,⽐如周期性地唤醒传感器来进⾏数据的采集。
PM3模式⼜叫做DEEP SLEEP模式,在⼏种运⾏模式中功耗最低,在微安级别,多⽤于远程遥控场合,⽐如使⽤CC2530做⼀个远程遥控器,在没有按键按下时,可使其进⼊PM3模式以减少电能消耗。
Z-STACK提供了两种低功耗运⾏模式,PM2和PM3。
PM2模式可被睡眠定时器,外部中断和复位唤醒,PM3模式可被外部中断和复位唤醒。
在Z-Stack的使⽤⽂档中得知为了使设备能够进⼊睡眠模式,必须满⾜以下的条件:1、通过添加预编译项POWER_SAVING来使能睡眠模式2、ZDO节点描述符指定“在空闲时发送功能是关闭的”,通过在f8wConfig.cfg⽂件中将RFD_RCVC_ALWAYS_ON设置为FALSE来实现。
zstack协议栈知识点总结

zstack协议栈知识点总结1. Z-Stack 协议栈架构Z-Stack 协议栈的架构分为四个层次:应用层、安全层、网络层和 MAC 层。
- 应用层:提供应用程序接口,实现应用层协议的处理和应用功能的实现。
- 安全层:实现对数据的加密和认证,确保通信的安全性。
- 网络层:实现 ZIGBEE 网络节点的加入、路由和寻径功能。
- MAC 层:实现对无线通信介质的访问和管理,包括 CSMA/CA 协议、ACK 确认和重传机制等。
2. Z-Stack 协议栈特点Z-Stack 协议栈具有以下几个特点:- 符合 ZigBee 标准:Z-Stack 协议栈严格遵循 ZigBee 标准,保证了与其他 ZigBee 设备的兼容性。
- 易用性:Z-Stack 提供了丰富的开发工具和示例代码,开发者可以快速上手进行开发。
- 灵活性:Z-Stack 支持不同的硬件平台和操作系统,适用于各种嵌入式系统。
- 安全性:Z-Stack 提供了多种安全机制,包括 AES 加密、认证和密钥管理,保证了通信的安全性。
3. Z-Stack 协议栈功能Z-Stack 协议栈实现了 ZigBee 协议的各种功能,包括网络组建、路由管理、数据传输和安全保障等。
- 网络组建:Z-Stack 支持 ZigBee 网络的组建和维护,包括协调器、路由器和终端设备的加入和退出。
- 路由管理:Z-Stack 负责 ZigBee 网络中的路由选择和寻径功能,保证数据的可靠传输。
- 数据传输:Z-Stack 实现了数据的传输和协议控制,包括数据帧封装、数据确认和重传机制。
- 安全保障:Z-Stack 提供了数据的加密、认证和密钥管理功能,保证通信的安全性。
4. Z-Stack 协议栈应用Z-Stack 协议栈广泛应用于物联网、智能家居、工业控制和传感器网络等领域,实现设备之间的无线通信和数据交换。
- 物联网应用:Z-Stack 协议栈可以用于连接各种传感器、执行器和控制器,构建物联网设备之间的通信网。
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技术特点:低功耗、低成本、大容量、可靠、时延短、灵活的网络拓扑结构。
基于CC2530及ZigBee协议栈设计无线网络传感器节点

基于CC2530及ZigBee协议栈设计无线网络传感器节点①章伟聪,俞新武,李忠成(浙江万里学院智能控制研究所,宁波 315101)摘 要:针对智能家居、环境监测等的实际要求,设计了一种远距离通讯的无线传感器节点。
该系统采用集射频与控制器于一体的第二代片上系统CC2530为核心模块,外接CC2591射频前端功放模块;软件上基于ZigBee2006协议栈,在ZStack通用模块基础上实现应用层各项功能。
介绍了基于ZigBee协议构建无线数据采集网络,给出了传感器节点、协调器节点的硬件设计原理图及软件流程图。
实验证明节点性能良好、通讯可靠,通讯距离较TI第一代产品有明显增大。
关键词:传感器节点;CC2530;ZigBee;CC2591;无线传感器网络Wireless Network Sensor Node Design Based on CC2530 and ZigBee Protocol StackZHANG Wei-Cong, YU Xin-Wu, LI Zhong-Cheng(Intelligent Control Research Institute, Zhejiang Wanli University, Ningbo 315101, China)Abstract: According to the actual needs of intelligent household, environmental monitoring etc, this paper designed a wireless sensor node of long-distance communication system. This system used the second SoC CC2530 set in RF and controller chips as the core module and externally connected with CC2591 RF front-end power amplifier module. Based on ZigBee2006 in software agreement stack, it realized each application layer function based on ZStack. It also introduced wireless data acquisition networks based on the ZigBee agreement construction, and has given the hardware design schematic diagram and the software flow chart of sensor node, synchronizer node. The experiment proved that the node is good in performance and the communication is reliable. The communication distance has increased obviously compared with the first generation TI product.Key words: sensor node; CC2530; CC2591; wireless sensor networksZigBee[1]是一种新兴的短距离、低速率无线网络技术,是基于IEEE802.15.4无线标准研制开发的,关于组网、安全和应用软件的技术标准。
基于CC2530及ZigBee协议栈设计无线网络传感器节点

基于CC2530及ZigBee协议栈设计无线网络传感器节点基于CC2530及ZigBee协议栈设计无线网络传感器节点近年来,随着物联网技术的快速发展,无线传感器网络(WSN)应用正在不断增加。
无线传感器节点作为WSN的重要组成部分,可以实时监测环境中的各种参数,并将数据传输到数据中心进行处理和分析。
本文将介绍基于CC2530芯片和ZigBee协议栈设计的无线网络传感器节点。
一、CC2530芯片介绍CC2530芯片是德州仪器(Texas Instruments)公司推出的一款低功耗、高性能的无线SoC芯片。
它集成了8051微控制器核心和IEEE 802.15.4无线收发器,提供丰富的外设接口,并支持多种通信协议,如ZigBee、RF4CE、ZigBee RF4CE、SP100和6LoWPAN。
其低功耗特性使其成为设计低功耗无线传感器节点的理想选择。
二、ZigBee协议栈简介ZigBee是一种低功耗、短距离无线通信技术,主要用于自动化控制、智能家居和工业应用。
ZigBee协议栈分为应用层、网络层、MAC层和物理层。
应用层负责定义各种应用场景下的数据交换格式和协议,网络层负责网络拓扑管理和路由选择,MAC层负责对数据进行处理和封装,物理层负责无线信号的发送和接收。
三、无线网络传感器节点设计基于CC2530芯片和ZigBee协议栈,设计了一种低功耗的无线网络传感器节点。
该节点由CC2530芯片、传感器模块、电源管理模块和外设接口组成。
1. CC2530芯片:作为无线SoC芯片,CC2530芯片集成了8051微控制器核心和无线收发器。
8051微控制器核心负责控制节点的各种操作,如数据采集、数据处理和通信控制。
无线收发器负责与其他节点进行通信,通过ZigBee协议栈实现数据的传输和接收。
2. 传感器模块:传感器模块负责实时监测环境中的各种参数,如温度、湿度、光照等。
通过与CC2530芯片的接口进行数据传输,将采集到的数据传送给CC2530芯片进行处理和分析。
ZigBee_zstack协议栈_CC2530开发_学习笔记

CC Debugger设计有自恢复保险丝(200mA)接口说明CC Debugger的目标板调试端口引脚说明(1)JTAG 口: 1 GND 2 VCC3 DC4 DD5 CSN6 SCK7 RESET8 MOSI9 MISO10 NC仿真器的功能(1)电路调试,采用 IAR Embedded Workbench 7.51A for 8051;(2)Flash 编程,采用 SmartRF Flash Programmer;(3)RF 测试,采用 SmartRF studio;(4)包探测,采用 SmartRF Packet Sniffer.功能1,2调试和编程的连接方法包探测功能的连接方法注意事项(1)仿真器可为目标板提供最大 3.3V/200mA 电流,若目标板电流较大,请单独供电。
(2)初次上电或者带电插拔目标板,有时会导致无法仿真,按 RESET 键复位即可。
SmartRF Flash Programmer的使用CC DEBUGGER 在 SmartRF Flash Programmer 下的使用连接CC仿真器(1)EB ID<5026>:为 CC DEBUGGER 的设备 ID 号,(2)Chip type<N/A>:表明未连接或未检测到目标设备。
system on chip(1)选择Program CCxxxx SoC or MSP430选项(2)选中system on chip选项(3)在Flash 栏内浏览选中想要写入的HEX 文件(4)在“Action”栏里选择“Erase, Program and Verify”(5)点击Perform actionsErase擦除Erase and program擦除、编程Erase, program and verify擦除、编程和验证Append and verify追加 并 校验Verify against hex-file验证 hex文件Read flash into hex-file读flash 到 hex文件Flash lock (effective after program/append):Flash锁(有效程序/追加后):闪存锁Write protect:写保护:对于这些设备可以写保护每一页的flash图像。
CC2530zigbee技术-简介协议栈

CC2530zigbee技术-简介协议栈前⾔说实话,我喜欢⾃⼰的原创,虽然我写得可能简单了,但我觉得⾃⼰在写博客的路途上,⼀点⼀点地积累知识,我也借鉴别⼈的东西,特别是在写这篇⽂章时所使⽤的是markdownpad2写的,原来我根本就不知道还有这个玩意,所以相信在园⾥的朋友们都会⽀持的,如果您知道了,或者懂了,就默默地⽆视⼩弟我写的博客,如果没有接触过呢,嘿嘿,我们⼀起研究进步!协议栈TI公司很⽜,这是给我的感觉,它能把那些复杂的东西全部写好,就提供⼀些API来给我们使⽤,让⽤户更加⽅便,这个是我对它崇拜的地⽅,好了,不说废话了,进⼊正题。
下⾯就是协议栈的框图了那么所谓的协议栈指的就是TI公司的Z-STACK,不得不说⼈们的智慧是⽆穷的,这样⼀个基于8051的芯⽚在上⾯写了⼀个操作系统其名为Z-stack采⽤的⽅法是任务轮回的⽅法,⽽且任务ID值越⼩,优先级越⾼!我们使⽤IAR打开TI公司提供的example 路径如下:C:\Texas Instruments\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples\SampleApp\CC2530DB可以看到⾮常清楚的⼯作⽬录。
协议栈函数解析⾸先我们找到Zmain⽬录下的zmain.c,找到int main();没错,这就是传说中的主函数int main( void ){osal_int_disable( INTS_ALL );//关闭所有的中断HAL_BOARD_INIT();//初始化时钟信号zmain_vdd_check();//检查芯⽚电压InitBoard( OB_COLD );//初始化IO LED TIMERHalDriverInit();//初始化芯⽚各硬件模块osal_nv_init( NULL );//初始化flashZMacInit();//初始化MAC层zmain_ext_addr();//确定16位地址zgInit();//初始化⾮易失变量#ifndef NONWKafInit();#endifosal_init_system();//初始化操作系统osal_int_enable( INTS_ALL );//使能全部中断InitBoard( OB_READY );//初始化按键zmain_dev_info();//显⽰设备信息#ifdef LCD_SUPPORTEDzmain_lcd_init();//在LCD上显⽰设备信息#endif#ifdef WDT_IN_PM1WatchDogEnable( WDTIMX );#endifosal_start_system(); // No Return from here 进⼊操作系统后不再返回return 0;}main()哈哈,我已经做了翻译⼯作,但是不⼀定是对的,因为毕竟是站在我的理解上写的!上述的代码基本上都是⼀些初始化的代码,⼀个硬件的启动必须要有各种各样的设定才⾏!下⾯分两个来讲,主要是讲两个函数:osal_init_system()和osal_start_system(),因为这两个函数可是重中之中啊!osal_init_system()函数分析在IAR中go to defintion就可以了,当然你也可以在OSAL.c这个⽂件中找到:uint8 osal_init_system( void ){// Initialize the Memory Allocation Systemosal_mem_init();//初始化内存分配系统// Initialize the message queueosal_qHead = NULL;//初始化消息队列// Initialize the timersosalTimerInit();//初始化定时器// Initialize the Power Management Systemosal_pwrmgr_init();//初始化店⾥管理系统// Initialize the system tasks.osalInitTasks();//初始化系统任务// Setup efficient search for the first free block of heap.osal_mem_kick();return ( SUCCESS );}osal_start_system()函数分析同样的道理,你也可以找到这个函数的定义void osal_start_system( void ){#if !defined ( ZBIT ) && !defined ( UBIT )for(;;) // Forever Loop永远循环#endif{uint8 idx = 0;osalTimeUpdate();//扫描哪个事件被触发了,然后置相应的标志位Hal_ProcessPoll(); // This replaces MT_SerialPoll() and osal_check_timer().do {if (tasksEvents[idx]) // Task is highest priority that is ready.{break; //得到待处理的优先级最⾼的是任务ID idx}} while (++idx < tasksCnt);if (idx < tasksCnt){uint16 events;halIntState_t intState;HAL_ENTER_CRITICAL_SECTION(intState);//进⼊临界区进⾏保护events = tasksEvents[idx];//提取需要处理的事件tasksEvents[idx] = 0; // Clear the Events for this task.清楚事件HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区保护events = (tasksArr[idx])( idx, events );//通过指针调⽤处理函数HAL_ENTER_CRITICAL_SECTION(intState);//进⼊临界区tasksEvents[idx] |= events; // Add back unprocessed events to the current task.保存未处理的函数 HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区}#if defined( POWER_SAVING )else // Complete pass through all task events with no activity?//所有任务是否全部完成{osal_pwrmgr_powerconserve(); // Put the processor/system into sleep//挂起系统使之进⼊睡眠状态 }#endif}}相信看了上⾯的注释,对于zigbee的z-stack有了⼀定的了解了吧!总结我们可以得出以下的⼤致流程:。
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

已入门选手进一步学习的重点我发现最近群里很多人已经可以算是大致入门了,能够在原有例子的基础上进行一些简单工作,实现数据传输。
但是我也发现很多人开始把精力投入到钻研协议栈代码细节上面去了,实际上这种学习方式是有问题的。
第一:如果从应用的角度看,协议栈的一些实现细节是没有必要钻研的,这就好比是现在的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是你进一步学习所应该深入认识的。
Z-Stack协议栈的简单总结

Z-Stack协议栈的简单总结Z-Stack 是通过UCOS来实现的,其中协议的各个层被分配一个任务,共有如下任务:Hal、mac、nwk、MT(Monitor Test简称)、APS、ZDApp和SampleApp。
Hal、mac、nwk、APS就不介绍了(主要完成zigbee协议的各个层)。
TI为了使用户调试方便而编写一些上位机软件(如SmartRF04Prog、sniffer、Z-Location Engine等),而MT(Monitor Test)是用来完成协议栈与这些上位机软件的通信的,通过串口来完成,因而MT中主要完成的是串口指令的收发机解析,并经该消息发给OS,由操作系统对这些消息进行处理。
ZDApp(ZigBee Deviece Application)是zigbee设备的应用层处理函数,可以通过这层的函数来与网络层和APS层进行通信,如完成组网,加入网络,端点匹配、绑定等。
SampleApp是用户完成的部分(也分配了一个任务),主要在这里完成自己的编程设置。
OS中每个任务都有一个任务初始化函数和任务事件处理回调函数,如SampleApp_Init( taskID )和SampleApp_ProcessEvent( byte task_id, UINT16 events )。
如果需要深入了解任务的工作机制,如任务管理、调度任务的同步与通信等,可以去看uC/OS得相关资料。
而任务下面又划分很多事件(可以把事件理解为当前任务下的一些小的任务)。
在OS中事件是为了实现任务间的同步与通信的,如信号量、消息邮箱和消息队列。
单片机基础对于OS不胜了解的可以这样来理解,自己当初也是这样来理解的(可以把任务中的发送事件理解为置标志位,在本任务或另一个任务中查询标志位来完成相应操作)在uCOS中任务和事件的处理是由操作系统来完成的,任务按照优先级来调度,每个任务有自己的任务控制块来决定和记录任务的执行情况,而事件有事件控制块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CC Debugger
设计有自恢复保险丝(200mA)
接口说明
CC Debugger的目标板调试端口引脚说明
(1)JTAG 口: 1 GND 2 VCC
3 DC
4 DD
5 CSN
6 SCK
7 RESET8 MOSI
9 MISO10 NC
仿真器的功能
(1)电路调试,采用 IAR Embedded Workbench 7.51A for 8051;
(2)Flash 编程,采用 SmartRF Flash Programmer;
(3)RF 测试,采用 SmartRF studio;
(4)包探测,采用 SmartRF Packet Sniffer.
功能1,2调试和编程的连接方法
包探测功能的连接方法
注意事项(1)仿真器可为目标板提供最大 3.3V/200mA 电流,若目标板电流较大,请单独供电。
(2)初次上电或者带电插拔目标板,有时会导致无法仿真,按 RESET 键复位即可。
SmartRF Flash Programmer的使用
CC DEBUGGER 在 SmartRF Flash Programmer 下的使用
连接CC仿真器
(1)EB ID<5026>:为 CC DEBUGGER 的设备 ID 号,
(2)Chip type<N/A>:表明未连接或未检测到目标设备。
system on chip
(1)选择Program CCxxxx SoC or MSP430选项
(2)选中system on chip选项
(3)在Flash 栏内浏览选中想要写入的HEX 文件
(4)在“Action”栏里选择“Erase, Program and Verify”
(5)点击Perform actions
Erase擦除
Erase and program擦除、编程
Erase, program and verify擦除、编程和验证
Append and verify追加 并 校验
Verify against hex-file验证 hex文件
Read flash into hex-file读flash 到 hex文件
Flash lock (effective after program/append):Flash锁(有效程序/追加后):闪存锁
Write protect:写保护:
对于这些设备可以写保护每一页的flash图像。
输入字段”写
保护”应该得到如图4,CC2530写保护。
这个页面写保护
可以给由一个逗号分开。
也可以指定一个范围的页。
Block debug commands (incl. read access)块调试命令(包括读访问)
NB: Cannot "Append and verify" when set!注:不能“Append和验证”当设置!
,请单独供电。
复位即可。