飞比开发板学习教程,经典教程
更新时间:2023-11-09 10:31:01 阅读量: 教育文库 文档下载
- 德飞莱开发板推荐度:
- 相关推荐
“飞比”Zigbee论坛CC2530开发板学习教程(一)--前言
转自飞比bbs 发布: 2010-7-02 17:34 | 作者: outman | 来源: “飞比”Zigbee论坛 由于我们极力倡导“开源Zigbee”,有网友对我们的CC2530开发板项目有所误解,认为我们的开发板是用freakz而不用TI提供的ZStack。实则不然,ZStack是由Zigbee组织认证通过的“Golden unit”Zigbee平台,或者叫Zigbee中的“明星工程”。而且TI公司免费提供了一整套的开发平台及代码。我们没有理由拒绝这么优秀的平台,选择freakz作为补充,只是为了深入到协议层的学习,了解更多的“为什么”。
一个有效的学习过程,应该是由浅入深,由表面到本质。我们将ZStack的学习定位为了解“是什么”和“怎么样”的过程。从上一篇SerialApp的讲解开始,到本篇的GenericApp和后面的SampleApp, TransmitApp与SimpleApp我们都会以了解例程功能,操作与基本原理为主,深入的学习将在“奥特曼Zigbee读书日记”中进行铺开。
[注:本文源自www.feibit.com--“飞比”Zigbee论坛,为尊重劳动者成果,如需转载请保留此行,并通知作者]
其实这几个例程实现了不同的功能,方便了开发者在此基本功能上进行二次开发,以缩短项目周期,一定程序上减轻了Zigbee开发的复杂度。让我们一起来一一进行分析:
例4、ZStack的“Hello, world!”例程――GenericApp
注:本例程位于C:\\Texas Instruments\\ZStack-CC2530-2.3.0-1.4.0\\Projects\\zstack\\ Samples\\GenericApp\\CC2530DB目录下,IAR工程文件为GenericApp.eww
[一]程序功能
本例程在启动后,自动组织建立一个Zigbee网络(我们以一个协调器和终端节点组成的简单网络进行讲解),网络中的设备间通过“绑定”与“按条件搜索”两种方式,建立连接。成功之后互相发送“Hello, world!”字符信息
[二]操作说明
打开上述的工程文件,分别选择“Coordinator”与“Enddevice”两种设备进行编译、下载至两个FB2530EB板中,详细过程前文已有描述,不再重复。按Reset键后,屏幕显示如下:
如果显示信息如上图所示,则表示网络初始化成功。
此时,按下Enddevice的摇杆(Joystick)右键进行绑定申请,然后立即按下Coordinator的Joystick右键进行绑定确认。此时,两个节点的红色LED灯--LED1,同时点亮,表示绑定成功,可以开始通信。
注:绑定也可以由Coordinator发起,由Enddevice响应。
在成功建立连接后,Enddevice与Coordinator均将每5秒钟向对方发送一次“Hello World”字符串。
与前文SerialApp例程相似,建立连接的方式除了“绑定”外,还有“条件搜索”的方式。按Enddevice的摇杆(Joystick)左键发送“条件搜索”请求――即按规定的ProfileID,支持的Cluster等信息进行匹配设备查找,收到此请求后,Coordinator将会显示如下:
此信息表明Coordinator已经接收到搜索请求,并且返回了响应信息。随后,Enddevice的红色LED1亮,表示已与匹配设置建立了连接。Enddevice将发送“Hello, world”信息,从Coordinator的LCD上可以看到信息被成功接收。
[三]系统解析
下面我们一起从代码中了解下上述的过程:
在自动启动网络成功后,Coordinator与Enddevice均将执行如下代码,进行信息发送:
1. UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ) 2. {
3. ? ?
4. case ZDO_STATE_CHANGE:
5. GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status); 6. if ( (GenericApp_NwkState == DEV_ZB_COORD) 7. || (GenericApp_NwkState == DEV_ROUTER)
8. || (GenericApp_NwkState == DEV_END_DEVICE) ) 9. {
10. // Start sending \11. osal_start_timerEx( GenericApp_TaskID,
12. GENERICAPP_SEND_MSG_EVT, 13. GENERICAPP_SEND_MSG_TIMEOUT ); 14. }
复制代码
并且由下面代码实现重复发送,每5秒种一次
1. if ( events & GENERICAPP_SEND_MSG_EVT ) 2. {
3. // Send \
4. GenericApp_SendTheMessage(); 5.
6. // Setup to send message again
7. osal_start_timerEx( GenericApp_TaskID,
8. GENERICAPP_SEND_MSG_EVT, 9. GENERICAPP_SEND_MSG_TIMEOUT ); 10.
11. // return unprocessed events
12. return (events ^ GENERICAPP_SEND_MSG_EVT); 13. }
复制代码
但此时的发送地址并不明确目标。须要如下建立连接的过程,才可将信息发送至某设备:
一、绑定方式
1、按JoyStick右键发送绑定请求:
1. if ( keys & HAL_KEY_SW_2 ) 2. {
3. HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF ); 4.
5. // Initiate an End Device Bind Request for the mandatory endpoint 6. dstAddr.addrMode = Addr16Bit;
7. dstAddr.addr.shortAddr = 0x0000; // Coordinator
8. ZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(), 9. GenericApp_epDesc.endPoint, 10. GENERICAPP_PROFID,
11. GENERICAPP_MAX_CLUSTERS, (cId_t
*)GenericApp_ClusterList,
12. GENERICAPP_MAX_CLUSTERS, (cId_t
*)GenericApp_ClusterList,
13. FALSE ); 14. }
复制代码
2、另外一个节点在规定时间内按JoyStick右键进行响应,则双方完成绑定,并将先后收到End_Device_Bind_rsp,即绑定响应信号,以表示对方成功进行了应答,可以互相通讯,此时双方红色LED1先后亮起,互送“Hello, world”字符。
1. 2. 3. 4. 5.
void GenericApp_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg ) {
switch ( inMsg->clusterID ) {
case End_Device_Bind_rsp:
6. if ( ZDO_ParseBindRsp( inMsg ) == ZSuccess ) 7. {
8. // Light LED
9. HalLedSet( HAL_LED_4, HAL_LED_MODE_ON ); 10. }
复制代码
二、“条件搜索”的方式
1、Enddevice按下Joystick左键发起搜索
1. 2. 3. 4. 5. 6. 7. 8. 9.
if ( keys & HAL_KEY_SW_4 ) {
HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );
// Initiate a Match Description Request (Service Discovery) dstAddr.addrMode = AddrBroadcast;
dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR; ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR, GENERICAPP_PROFID,
GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,
10. GENERICAPP_MAX_CLUSTERS, (cId_t
*)GenericApp_ClusterList,
11. FALSE ); 12. }
复制代码
其要求条件见ZDP_MatchDescReq函数的参数。
2、Coordinator对此搜索进行处理,对于接受此要求的设备进行查找。其依据为设备在开机初始化时,如果注册为响应此类信息,则此时由Coordinator向搜索发起者进行汇报。开机注册函数如下:
1. ZDO_RegisterForZDOMsg( GenericApp_TaskID, Match_Desc_rsp );
复制代码
3、搜索发起者(Enddevice)接收到Match_Desc_rsp响应,做如下处理:
1. 2. 3. 4. 5. 6. 7.
case Match_Desc_rsp: {
ZDO_ActiveEndpointRsp_t *pRsp = ZDO_ParseEPListRsp( inMsg ); if ( pRsp ) {
if ( pRsp->status == ZSuccess && pRsp->cnt ) {
正在阅读:
飞比开发板学习教程,经典教程11-09
工程检测方案(最终确定版)剖析 - 图文11-06
重组及资产注入概念解析01-26
形式与政治论文-我国要实施文化强国战略,你认为最重要的举措是06-14
选股系统与裸奔公告(西子凌波)11-14
国税公告 进料加工贸易管理01-22
同望WECOST公路工程造价管理系统8.2.3版本升级公告04-30
关于调整《进口废物管理目录》的公告01-22
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 学习教程
- 教程
- 经典
- 开发
- 图片展书画展前言结束语
- 关于《就业协议》等相关问题(更新后)
- 中国地质大学(北京)结晶学与矿物学结矿简答和论述题总结
- 《新文化运动与马克思主义的传播》教学设计
- 材料现代分析方法试题 6
- 时代光华满分答卷 第2课-客户经理胜任力模型:一张图帮助客户经理认识自己
- PC吹塑成型工艺介绍
- 电磁学光学量子力学复习纲要
- 作业一:微量元素在岩石成因上的应用
- 巢湖市福和希望小学专业技术岗位内部等级晋升工作方案 2
- 淮阴工学院电路理论习题集(修改后)
- 路基附属(电缆槽、综合接地、路肩墙、排水沟、过轨及电缆井)施工技术交底
- 《课程标准若干核心观论的解读》举例说说引导学生进行自念理主、合作、探究学习时,应该避免哪些问题
- 计算机网络第六章应用层作业
- 垃圾清运
- 机械设计试题答案(2006A)
- 常用认证标志尺寸要求
- 人教版,四年级,数学上册,第一二三单元,期中试卷测试
- 婚姻家庭法-课后练习题 - 人民大学出版社
- 配变台区说明书范本