实验1 协议栈工作原理.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《实验1 协议栈工作原理.docx》由会员分享,可在线阅读,更多相关《实验1 协议栈工作原理.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 ZigBee实验一协议栈的工作原理1.1 实验简介协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。 Z-stack是挪威半导体公司Chipcon(目前已经被TI公司收购)推出其CC2530开发平台时,推出的一款业界领先的商业级协议栈软件,由于这个协议栈软件的出现,用户可以很容易地开发出具体的应用程序来,也就是大家说的掌握10个函数就能使ZigBee通讯的原因。它使用瑞典公司IAR开发的IAR Embedded Workben
2、ch for MCS-51作为它的集成开发环境。Chipcon公司为自己设计的Z-Stack协议栈中提供了一个名为操作系统抽象层OSAL的协议栈调度程序。对于用户来说,除了能够看到这个调度程序外,其它任何协议栈操作的具体实现细节都被封装在库代码中。用户在进行具体的应用开发时只能够通过调用API接口来进行,而无权知道ZigBee协议栈实现的具体细节,也没必要去知道。因此在这里提醒各位开发者,在使用ZigBee协议栈进行实际项目开发时,不需要关心协议栈是具体怎么实现的,当然做研究另当别论。实验目的1.2 1.2.1 通过本实验了解协议栈的组织架构和常用API函数的使用方法。1.3实验设备1.3.1
3、 硬件:(1) ZIGBEE调试底板一个:可调电阻ZigBee_DEBUG指示灯红外发射ZigBee复位ZigBee按键拨码开关节点按键复位传感器接口1J-LINK接口传感器接口3传感器接口2电源开关电源图1-1 ZIGBEE调试底板(2) ZIGBEE仿真器一个:10PIN下载接口电源(上)和状态指示灯USB接口图1-2 ZIGBEE仿真器(3) ZIGBEE模块一个:图1-3 ZIGBEE模块(4) 电源一个:图1-4 电源(5) 硬件连接图:连接电脑USB电源图1-5 硬件连接图1.3.2 软件(1) IAR Embedded Workbench for MCS-51 7.51A集成开发
4、环境;(2) TI Z-STACK;(3) 仿真器驱动;实验知识1.4ZigBee协议栈已经实现了ZigBee协议,用户可以使用协议栈提供的API进行应用程序的开发,在开发过程中完全不必关心ZigBee协议的具体实现细节,要关心的问题是:应用层的数据是使用哪些函数通过什么方式把数据发送出去或者把数据接收过来的。所以最重要的是我们要学会使用ZigBee协议栈。协议栈工作原理解析1.51.5.1 认识协议栈相信大家已经知道CC2530集成了增强型的8051内核,在这个内核中进行组网通讯时候,如果再像以前基础实验的方法来写程序,相信大家都会望而止步,ZigBee也不会在今天火起来了。所以ZigBee
5、的生产商很聪明,比如TI 公司,他们为你搭建一个小型的操作系统(本质也是大型的程序),名叫Z-stack。 他们帮你考虑底层和网络层的内容,将复杂部分屏蔽掉。让用户通过API函数 就可以轻易用ZigBee。这样大家使用他们的产品也理所当然了。tasksEventstaskCntTask(taskCnt)*SampleApp_loop tasksEvents2 != 0Task2 *Hal_ProcessEventtasksEventsl = 0Taskl *nwk_event_looptasksEvents0 != 0TaskO *macEventLoop也就是说,协议栈是一个小操作系统。大家
6、不要听到是操作系统就感觉到很复杂。回想我们当初学习51单片机时候是不是会用到定时器的功能?嗯, 我们会利用定时器计时,令LED 秒改变一次状态。好,现在进一步,我们利 用同一个定时器计时,令LED1 秒闪烁一次,LED2 二秒闪烁一次。这样就 有2个任务了。再进一步.有n个LED,就有n个任务执行了。协议栈的最终工 作原理也一样。从它工作开始,定时器不停的计时,以一定的频率计时然后给系统参考,这称为“系统时钟节拍”,像人的心脏一样不停的跳动。整个系统是依赖着这个时钟节拍去有一定节奏的循环地执行每一个任务。有发送、接收.等任务要执行时就执行。周而复始地循环查询是否有要执行的任务,这个方式称为任务
7、轮询。图1-6 任务轮询1.5.2 我们打开协议栈文件夹(基础实验中最后一次课搭建的环境中,安装的ZStack-CC2530-2.2.2-1.3.0.exe,在安装路径下)Texas Instruments Projectszstack。里面包含了 TI公司的例程和工具(或者在配套资料中的“实验源码”对应的例子下找到)。其中的功能我们会在用的实验里讲解。再打开Samples文件夹:图1-7 工程路径Samples 文件夹里面有三个例子:GenericApp、 SampleApp、 SimpleApp,在这里们选择SampleApp对协议栈的工作流程进行讲解。打开 SampleAppCC2530
8、DB下工程文件SampleApp.eww。留意左边的工程目录,我们暂时只需要关注Zmain文件夹和App文件。图1-8 工程文件1.5.3 任何程序都在main函数开始运行,Z-STACK也不例外。打开Zmain.C, 找到int main( void )函数。我们大概浏览一下main函数代码:图1-9 函数开始 * fn main * brief First function called after startup. * return dont careint main( void ) / Turn off interrupts / 关闭总中断 osal_int_disable( INTS
9、_ALL ); / Initialization for board related stuff such as LEDs / 时钟,LED1-3口(P10-P11-P14)初始化配置 HAL_BOARD_INIT(); / Make sure supply voltage is high enough to run / 检查电压 zmain_vdd_check(); / Initialize board I/O / 关闭所有中断、关闭所有LED(41)、检查上次复位原因 InitBoard( OB_COLD ); / Initialze HAL drivers / 各种功能初始化定时器、DM
10、A、FLASH、LED、KEY、串口、SPI、AES HalDriverInit(); / Initialize NV System / 初始化NV系统 osal_nv_init( NULL ); / Initialize the MAC / 初始化MAC-内容在库函数里面,无法查看源码 ZMacInit(); / Determine the extended address / 确定扩展地址(64位IEEE/物理地址) zmain_ext_addr(); / Initialize basic NV items / 初始化基本的NV条目 zgInit();#ifndef NONWK / Sin
11、ce the AF isnt a task, call its initialization routine / AF初始化函数 afInit();#endif / Initialize the operating system / 初始化操作系统 osal_init_system(); / Allow interrupts / 允许中断 osal_int_enable( INTS_ALL ); / Final board initialization / 主板最终初始化 InitBoard( OB_READY ); / Display information about this devic
12、e / 显示关于这个设备信息(IEEE) zmain_dev_info(); /* Display the device info on the LCD */#ifdef LCD_SUPPORTED /LCD支持 zmain_lcd_init(); #endif#ifdef WDT_IN_PM1 /* If WDT is used, this is a good place to enable it. */ /* 如果WDT使用,这是一个好地方来启用它。 */ WatchDogEnable( WDTIMX );#endif osal_start_system(); / No Return fr
13、om here 进入OS系统 return 0; / Shouldnt get here.我们大概看了上面的代码后,可能感觉很多函数不认识。没关系,代码很有条 理性,开始先执行初始化工作。包括硬件、网络层、任务等的初始化。然后执行osal_start_system();操作系统。进去后可不会回来了。在这里,我们重点了解 2个函数: 初始化操作系统 osal_init_system(); 运行操作系统 osal_start_system()*怎样查看函数原型?在函数名上单击右键go to definition of,便可以进入函数。 图1-10 查看函数原型1.5.4 我们先来看osal_ini
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验1 协议栈工作原理 实验 协议 工作 原理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内