版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 外部中断实验1. 实验环境 硬件:ZigBee(CC2530)模块,ZigBee下载调试板,USB仿真器,PC机。 软件:IAR Embedded Workbench for MCS-512. 实验目的 阅读 ZigBee2530开发套件 ZigBee 模块硬件部分文档,熟悉 ZigBee 模块按键接口中断使用方式。 使用 IAR 开发环境设计程序,利用 CC2530 的电源管理控制寄存器控制系统工作状态。3. 实验原理3.1 硬件接口原理 按键接口,如图3.1.1所示。图3.1.1CC2530开发板有三个按键,一个复位按键。其余两个按键可以通过编程进行控制。当按键按下时,相应的管脚输
2、出低电平。在此我们采用下降沿触发中断的方式来检测是否有按键按下。u ZigBee(CC2530)模块 LED 硬件接口 图 3.1.2 LED 硬件接口 CC2530 相关寄存器图3.1.2 P1寄存器图3.1.3 P1SEL寄存器图3.1.4 P1DIR寄存器图3.1.5 P1INP 寄存器图3.1.6 P2INP 寄存器图3.1.7 PICTL寄存器图3.1.8 P1IEN 寄存器图3.1.9 IEN2 寄存器4、实验内容按键按下一次 ,led1亮,led2灭。按键按下2次,led1灭,led2亮。按键按下3次, 都亮。按键按下4次,都灭。 下降沿触发中断。5、注意事项1、实验前,请正确安
3、装RF2530模块,注意其丝印方向应与底板丝印方向一致,严禁反接;2、实验过程中,严禁带电插拨器件,防止损坏电路;3、实验过程中,严禁用手触摸裸露的器件特别是芯片,防止造成短路或损坏芯片;4、所有模块出厂前均已调试完毕,除非有特别说明,否则不建议自行对电路中可调部分进行调节。6、实验步骤1、将一个RF2530模块插入到WSN通用底板的相应位置。 2、zigbee多功能仿真器的一端通过10 pin下载线接到WSN通用底板的JTAG接口上,另一端通过USB线接到PC机上,并通过SmartRF Flash Programmer软件正确下载自己编写的实验源码。3、通过USB外接电源(或锂电池BT)给W
4、SN通用底板供电并将电源开关拨至USB供电(或锂电池BT供电)的位置,程序自动运行,可以看到WSN通用底板上的6个LED间歇的亮灭。4、实验完毕后,关闭电源,各模块放回原位。7、程序流程图 请在实验报告上详细写出。实验二 串口通信实验1. 实验环境 硬件:ZigBee(CC2530)模块,ZigBee下载调试板,USB仿真器,PC机。 软件:IAR Embedded Workbench for MCS-512. 实验目的 阅读 ZigBee2530开发套件 ZigBee 模块硬件部分文档,熟悉 ZigBee 模块硬件接口 使用 IAR 开发环境设计程序,利用 CC2530 的串口0 对板载 L
5、ED 灯进行控制3. 实验原理3.1 硬件接口原理 u ZigBee(CC2530)模块 LED 硬件接口 图 3.1.1 LED 硬件接口ZigBee(CC2530)模块硬件上设计有 2 个 LED 灯,用来编程调试使用。分别连接 CC2530 的 P1_0、P1_1两个 IO 引脚。从原理图上可以看出,2 个 LED 灯共阳极,当 P1_0、P1_1 引脚为低电平时候,LED 灯点亮。u CC2530 IO 相关寄存器表 3.1.2 P1 寄存器表 3.1.3 P1DIR 寄存器以上图表列出了关于 CC2530 处理器的 P1 IO 相关寄存器,其中只用到了 P1 和 P1DIR 两个寄存
6、器的设置,P1 寄存器为可读写的数据寄存器,P1DIR 为 IO 输入输出选择寄存器,其他 IO 寄存器的功能,使用默认配置。详情请用户参考 CC2530 的芯片手册。表3.1.4 CLKCONCMD 和 CLKCONSTA 寄存器表3.1.5 SLEEPCMD 和 SLEEPSTA 控制寄存器表3.1.6 PERCFG 寄存器表3.1.7 U0CSR 寄存器表3.1.8 U0GCR 寄存器表3.1.9 U0DBUF 和U0BAUD 寄存器以上图表列举了和 CC2530 处理器串口操作相关的寄存器,其中包括 CLKCONCMD 和CLKCONSTA控制寄存器,用来控制系统时钟源和状态,SLEE
7、PCMD和SLEEPSTA寄存器用来控制各种时钟源的开关和状态。PERCFG 寄存器为外设功能控制寄存器,用来控制外设功能模式。 U0CSR、 U0GCR、 U0BUF、U0BAUD 等为串口相关寄存器。4、实验内容PC机发送11#时,led1亮,同时单片机向PC机发送,led1 on字样,显示在在串口助手上。PC机发送12#时led1灭,同时单片机向PC机发送led1 off字样,显示在在串口助手上。PC机发送21#时,led2亮,同时单片机向PC机发送,led2 on字样,显示在在串口助手上。PC机发送22#时led2灭,同时单片机向PC机发送led2 off字样,显示在在串口助手上。5、
8、注意事项1、实验前,请正确安装RF2530模块,注意其丝印方向应与底板丝印方向一致,严禁反接;2、实验过程中,严禁带电插拨器件,防止损坏电路;3、实验过程中,严禁用手触摸裸露的器件特别是芯片,防止造成短路或损坏芯片;4、所有模块出厂前均已调试完毕,除非有特别说明,否则不建议自行对电路中可调部分进行调节。6、实验步骤1、将一个RF2530模块插入到WSN通用底板的相应位置。 2、zigbee多功能仿真器的一端通过10 pin下载线接到WSN通用底板的JTAG接口上,另一端通过USB线接到PC机上,并通过SmartRF Flash Programmer软件正确下载自己编写的实验源码。3、通过USB
9、外接电源(或锂电池BT)给WSN通用底板供电并将电源开关拨至USB供电(或锂电池BT供电)的位置,程序自动运行,可以看到WSN通用底板上的6个LED间歇的亮灭。4、实验完毕后,关闭电源,各模块放回原位。7、程序流程图 请在实验报告上详细写出。实验三 人体传感器检测1实验目的1) 通过实验掌握 CC2530 芯片 GPIO 的配置方法2) 掌握 MQ-2 气体传感器的使用2实验设备硬件:PC 机一台、 ZB2530(底板、核心板、仿真器、USB 线) 一套、人体红外传感器一个软件:2000/XP/win7 系统,IAR 8.10 集成开发环境3实验相关电路图4.实验原理HC-SR501 人体红外
10、感应模块是基于红外线技术的自动控制产品。灵敏度高、可靠性强、超低功耗,超低电压工作模式。接线方式(实验是接到 J10 上):1)、VCC:接电源正极(5V)2)、OUT:检测引脚3)、GND:接电源负极实验中使用 P0_6 作为检测引脚, 人进入其感应范围模块输出高电平,点亮 LED1,人离开感应范围 LED1 熄灭 P0.6 口为 HC-SR501 传感器的输入端。具体 HC-SR501 人体感应模块 OUT 输出电平由模块决定。5.实验流程图及效果(自己写)6代码分析(自己写)实验四 基于Z-Stack的无线组网实验1. 实验环境 硬件:ZigBee(CC2530)模块(两个),ZigBe
11、e下载调试板,USB仿真器,PC机。 软件:IAR Embedded Workbench for MCS-51 ZStack-2.3.0-1.4.0协议栈2. 实验内容 学习TI ZStack2007协议栈内容,掌握CC2530模块无线组网原理及过程。有关Z-Stack2007协议栈的具体内容,请参考附录中相关说明及TI官方文档。 使用IAR开发环境设计程序,ZStack-2.3.0-1.4.0协议栈源码例程SampleApp工程基础上,实现无线组网及通讯。即协调器自动组网,终端节点自动入网后,LED1开始点亮,并发送广播信息“LED2”,协调器接收到消息后将LED2闪烁,并将数据通过串口发送
12、给PC计算机。3. 实验原理3.1 ZigBee(CC2530)模块LED硬件接口图3.1.1 LED硬件接口ZigBee(CC2530)模块硬件上设计有2个LED灯,用来编程调试使用。分别连接CC2530的P1_0、P、1_1两个IO引脚。从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。3.2 SampleApp实验简介SampleApp实验是协议栈自带的ZigBee无线网络自启动(组网)样例,该实验实现的功能主要是协调器自启动(组网),节点设备自动入网。之后两者建立无线通讯,数据的发送主要有2中方式,一种为周期定时发送信息(本次实验采用该方法测试
13、),另一种需要通过按键事件触发发送FLASH信息。接下来我们分析发送periodic信息流程(发送按键事件flash流程略)Periodic消息是通过系统定时器开启并定时广播到group1出去的,因此在SampleApp_ProcessEvent事件处理函数中有如下定时器代码: case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates_t)(MSGpkt-hdr.status); if ( (SampleApp_NwkState = DEV_ZB_COORD) | (SampleApp_NwkState = DEV_ROUTER) | (Sa
14、mpleApp_NwkState = DEV_END_DEVICE) ) / Start sending the periodic message in a regular interval. /加入网络后的功能添加在此; osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );/定时发送消息 else / Device is no longer in the network break;当设备加入到网络后,其状态就会变化,对所有任务
15、触发ZDO_STATE_CHANGE事件,开启一个定时器。当定时时间一到,就触发广播periodic消息事件,触发事件SAMPLEAPP_SEND_PERIODIC_MSG_EVT,相应任务为SampleApp_TaskID,于是再次调用SampleApp_ProcessEvent()处理SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件,该事件处理函数调用SampleApp_SendPeriodicMessage()来发送周期信息。 if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) /SampleApp_SendPeriodicM
16、essage(); /去掉,这个是实现周期发送广播消息 / Setup to send message again in normal period (+ a little jitter) osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF) ); return (events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); / return unprocessed
17、 events v MT层串口通讯协议栈将串口通讯部分放到了MT层的MT任务中去处理了,因此我们在使用串口通讯的时候要在编译工程(通常是协调器工程)时候在编译选项中加入MT层相关任务的支持:MT_TASK,ZTOOL_P1 或ZAPP_P1。在defined symbols里面添加HAL_UART=TRUEv 关于无线组网实验关键代码分析void SampleApp_SendPeriodicMessage( void ) char buf=HELLO!; AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc, SAMPLE
18、APP_PERIODIC_CLUSTERID, 8, (unsigned char*)buf, &SampleApp_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );这个函数是终端节点要完成的功能,通过上面对周期事件的分析,可以知道这个函数是会被周期调用的,通过AF_DataRequest()向协调器周期发送广播字符串“HELLO!”uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) afIncomingMSGPacket_t *MSGpkt; (void)task_id; / I
19、ntentionally unreferenced parameter if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt-hdr.event ) / Received when a key is pressed case KEY_CHANGE: SampleApp_HandleKeys( (keyChange_t *)MSGpkt)-state, (keyChange_t *)
20、MSGpkt)-keys ); break; / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; / Received whenever the device changes state in the network case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates_t)(MSGpkt-hdr.status); if ( (Sam
21、pleApp_NwkState = DEV_ZB_COORD) | (SampleApp_NwkState = DEV_ROUTER) | (SampleApp_NwkState = DEV_END_DEVICE) ) / Start sending the periodic message in a regular interval. HalLedSet(HAL_LED_1, HAL_LED_MODE_ON); osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIO
22、DIC_MSG_TIMEOUT ); else / Device is no longer in the network break; default: break; osal_msg_deallocate( (uint8 *)MSGpkt ); / Release the memory MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); / Next - if one is available return (events SYS_EVENT_MSG); / return unprocessed ev
23、ents / Send a message out - This event is generated by a timer / (setup in SampleApp_Init(). if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) SampleApp_SendPeriodicMessage(); / Send the periodic message / Setup to send message again in normal period (+ a little jitter) osal_start_timerEx( SampleApp_T
24、askID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF) ); return (events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); / return unprocessed events return 0; / Discard unknown eventsSampleApp_ProcessEvent() 函数为应用层事件处理函数,当接收到网络数据(即发生AF_INCOMING_MSG_CMD事件)时,会调用SampleA
25、pp_MessageMSGCB( MSGpkt );处理函数,现在来分析这个函数void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) uint16 flashTime; unsigned char *buf; switch ( pkt-clusterId ) case SAMPLEAPP_PERIODIC_CLUSTERID: /广播消息的处理 /调用HalUARTWrite函数向上位机发送接收到的字符。 / HalLedBlink LED灯闪烁函数 break; case SAMPLEAPP_FLASH_CLUSTERID: fl
26、ashTime = BUILD_UINT16(pkt-cmd.Data1, pkt-cmd.Data2 ); HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) ); break; 这个函数是协调器要完成的工作,对终端发过来的消息进行格式转换后发给串口终端。更详细的处理流程。4. 增加内容:终端节点按键S1连接在P1_6引脚上,请修改按下按键后发送广播消息,LED2,协调器接收到LED2后,让LED2闪烁,并把接收到的字符发送到PC机上。实验五 基于Z-Stack的串口控制LED灯一、 实验环境 硬件:ZigBee(CC2530)模块(两个),ZigB
27、ee下载调试板,USB仿真器,PC机。 软件:IAR Embedded Workbench for MCS-51 ZStack-2.3.0-1.4.0协议栈二、实验内容 学习TI ZStack2007协议栈内容,掌握CC2530模块无线组网原理及过程。有关Z-Stack2007协议栈的具体内容,请参考附录中相关说明及TI官方文档。 使用IAR开发环境设计程序,ZStack-2.3.0-1.4.0协议栈源码例程SampleApp工程基础上,实现协调器接收到来自上位机串口助手的消息后,向终端节点发送组播或广播消息,终端节点接受消息如0x01led1亮,0x02led2亮。三、 实验原理3.1 Zi
28、gBee(CC2530)模块LED硬件接口图3.1.1 LED硬件接口ZigBee(CC2530)模块硬件上设计有2个LED灯,用来编程调试使用。分别连接CC2530的P1_0、P、1_1两个IO引脚。从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。3.2串口简介串行接口(Serial Interface)是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最
29、少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。 串口在嵌入式开发中非常重要,一般都要使用串口通讯、调试,所以学会串口使用也是必须的。实际上这个实验非常简单,和上个实验大部分一样,增加三个语句就可使串口工作。3.3.实验详解:使用串口步骤:workspace目录下比较重要的两个文件夹分别是Zmain和App。我们开发主要在App文件夹进行,这也是用户自己添加自己代码的地方。主要修改SampIeApp.c和SampIeApp.h即可,如果增加传感器则增加相应的模块驱动到App里面,在SampIeApp.c中调用就行。1串口初始化 第一步:串口初始化,串口初始化相信大家很熟悉,就是配置串口号、波特率、校验位、数据位、停止位等等。在基础实验我们都是配置好寄存器然后使用。现在我们在workspace下找到HALTargetCC2530EBdrivers的hal_uart.c文件,我们可以看到里面已经包括串口初始化、发送、接收等函数,全都封装好了;我们只需根据自己需要修改相关配置。浏览一下关于串口的操作函数还是挺全的。我们看看workspace上的MT层,发觉有很多基本函数,前面带MT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年浙江省龙泉市高二生物下册期末考试模拟卷附完整答案【各地真题】
- 2025年河南省舞钢市高二生物下册期末考试试卷含完整答案(网校专用)
- 2026年辽宁省东港市高二生物下册期末考试模拟卷含答案【新】
- 2026年辽宁省灯塔市高二生物下册期末考试考试卷附完整答案(典优)
- 2025年吉林省洮南市高二生物下册期末考试检测卷附参考答案(夺分金卷)
- 2026年幼儿园美术我爱向日葵
- 2026年幼儿园各种各样的线语言
- 2026年辽宁省盖州市高二生物下册期末考试试卷附答案【A卷】
- 企业教材编写方案
- 2025年山东省莱西市高二生物下册期末考试考试卷及参考答案【能力提升】
- 2026河北廊坊市广阳区人民法院公开招聘司法辅助人员30名考试参考题库及答案详解
- 南方区域电力现货市场出清原理宣贯培训
- 电器公司企业介绍
- 2025中国旅游集团战略发展部副总经理公开招聘1人笔试历年参考题库附带答案详解
- 房屋建筑结构工程质量纠正与预防措施他
- 2026年国开电大农业经济基础形考强化训练附答案详解【完整版】
- 格柏操作流程
- 2025~2026学年浙江杭州市拱墅区八年级上学期期末道德与法治、历史、地理试卷-初中地理
- 车辆保密工作制度
- 2025年往年山师综评笔试题及答案
- MOOC 工程制图-重庆大学 中国大学慕课答案
评论
0/150
提交评论