《ZigBee无线传感器网络设计实战》全套教学课件_第1页
《ZigBee无线传感器网络设计实战》全套教学课件_第2页
《ZigBee无线传感器网络设计实战》全套教学课件_第3页
《ZigBee无线传感器网络设计实战》全套教学课件_第4页
《ZigBee无线传感器网络设计实战》全套教学课件_第5页
已阅读5页,还剩454页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ZigBee无线传感器网络设计实战全套可编辑PPT课件以任务驱动方式介绍了CC2530单片机开发和ZigBee协议栈开发的基础知识,主要内容包括搭建ZigBee开发环境、CC2530单片机基础开发和进阶开发、ZigBee无线网络入门和提高、ZigBee无线网络串口应用、ZigBee无线网络管理、ZigBee无线网络综合实战1PARTONE搭建ZigBee开发环境CONTENT目录3412实训1-1安装IAR软件和硬件驱动实训1-2新建与调试ZigBee工程实训1-3认识ZigBee实训设备实训1-4学习ZigBee开发板电路实训简介本书要用到的IAR软件即IAREmbeddedWorkbenchfor8051,它是ZigBee的软件开发环境,通过它可以编写和调试程序,并将程序下载到ZigBee硬件(如CC2530芯片)中去,进而实现各种应用。本实训主要介绍IAR软件和硬件驱动的安装方法。实训目的1

掌握IAR软件的安装方法。2

掌握仿真器驱动和USB转串口驱动的安装方法。实训内容IAR软件的安装。1各种硬件驱动的安装。2软件安装结果的验证。3知识链接1.物联网物联网(InternetofThings),是指通过二维码识读设备、射频识别(RFID)装置、红外感应器、全球定位系统和激光扫描器等信息传感设备,按约定的协议,把任何物体与互联网相连接,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的一种网络。如今,物联网与各个行业不断融合,行业应用稳步发展,并蕴含巨大空间,如下图所示。物联网应用示意图从市场应用来看,占据中国物联网市场主要份额的领域为智能工业、智能物流、智能交通、智能电网、智能医疗、智能农业、智能环保和智能家居。其中,智能工业占比最大。从技术架构上看,物联网可以分为3层,即感知层、网络层和应用层,如右图所示。物联网架构示意图感知层:位于最底层,相当于人体的皮肤和五官。它利用RFID、摄像头、传感器、GPS、二维码等随时随地识别和获取物体的信息。

网络层:位于中间层,相当于人体的神经中枢和大脑。它通过移动通信网络与互联网的融合,将物体的信息实时准确地传递出去。

应用层:位于最顶层,相当于人的社会分工。它与行业需求相结合,对感知层得到的信息进行处理,实现智能化识别、定位、跟踪、监控和管理等实际应用。

感知层是物联网发展和应用的基础,解决的是人类世界和物理世界的数据获取问题。它实际上包含了数据采集和数据短距离传输两个过程。即首先通过传感器、摄像头等设备采集外部物理世界的数据,然后通过ZigBee、蓝牙、Wi-Fi、工业现场总线等短距离无线或有线通信技术进行协同工作,或者传递数据到网关设备。在感知层,传感器、条形码、二维码、RFID、智能装置、通信模块等设备组成了一个无线传感器网络,该网络负责将采集的数据传送至网络层。2.无线传感器网络无线传感器网络(WirelessSensorNetwork,WSN),是由部署在监测区域内的大量传感器节点(即微型传感器)通过无线通信方式形成的自组织网络,其目的是感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给观察者。无线传感器网络的基本功能就是将一系列空间分散的传感器节点通过自组织的无线网络进行连接,从而将各自采集的数据通过无线网络进行传输汇总,以实现对空间分散范围内的物理或环境状况的协作监控,并根据这些信息进行相应的分析和处理。无线传感器网络具有分布控制、无中心和多跳传输等特点,但它集成了监测、控制和无线通信等功能,还具有如下一些主要特点:01节点数量更加庞大,节点分布更加密集。02由于环境影响和能量耗尽,节点更容易出现故障。03环境干扰和节点故障易造成网络拓扑结构的变化。04要控制网络整体成本,就必须降低单个节点的成本。05无线传感器网络以数据为中心,其核心是感知数据而不是网络硬件,通常情况下,大多数传感器节点是固定不动的。无线传感器网络是构建物联网的最基本网络,传感器作为感知的最前端探测和搜集信号,之后则需要各种有线和无线的通信技术进行设备相互间的通信交流。最后100m的短距离接入则主要是通过无线传感器网络来实现的,其中ZigBee被认为是目前最适合无线传感器网络接入端的短距离无线通信技术。3.ZigBee技术ZigBee是由ZigBee联盟基于IEEE802.15.4无线标准研制开发的一种近距离、低复杂度、低功耗、低速率、低成本的组网、安全和应用软件方面的无线通信技术,它正在成为消费电子、能源、住宅、商业和工业领域广泛采用的领先无线联网、传感和控制标准。ZigBee可以实现传输节点自组织,采用分组交换和跳频技术,并且可使用3个ISM频段,分别是868MHz频段(欧洲适用)、915MHz频段(北美适用)和2.4GHz频段(全球通用)。868MHz频段:定义了1个信道,拥有20Kbps的传输速率。1915MHz频段:定义了10个信道,信道中心间隔为2MHz,拥有40Kbps的传输速率。22.4GHz频段:定义了16个信道,信道中心间隔为5MHz,拥有250Kbps的传输速率。3总结而言,ZigBee主要具有以下特点。 功耗低 成本低 时延短 可靠性高 安全性高 有效范围小 网络容量大 工作频段灵活 数据传输速率低:在家庭/商业自动化、智慧能源、健康医疗及零售等领域,ZigBee也被证明是可靠的无线网络解决方案,如右图所示。ZigBee技术应用示意图4.ZigBee与CC2530芯片的关系ZigBee的作用是构建无线局域网,无线传感器网络是无线局域网的一个具体应用。ZigBee无线网络在软件上需要ZigBee协议栈,且在硬件上需要支持ZigBee底层协议的某种芯片,这样各硬件设备之间才可以通过ZigBee协议进行通信。基于此,美国德州仪器(TI)公司开发了Z-Stack协议栈,还研发了一系列支持ZigBee底层协议的芯片(如CC2430、CC2431、CC2530、CC2531、CC2538等),它们都是与Z-Stack协议栈配合使用的ZigBee芯片。在使用Z-Stack协议栈时,大多采用CC2530芯片。CC2530根据闪存容量不同,有4种类型,其中,CC2530F256提供了强大、完善的ZigBee解决方案。CC2530F256CC2530F32CC2530F64CC2530F128CC253032KB的闪存空间64KB的闪存空间128KB的闪存空间256KB的闪存空间5.IAR软件开发环境IAR是一套完整的集成开发工具集合,包括从代码编辑器、工程建立到C/C++编译器、连接器和调试器的各类开发工具。它和各种仿真器、调试器紧密结合,使用户在开发和调试中仅使用一种开发环境界面就可完成对多种微控制器的开发。实施步骤本书采用的IAR版本为IAREmbeddedWorkbenchfor80518.10.1,其安装包位于本书“教学资源包”>“相关软件和驱动”>“CD-EW8051-8101”文件夹下。步骤部分参照书中描述。1安装IAR软件安装完IAR软件以后,连接硬件时还需要安装必要的驱动,一般包括仿真器驱动和USB转串口驱动。其中,仿真器驱动用来实现电脑和仿真器设备之间的顺利连接,完成程序下载;USB转串口驱动用来将电脑的USB接口转换成模拟串口使用。2常用驱动的安装1)安装仿真器驱动首次将仿真器设备连接到电脑时,桌面右下角会弹出“未能成功安装设备驱动程序”提示,如右图所示。此时,可按书中步骤完成仿真器驱动的安装。驱动未安装提示2)安装USB转串口驱动直接用数据线将ZigBee底板和电脑USB口相连,“设备管理器”窗口中会出现未识别的硬件,如右图所示,此时需要安装USB转串口驱动。未安装USB转串口驱动USB转串口驱动有多种,此处以PL2303转串口驱动为例进行介绍,双击可执行文件“PL2303_Prolific_DriverInstaller_v10518.exe”,出现安装向导,单击“下一步”按钮,即可快速完成安装。安装完成后,可在“设备管理器”窗口中找到模拟串口,即ProlificUSB-to-SerialCommPort(COM3),如右图所示。成功安装USB转串口驱动下面来验证一下软件安装结果。首先连接好硬件设备,然后双击打开本书“教学资源包”>“源代码”>“测试程序”文件夹下的测试工程“test.eww”,如右图所示。系统会自动在IAR软件中打开该工作空间文件。测试工程文件单击IAR工具栏中的“DownloadandDebug”按钮,或者选择“Project”>“DownloadandDebug”菜单,如右图所示。将程序通过仿真器下载到ZigBee开发板。下载并调试程序下载程序又称烧写程序,是指把程序固化到芯片中的同时进入调试界面,出现调试工具栏,单击其中的全速运行按钮,如下图所示,可以看到ZigBee开发板上的LED灯开始闪烁,说明IAR软件安装成功了。调试工具栏调试工具栏成果检验自我考核不看教材,独立完成IAR软件和仿真器驱动的安装,并能验证安装结果。ZigBee开发板上的D8、D9灯不断闪烁。CONTENT目录3412实训1-1安装IAR软件和硬件驱动实训1-2新建与调试ZigBee工程实训1-3认识ZigBee实训设备实训1-4学习ZigBee开发板电路实训简介本实训将介绍用IAR新建与调试ZigBee工程的一般方法,包括工程的建立;源文件的添加;工程的设置;程序的编译、下载与调试等,最后通过实验现象验证操作的正确性。实训目的1

掌握新建与设置ZigBee工程的方法。2

掌握ZigBee工程的调试方法。3

了解IAR的各种集成工具。实训内容用IAR新建并保存工程。1向新建的工程中添加源文件。2编译源文件并将程序下载到ZigBee开发板。3用IAR创建工程的基本流程启动IAR软件,默认会生成一个空的工作空间。此时可以通过选择“Project”>“CreateNewProject”菜单在该工作空间下创建一个新的工程。创建工程文件(.ewp)后,还需选择“File”>“SaveWorkspace”菜单(或单击工具栏中的“SaveAll”按钮),对工作空间文件(.eww)进行保存。知识链接接下来,可以选择“File”>“New”>“File”菜单(或单击工具栏中的“Newdocument”按钮

)新建一个源文件,来编写程序,再将源文件保存(后缀为.c)并添加到之前新建的工程中。除此之外,也可以直接将提前编写好的外部源文件添加到工程中。程序编写完成后,将ZigBee开发板通过仿真器连接到电脑,就可以对程序进行编译、下载和调试了。但在此之前,通常还需要对当前工程进行一些设置,包括要使用的芯片型号、调试器类型等。实施步骤本实训将使用IAR软件新建一个ZigBee工程,然后为其添加程序源文件,并对工程进行设置,最后通过程序编译、下载和调试,实现对ZigBee开发板的控制。1打开IAR软件2新建工程3添加源文件到工程4设置工程5编译程序6下载与调试程序以上步骤具体操作参照书中描述。成果检验自我考核验证仿真是否有效,运行程序后实训板上LED(D8)常亮,LED(D9)闪烁。02验证工程创建是否正确:正常编译无错误。01不看教材,重新熟悉创建工程的过程以及配置工程文件。CONTENT目录3412实训1-1安装IAR软件和硬件驱动实训1-2新建与调试ZigBee工程实训1-3认识ZigBee实训设备实训1-4学习ZigBee开发板电路实训简介本书所有的实训都是基于讯方通信ZigBee综合实训箱完成的,本节实训将详细介绍实训中用到的设备,并详细讲解每一个模块中的接口,以及实训的硬件连接图,最后重点讲解在实训过程中遇到电脑不能正确识别仿真器问题的解决办法。实训目的1

认识ZigBee实训设备。2

掌握实训设备的连接方法。3

了解硬件连接时的注意事项。实训内容实训箱里的设备以及存放的位置。1实训设备的正确连接。2实训设备1ZigBee开发板硬件介绍1)ZigBee核心板ZigBee核心板的主要芯片是CC2530,它控制着ZigBee底板上的设备,如右图所示。CC2530芯片天线ZigBee核心板2)ZigBee底板ZigBee底板主要提供电源、控制按钮和一些扩展设备接口等,如右图所示。ZigBee底板指示灯可调电阻红外发射ZigBee复位ZigBee按键拨码开关节点按键复位传感器接口1电源开关电源接口STM32串口1传感器接口3J-Link接口ZigBeeDebug接口插接ZigBee核心板3)转接板转接板主要用于实现串口转接、J-Link转接,如右图所示。J-Link转接输出口J-Link转接输入口串口转接输入口(连接ZigBee底板)串口转接输出口(连接电脑串口)转接板4)仿真器ZigBee仿真器主要用于将编写好的程序下载到ZigBee开发板中,如下图所示。USB接口(另一端连接电脑)下载接口(另一端连接ZigBee底板)ZigBee仿真器5)其他辅助设备其他辅助设备主要包括串口转接线、外接电源适配器、串口延长线等,如下图所示。(a)串口转接线(b)外接电源适配器(c)串口延长线其他辅助设备2硬件连接图(1)不使用串口时的硬件连接图,如右图所示。连接电脑USB口外部电源数据下载线常用硬件连接图(2)当实训需要ZigBee节点与电脑进行串口通信时,其硬件连接图(带转接板),如右图所示。如果ZigBee底板上带有USB转串口模块,那么直接用数据线将该接口与电脑USB接口相连即可,也可实现串口连接。带转接板的硬件连接图数据下载线转接线(ZigBee底板与串口转接板连接)串口延长线,连接电脑串口连接电脑USB口外部电源3串口调试工具(1)打开本书“教学资源包”>“相关软件和驱动”>“超级单片机工具”文件夹下的串口调试工具,即超级单片机工具“MCUTool.exe”,如右图所示。串口调试工具的位置(2)串口调试工具(即超级单片机工具)的设置,如下图所示。串口调试工具的设置选择对应的串口调节对应的波特率设置模式位打开串口接收内容区发送内容区“发送”按钮关于IAR软件找不到仿真器的问题通常情况下,将仿真器通过USB方口数据线连接到电脑,并正确安装仿真器驱动后,就可以自动识别出仿真器硬件。但仿真器类型有多种,有些对应驱动为ChipconSRF04EB,有些对应驱动为SmartRF04EB,如下图所示。知识链接不同类型的仿真器驱动由于系统默认安装的仿真器驱动是SmartRF04EB,如果与仿真器设备不对应,就会出现IAR软件无法识别仿真器,不能进行仿真的问题,如右图所示。IAR软件找不到仿真器这种情况下,或者由于其他原因导致IAR无法正确识别仿真器时(此时“设备管理器”窗口中会出现问号或感叹号),则要更新成正确的驱动。例如将仿真器驱动“SmartRF04EB”更新成“ChipconSRF04EB”,具体操作步骤参照书中描述。注意事项4231实训硬件连接时不能带电插拔。拆卸硬件时要格外注意卡槽和插槽,不要用蛮力拆卸。需要移动实训设备时,应用两个手指捏着硬件的边沿处小心移动,硬件带电时禁止用手触摸设备上的焊接点。认真检查连接的电路,确保没问题时再给设备上电。拆卸时,要先断电再操作。自我考核独立解决仿真器不能识别的问题。02快速连接实训箱设备及实训设备。01CONTENT目录3412实训1-1安装IAR软件和硬件驱动实训1-2新建与调试ZigBee工程实训1-3认识ZigBee实训设备实训1-4学习ZigBee开发板电路实训简介本书所采用ZigBee开发板中,CC2530的内核就是大家熟悉的8051内核,同时支持IEEE802.15.4协议的无线射频的功能。它有3个不同的存储器访问总线,即 特殊功能寄存器(SFR) 数据(DATA) 代码/外部数据(CODE/XDATA)本实训主要讲解ZigBee开发板的设计电路,分析实训中用到的LED灯和按键是连接到哪个端口的。实训目的2掌握电路图中LED灯和按键连接到哪个端口。1了解ZigBee开发板的设计电路。实训内容通过对比硬件设备与电路图,读懂ZigBee开发板电路。CC2530是德州仪器公司(TI)研发的一款ZigBee片上系统解决方案,它建立在IEEE802.15.4标准协议之上。CC2530集成了业界领先的RF收发器、工业标准的增强型8051内核、系统内可编程闪存、8KBRAM和许多其他强大的功能。1CC2530芯片简介知识链接强大的5通道DMA功能。IEEE802.15.4MAC定时器,3个通用定时器(1个16位,2个8位)。IR(红外线)发生电路。具有捕获功能的32kHz睡眠定时器。硬件支持CSMA/CA(载波侦听多址接入/避免冲撞协议)。CC2530具有不同的运行模式,使得它尤其适应超低功耗要求的系统。运行模式之间的转换时间短,进一步确保了低能源消耗。概括而言,其外围设备具有以下功能特征:支持精确的数字化的接收信号强度指示器(RSSI)/链路质量指示(LQI)。电池监视器和温度传感器。具有8路输入并可配置的12位ADC。高级加密标准(AES)安全协处理器。2个支持多种串行通信协议的强大USART。21个通用I/O引脚(19个4mA,2个20mA)。看门狗定时器。2ZigBee开发板电路1)ZigBee底板电路图ZigBee底板的相关电路如右图所示。ZigBee底板电路图

2)ZigBee核心板电路图ZigBee核心板的相关电路如右图所示。ZigBee核心板电路图由于CC2530核心板是配合底板一起使用的,因此在设计CC2530核心板时通常将I/O引脚扩展出来,采用插拔的方式与底板连接,下图所示为其扩展接口电路。ZigBee核心板扩展接口电路自我考核通过ZigBee开发板电路图分析底板上的SW1、SW2按键连接哪个端口?02通过ZigBee开发板电路图分析底板上的D8、D9灯连接哪个端口?01谢谢观看ZigBee无线传感器网络设计实战2PARTTWOCC2530单片机基础开发CONTENT目录3412实训2-1通用数字接口控制实训2-2配置时钟实训2-3配置外部中断实训2-4配置定时器实训简介CC2530拥有21个数字I/O(输入/输出)引脚,可以配置为通用数字I/O,也可以作为外部I/O信号连接到ADC、定时器或USART等外部设备。这些I/O口的功能是通过一系列寄存器配置,由软件实现的。I/O口具有如下重要特性:21个数字I/O引脚。可以配置为通用I/O或外部设备I/O。输入口具备上拉或下拉能力。具有外部中断能力。这21个I/O引脚都可以用作外部中断源输入口。因此,如果需要,外部设备可以通过这些I/O产生中断。外部中断功能也可以从睡眠模式唤醒设备。实训目的1

了解CC2530I/O口的输入输出状态。2

了解CC2530通用数字I/O口的使用及相关寄存器的配置。实训内容编写一个用SW2控制LED0闪烁的程序。1烧录程序并进行硬件上的验证。2知识链接1CC2530芯片的引脚CC2530芯片共有40个引脚,如下图所示。CC2530实物及引脚图其中包括:

21个I/O引脚(P0_0~P0_7、P1_0~P1_7、P2_0~P2_4)。

2个2V~3.6V数字电源引脚(DVDD1~DVDD2)。

1个1.8V内部数字电源引脚(DCOUPL)。

6个2V~3.6V模拟电源引脚(AVDD1~AVDD6)。

4个GND引脚(GND为接地引脚)。

2个32MHz外部晶振引脚(XOSC_Q1和XOSC_Q2)。

1个数字输入复位引脚(RESET_N)。

2个射频天线输入输出引脚(RF_N和RF_P)。

1个模拟I/O参考电流的外部精密偏置电阻引脚(RBIAS1)。2未使用的I/O引脚未使用的I/O引脚应当定义电平,不能悬空。一种方法是:使引脚不连接任何元器件,将其配置为具有上拉电阻的通用I/O输入。这也是所有引脚复位后的状态(只有P1.0和P1.1没有上拉/下拉功能)。此外,这些引脚也可以配置为通用I/O输出。为了避免过多的功耗,无论引脚配置为输入口还是输出口,都不应该直接与VDD或GND连接。3低I/O电压在实际应用中,当数字I/O电源电压引脚DVDD1和DVDD2低于2.6V时,寄存器位PICTL.PADSC应当置为1,以获得DC特性表中规定的输出直流特性。4通用I/O当用作通用I/O时,引脚可以组成3个8位端口,端口0、端口1和端口2表示为P0、P1和P2。其中,P0和P1是完全的8位端口,而P2仅有5位可用。所有的端口均可以位寻址,或通过特殊功能寄存器由P0、P1和P2字节寻址。每个端口引脚都可以单独设置为通用I/O或外部设备I/O。除了两个高驱动输出口P1.0和P1.1各具备20mA的输出驱动能力之外,所有的输出口均具备4mA的驱动能力。寄存器PxSEL(其中x为端口的标号0~2)用来设置每个端口引脚为通用I/O或者是外部设备I/O信号。作为缺省的情况,每当复位之后,所有的数字输入/输出引脚都设置为通用输入引脚。在任何时候,要改变一个端口引脚的方向,使用寄存器PxDIR来设置每个端口引脚为输入或输出即可。只要设置PxDIR中的指定位为1,其对应的引脚口就被设置为输出了。当读取端口寄存器P0、P1和P2的值时,不管引脚配置如何,输入引脚上的逻辑值都被返回。这在执行读—修改—写指令期间不适用。读—修改—写指令为:ANL,ORL,XRL,JBC,CPL,INC,DEC,DJNZ,MOV,CLR和SETB。在一个端口寄存器上操作,以下是正确的:当目标是端口寄存器P0、P1或P2中一个独立的位时,寄存器的值(不是引脚上的值)被读取、修改并写回端口寄存器。用作输入时,通用I/O端口引脚可以设置为上拉、下拉或三态操作模式。作为缺省的情况,复位之后,所有的端口均设置为带上拉的输入。要取消输入的上拉或下拉功能,就要将PxINP中的对应位设置为1。I/O端口引脚P1.0和P1.1没有上拉/下拉功能。在电源模式PM1、PM2和PM3下,I/O引脚保留在进入PM1、PM2、PM3时设置的I/O模式和输出值(如果可用的话)。通用I/O引脚设置为输入后,可以用于产生中断。中断可以设置在外部信号的上升或下降沿触发。P0、P1和P2端口都有中断使能位,对位于IEN1和IEN2寄存器内的端口所有的位都是公共的,如下:5通用I/O中断IEN1.P0IE:P0中断使能。IEN2.P1IE:P1中断使能。IEN2.P2IE:P2中断使能。除了这些公共中断使能外,每个端口的位都有位于SFR寄存器P0IEN、P1IEN和P2IEN的单独的中断使能。即使配置为外设I/O或通用输出的I/O引脚使能时都有中断产生。当中断条件发生在任意一个I/O引脚上,P0-P2中断标志寄存器中相应的中断状态标志P0IFG、P1IFG或P2IFG将被置为1。不管引脚是否设置了它的中断使能位,中断状态标志都被设置。当中断已经执行,中断状态标志被清除,该标志写入0。这个标志必须在清除CPU端口中断标志(PxIF)之前被清除。I/O端口的寄存器如下:P0:端口0。P1:端口1。P2:端口2。PERCFG:外设控制寄存器。APCFG:模拟外设I/O配置。P0SEL:端口0功能选择寄存器。 P1SEL:端口1功能选择寄存器。

P2SEL:端口2功能选择寄存器。

P0DIR:端口0方向寄存器。

P1DIR:端口1方向寄存器。

P2DIR:端口2方向寄存器。P0INP:端口0输入模式寄存器。P1INP:端口1输入模式寄存器。P2INP:端口2输入模式寄存器。P0IFG:端口0中断状态标志寄存器。P1IFG:端口1中断状态标志寄存器。P2IFG:端口2中断状态标志寄存器。PICTL:中断边缘寄存器。P0IEN:端口0中断掩码寄存器。P1IEN:端口1中断掩码寄存器。P2IEN:端口2中断掩码寄存器。PMUX:掉电信号Mux寄存器。OBSSEL0:观察输出控制寄存器0。OBSSEL1:观察输出控制寄存器1。

OBSSEL2:观察输出控制寄存器2。

OBSSEL3:观察输出控制寄存器3。

OBSSEL4:观察输出控制寄存器4。

OBSSEL5:观察输出控制寄存器5。实施步骤启动IAR软件,新建一个工程“GPIO_SET”,具体步骤参见“实训1-2新建与调试ZigBee工程”。代码部分参照书中描述。1实训源码1)宏定义2实训部分代码解析//定义控制灯的端口#defineLED0P1_0 //定义LED_1为P10口控制#defineLED1P1_1 //定义LED_2为P11口控制//按键控制口#defineKEY1P0_0 //定义按键为P00口控制#defineKEY2P0_1 //定义按键为P01口控制#defineKEY_11#defineKEY_222)LED初始化voidInitLed(void){P1DIR|=0x13; /*P10、P11定义为输出*/

LED0=1;LED1=1;}3)KEY初始化voidInitKey(void){P0SEL&=~0X03;P0DIR&=~0X03; /*按键在P00、P01口,设置为输入模式*/}4)按键扫描函数ucharkeyval=0;ucharkey_ct1=0;ucharKeyScan(void){if(KEY1==0) //低电平有效

{ //抖动处理

if(key_ct1<10)key_ct1++;elsekey_ct1=5;if(key_ct1==2)keyval|=0x01;elsekeyval&=~0x01;}else{key_ct1=0;keyval&=~0x01;}return(keyval);}5)延时函数voidDelay(uintn){uinti;for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);for(i=0;i<n;i++);}6)主函数voidmain(void){InitLed(); //初始化LEDInitKey(); //初始化按键控制I/O口

while(1){if(KeyScan()&0x01) //读取按键动作

{

LED0=!LED0;}LED1=!LED1;Delay(5000);}}成果检验自我考核SW2按下后是否能改变LED(D8)的亮和灭。02查看LED(D9)是否闪烁。01修改程序,实现用KEY1和KEY2分别控制LED0和LED1的亮与灭。CONTENT目录3412实训2-1通用数字接口控制实训2-2配置时钟实训2-3配置外部中断实训2-4配置定时器实训简介时钟是一个系统设备的心脏,没有了时钟,一切都无法运作。CC2530设备有一个内部系统时钟(或称为主时钟)。该系统时钟的源既可以用16MHzRC振荡器(内部RC),也可以采用32MHz晶体振荡器(外部晶振)。时钟的控制可以通过配置CLKCONCMDSFR寄存器执行。CC2530还有一个32MHz时钟源,可以是RC振荡器或晶振,也由CLKCONCMD寄存器控制。CLKCONSTA寄存器是一个只读寄存器,用于获取当前时钟状态。设备的振荡器可以选择高精度的晶体振荡器,也可以选择低功耗的高频RC振荡器。如果设备运行RF收发器,必须使用32MHz晶体振荡器。实训目的2了解CC2530时钟功能的运用。1了解CC2530时钟寄存器的配置。实训内容2烧录程序并实施验证。1通过配置CC2530的时钟寄存器实现LED闪烁。知识链接1振荡器

1)高频振荡器32MHz晶体振荡器16MHzRC振荡器

2)低频振荡器32kHz晶体振荡器32kHzRC振荡器32kHz晶体振荡器运行在32.768kHz,并为系统需要的时间精度提供一个稳定的时钟信号。校准时,32kHzRC振荡器运行在32.753kHz。校准只能发生在32MHz晶体振荡器使能的时候,32kHzRC振荡器可以用于降低成本和电源消耗。2系统时钟系统时钟是从所选的主系统时钟源获得的,主系统时钟源可以是32MHz晶体振荡器或16MHzRC振荡器。CLKCONCMD.OSC位用来选择主系统时钟源。要使用RF收发器,必须选择高速且稳定的32MHz晶体振荡器。332kHz振荡器CC2530设备中有两个32kHz振荡器(即32kHz晶体振荡器和32kHzRC振荡器)作为32kHz时钟的时钟源。默认情况下,当复位后,32kHzRC振荡器使能,被选为32kHz时钟源。所选的32kHz时钟源驱动睡眠定时器,为看门狗定时器产生标记,且当计算睡眠定时器的睡眠时间时用作定时器2的一个选通脉冲。选择哪个振荡器作为32kHz时钟源,是通过CLKCONCMD.OSC32K寄存器位执行的。实施步骤启动IAR软件,新建一个工程“TIMER_SET”,具体步骤参见“实训1-2新建与调试ZigBee工程”。代码部分参照书中描述。1实训源码1)宏定义2实训部分代码解析#defineDISABLE_ALL_INTERRUPTS()(IEN0=IEN1=IEN2=0x00)2)时钟配置#defineSET_MAIN_CLOCK_SOURCE(source)\do{if(source){CLKCONCMD|=0x40;if(TICKSPD==0){CLKCONCMD|=0x08;}SLEEPCMD|=0x04;}else{SLEEPCMD&=~0x04;asm("NOP");CLKCONCMD&=~0x47;SLEEPCMD|=0x04;}}while(0)3)功能实现while(1){SET_MAIN_CLOCK_SOURCE(RC);for(i=0;i<20;i++){UINT16timeOut=0xFFFF;while(timeOut--);LED1=!LED1; //LED闪烁

}

SET_MAIN_CLOCK_SOURCE(CRYSTAL);for(i=0;i<20;i++){UINT16timeOut=0xFFFF;while(timeOut--);LED1=!LED1; //LED闪烁

}}成果检验自我考核认真观察闪烁的频率是否有规律地变化(一会慢闪一会快闪)。02查看LED1(D9)是否闪烁。01修改程序,实现通过按键来修改不同频率模式下的工作。CONTENT目录3412实训2-1通用数字接口控制实训2-2配置时钟实训2-3配置外部中断实训2-4配置定时器实训简介所谓中断,是指CPU在正常执行程序的过程中,由于内部或外部事件的触发或由程序的预先安排,引起CPU暂时中断当前正在运行的程序,而转去执行为内部或外部事件或程序预先安排的事件的服务子程序。待中断服务子程序执行完毕后,CPU再返回到被暂时中断的程序处(断点)继续执行原来的程序。CC2530有18个中断源。每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。相应标志位请求的每个中断可以分别使能或禁用。实训目的2了解CC2530外部中断功能的运用。1了解CC2530外部中断的配置。实训内容2烧录程序并进行硬件上的验证。1用中断编写一个使用SW1按键控制LED亮灭的程序。通用I/O引脚在设置为输入后,可以用于产生中断。中断可以设置在外部信号的上升或下降沿触发。P0、P1和P2端口都有中断使能位,对位于IENl、IEN2寄存器内的端口所有的位都是公共的。如下:1通用I/O中断IEN1.P0IE:P0中断使能。IEN2.P1IE:P1中断使能。IEN2.P2IE:P2中断使能。知识链接除了这些公共中断使能之外,每个端口的位都有位于SFR寄存器P0IEN、P1IEN和P2IEN的单独的中断使能。即使配置为外设I/O或通用输出的I/O引脚使能时,也能产生中断。当中断条件发生在任意一个I/O引脚上时,P0~P2中断标志寄存器P0IFG、P1IFG或P2IFG中相应的中断状态标志将设置为1。不管引脚是否设置了它的中断使能位,中断状态标志都被设置。当中断已经执行,中断状态标志被清除,该标志写入0。这个标志必须在清除CPU端口中断标志(PxIF)之前被清除。用于中断的SFR寄存器总结如下:

P0IEN:P0中断使能。

P1IEN:P1中断使能。

P2IEN:P2中断使能。

PICTL:P0、P1和P2触发沿设置。

P0IFG:P0中断标志。

P1IFG:P1中断标志。

P2IFG:P2中断标志。每个中断请求可以通过设置中断使能SFR寄存器的中断使能位IEN0、IEN1或IEN2使能或禁止。CPU的中断使能相对应的SFR寄存器。2中断配置(1)清除中断标志。(2)如果有,则设置SFR寄存器中对应的各中断使能位为1。(3)设置寄存器IEN0、IEN1或IEN2中对应的中断使能位为1。(4)设置IEN0中的EA位为1使能全局中断。(5)在中断对应的向量地址上,运行该中断的服务程序。为了使能任一中断功能,应当采取下列步骤:实施步骤启动IAR软件,新建一个工程“EXINT_SET”,具体步骤参见“实训1-2新建与调试ZigBee工程”。代码部分参照书中描述。1实训源码1)KEY初始化2实训部分代码解析voidInitKey(void){P0SEL&=~0X03;P0DIR&=~0X03; //按键在P00、P01口,设置为输入模式

P0IEN|=0X02; //P01设置为中断方式

PICTL|=0X01; //下降沿触发

EA=1;IEN1|=0X20; //P0设置为中断方式;P0IFG|=0x00; //初始化中断标志位}2)中断处理函数#pragmavector=P0INT_VECTOR__interruptvoidP0_ISR(void){if(P0IFG>0) //按键中断

{P0IFG=0;Delay(100);if(KEY2==0) //按键中断

{KeyFlag=0;}}P0IF=0; //清中断标志

}3)功能实现while(1){if(KeyFlag==0){KeyFlag=!KeyFlag;LED1=!LED1;LED0=!LED0;}}成果检验自我考核修改程序,实现不同按键中断来控制不同LED的亮和灭。02修改程序,实现SW2按键的中断来控制LED的亮和灭。01按下SW1后是否能改变LED(D8与D9)的亮和灭状态。CONTENT目录3412实训2-1通用数字接口控制实训2-2配置时钟实训2-3配置外部中断实训2-4配置定时器实训简介定时器1是一个独立的16位定时器,支持典型的定时/计数功能,比如输入捕获、输出比较和PWM功能。该定时器拥有5个独立的捕获/比较通道。每个通道使用一个I/O引脚。定时器1用于范围广泛的控制和测量应用,5个通道具备正计数/倒计数模式,允许诸如电机控制应用的实现。综上所述,定时器1的功能特征如下:

5个捕获/比较通道 上升沿、下降沿或任何边沿的输入捕获 设置、清除或切换输出比较 自由运行、模或正计数/倒计数操作

1,8,32或128时钟分频 在每个捕获/比较和最终计数上生成中断请求

DMA触发功能实训目的2了解CC2530T1定时器功能的运用。1了解CC2530T1定时器的相关寄存器配置。实训内容2烧录程序并进行硬件上的验证。1用T1定时器控制LED1每秒钟闪烁一次。CC2530有5个定时器,即定时器1(16位定时器)、定时器2(MAC定时器)、定时器3和定时器4(均为8位定时器)、睡眠定时器。1定时器简介知识链接一个16位定时器,具有定时器/计数器/PWM功能。定时器1专门为支持IEEE802.15.4MAC或软件中其他时槽的协议设计。定时器2(MAC定时器)两个都是8位定时器,具有定时器/计数器/PWM功能。它们有一个可编程的分频器、一个8位的周期值、一个可编程的计数器通道(具有一个8位的比较值)。每个计数器通道可以用作一个PWM输出。定时器3和定时器4一个超低功耗的定时器,用于计算32kHz晶体振荡器或32kHzRC振荡器的周期。睡眠定时器在所有工作模式下(除了供电模式3)都可持续运行。这一定时器的典型应用是作为实时计数器,或作为唤醒定时器以跳出供电模式1或供电模式2。睡眠定时器定时器1包括一个16位计数器,在每个活动时钟边沿递增或递减。活动时钟边沿周期由寄存器位CLKCONCMD.TICKSPD定义,它设置全球系统时钟的划分,提供了从0.25MHz到32MHz的不同的时钟标签频率(可以使用32MHz晶体振荡器作为时钟源)。216位计数器这在定时器1中,由T1CTL.DIV设置的分频器值进一步划分。这个分频器值可以为1,8,32或128。因此,当32MHz晶体振荡器用作系统时钟源时,定时器1可以使用的最低时钟频率是1953.125Hz,最高是32MHz。当16MHzRC振荡器用作系统时钟源时,定时器1可以使用的最高时钟频率是16MHz。这个16位计数器可以作为一个自由运行计数器、模计数器,或在中心对齐的PWM里使用的正计数/倒计数器运行。可以通过两个8位的SFR寄存器T1CNTH和T1CNTL读取16位计数器的值,分别包含高位字节和低位字节。当读取T1CNTL时,计数器的高位字节在那时被缓冲到T1CNTH,以便高位字节可以从T1CNTH中读出。因此,T1CNTL必须总是在读取T1CNTH之前首先读取。对T1CNTL寄存器的所有写入访问将复位16位计数器。当达到最终计数值(溢出)时,计数器产生一个中断请求。可以用T1CTL控制寄存器设置启动和停止该计数器。当一个不是00的值写入到T1CTL.MODE时,计数器开始运行。如果00写入到T1CTL.MODE,计数器将停止在它现在的值上。一般来说,控制寄存器T1CTL用于控制定时器1的操作,状态寄存器T1STAT保存中断标志。下面介绍一下各种操作模式。3定时器1的操作1)自由运行模式在自由运行操作模式下,计数器从0x0000开始,在每个活动时钟边沿增加1。当计数器达到0xFFFF(溢出)时,计数器载入0x0000,继续递增它的值,如右图所示。自由运行模式当达到最终计数值0xFFFF时,设置标志IRCON.T1IF和T1STAT.OVFIF。如果设置了相应的中断屏蔽位TIMIF.OVFIM以及IEN1.T1EN,将产生一个中断请求。自由运行模式可以用于产生独立的时间间隔和输出信号频率。2)模模式当定时器运行在模模式时,16位计数器从0x0000开始,在每个活动时钟边沿增加1。当计数器达到T1CC0(溢出)即寄存器T1CC0H:T1CC0L保存的最终计数值时,计数器将复位到0x0000,并继续递增,如右图所示。模模式如果定时器开始于T1CC0以上的一个值,当达到最终计数值(0xFFFF)时,设置标志IRCON.T1IF和T1STAT.OVFIF。如果设置了相应的中断屏蔽位TIMIF.OVFIM以及IEN1.T1EN,将产生一个中断请求。模模式可以用于周期不是0xFFFF的应用程序。3)正计数/倒计数模式在正计数/倒计数模式,计数器反复从0x0000开始,正计数直到达到T1CC0H:T1CC0L保存的值,然后计数器将倒计数直到0x0000,如右图所示。正计数/倒计数模式这个定时器用于周期必须是对称输出脉冲而不是0xFFFF的应用程序,因此允许中心对齐的PWM输出应用的实现。在正计数/倒计数模式下,当达到最终计数值时,设置标志IRCON.T1IF和T1STAT.OVFIF。如果设置了相应的中断屏蔽位TIMIF.OVFIM以及IEN1.T1EN,将产生一个中断请求。实施步骤启动IAR软件,新建一个工程“T1_SET”,具体步骤参见“实训1-2新建与调试ZigBee工程”。代码部分参照书中描述。1实训源码1)定时器T1初始化2实训部分代码解析voidInitialT1(void){ //初始化计数器1

T1CTL=0x05;T1STAT=0x21; //通道0,中断有效,8分频;自动重装模式(0x0000->0xffff)}2)功能实现while(1){if(IRCON>0){IRCON=0; //清溢出标志

counter++;if(counter>=15) //中断计数,约0.25s{counter=0;LEDFlag=!LEDFlag;}}if(LEDFlag){LED1=!LED1; //LED灯每隔1s闪烁一下

LED0=!LED0;LEDFlag=!LEDFlag; //闪烁标志变量置0}}成果检验自我考核修改程序,通过T1定时中断来控制LED的变化。02修改程序,实现LED闪烁的时间变化。01查看LED灯(D8与D9)是否每秒闪烁一次。谢谢观看ZigBee无线传感器网络设计实战3PARTTHREECC2530单片机进阶开发CONTENT目录3412实训3-1看门狗应用实训3-2串口通信实训3-3ADC单次采样实训3-4采集温度信息实训简介在CPU可能受到软件颠覆或者外部电磁干扰的情况下,容易使单片机系统死掉,这时看门狗定时器(WatchdogTimer,WDT)可被用来作为一种恢复的手段。当软件在指定的时间间隔里不能清除WDT时,WDT就会复位系统。看门狗可以用于那些会受到电磁噪声、电源故障、静电放电影响的应用,或者需要高可靠性的应用。如果一个应用不需要看门狗功能,可以将看门狗定时器配置成一个间隔定时器,用于在指定的时间间隔产生中断。看门狗定时器的主要特性如下:

4个可选的定时器间隔。 看门狗模式。 定时器模式。 在定时器模式下产生中断请求。WDT可配置成一个看门狗定时器,也可配置成一个通用定时器。WDT模块的运行由WDCTL寄存器控制。看门狗定时器包含一个由32kHz时钟源同步的15位计数器。需要注意的是,用户并不能获得15位计数器的内容。15位计数器的内容在所有供电模式下都能保持,而当再次进入主动模式时,看门狗定时器继续计数。实训目的1

了解CC2530看门狗相关寄存器的配置。2

了解CC2530看门狗功能的运用。实训内容用看门狗实现一个SW2控制LED1闪烁时LED0不亮的程序。1烧录程序并进行硬件上的验证。2知识链接1看门狗模式系统复位后,看门狗定时器会被禁用。要在看门狗模式下启动WDT,WDCTL.MODE[1:0]位必须设置为10。然后看门狗定时器的计数器从0开始递增。在看门狗模式下,一旦定时器使能,就不能禁用定时器了。WDT运行在32.768kHz的看门狗定时器时钟频率上(当使用32kHz晶体振荡器时)。当计数值分别设置为64,512,8192和32768时,时钟频率对应的超时时间为1.9ms,15.625ms,0.25s和1s。如果计数器达到了选定的定时器间隔值,看门狗定时器就产生一个复位信号给系统。如果在计数器达到选定的定时器间隔值之前,执行了一个看门狗清除序列,计数器就复位为0并继续递增。看门狗清除序列包括在一个看门狗时钟周期内写0xA到WDCTL.CLR[3:0],接着写0x5到同一个寄存器位。如果在看门狗周期结束之前,这个序列没有被完全执行,看门狗定时器就会产生一个复位信号给系统。在看门狗模式下,如果WDT已经使能,就不能通过写WDCTL.MODE[1:0]位来改变这个模式,定时器间隔值也不能改变。在看门狗模式下,WDT不会产生中断请求。2定时器模式要在定时器模式下启动WDT,WDCTL.MODE[1:0]位必须设置为11。定时器启动后,计数器从0开始递增。当计数器达到选定的间隔值时,定时器将产生一个中断请求(IRCON2.WDTIF/IEN2.WDTIE)。在定时器模式,可以通过写1到WDCTL.CLR[0]来清除定时器内容。当定时器被清除,计数器内容就被置为0。写00或01到WDCTL.MODE[1:0]将停止定时器并清除它为0。定时器间隔通过WDCTL.INT[1:0]位设置。在定时器运行期间,不能改变定时器间隔,故当定时器启动时应设置定时器间隔。在定时器模式,到达定时器间隔不会产生复位。如果选择了看门狗模式,在芯片复位之前无法选择定时器模式。实施步骤启动IAR软件,新建一个工程“WDT_SET”,具体步骤参见“实训1-2新建与调试ZigBee工程”。代码部分参照书中描述。1实训源码1)看门狗初始化2实训部分代码解析voidInit_Watchdog(void){WDCTL=0x00; //时间间隔一秒,看门狗模式

WDCTL|=0x08; //启动看门狗}2)喂狗函数voidFeedDog(void){WDCTL=0xa0;WDCTL=0x50;}3)功能实现voidmain(void){SET_MAIN_CLOCK(0); //设置系统晶振时钟

InitLed(); //初始化LEDInitKey(); //初始化按键控制I/O口

Init_Watchdog(); //初始化看门狗

LED1=1;//当按下键1值时,系统不喂狗,一直复位,LED1则一直闪烁

Delay(5000);while(1){if(KEY1!=0)//读取按键动作,如果按键没有按下则一直执行{FeedDog();//喂狗指令(加入后系统不复位,小灯一直闪烁)

LED0=!LED0;Delay(5000);}LED1=0;Delay(5000);}}成果检验自我考核LED(D9)正常运行情况下是否处于不亮状态。02查看LED(D8)是否闪烁。01修改程序,实现不同时间的喂狗测试。SW2按下后LED(D9)是否闪烁,且LED(D8)不亮。03CONTENT目录3412实训3-1看门狗应用实训3-2串口通信实训3-3ADC单次采样实训3-4采集温度信息实训简介CC2530有两个串行通信接口,即USART0和USART1,它们具有相同的功能,可以设置在单独的I/O引脚,均能分别运行于异步UART模式和同步SPI模式,本实训仅涉及异步UART模式。异步串行接口都提供UART模式。在UART模式中,接口使用两线或者含有引脚RXD和TXD、可选RTS和CTS的四线连接。UART运行模式具有下列特点:

8位或者9位负载数据。 奇校验、偶校验或者无奇偶校验。 配置起始位和停止位电平。 配置LSB(最低有效位)或者MSB(最高有效位)首先传送。 独立收发中断。 独立收发DMA触发。 奇偶校验和帧校验出错状态。实训目的2了解CC2530串口功能的运用。1了解CC2530串口寄存器的配置。实训内容2烧录程序并进行硬件上的验证。1使用串口输出“Hello!!”。知识链接UART模式提供全双工异步传送,接收器中的位同步不影响发送功能。传送一个UART字节包含1个起始位、8个数据位、1个作为可选项的第9位数据或者奇偶校验位、1个或2个停止位。注意,虽然真实的数据包含8位或者9位,但是数据传送只涉及一个字节。UART操作由USART控制和状态寄存器UxCSR、UART控制寄存器UxUCR来控制。这里的x是USART的编号,其数值为0或者1。当UxCSR.MODE设置为1时,就选择了UART模式。1UART发送当USART收/发数据缓冲寄存器UxDBUF写入数据时,UART发送启动,该字节发送到输出引脚TXDx。UxDBUF是双缓冲寄存器。当字节传送开始时,UxCSR.ACTIVE位变为高电平;当字节传送结束时,UxCSR.ACTIVE位变为低电平。当传送结束时,UxCSR.TX_BYTE位设置为1。当UxDBUF寄存器就绪,准备接收新的发送数据时,会产生一个中断请求。该中断在传送开始之后立刻发生。因此,当字节正在发送时,新的数据字节能够装入数据缓冲器。2UART接收当1写入UxCSR.RE位时,在UART上数据接收就开始了。UART会在输入引脚RXDx中寻找有效起始位,并设置UxCSR.ACTIVE位为高电平。当检测出有效起始位时,收到的字节就会传入到接收寄存器,UxCSR.RX_BYTE位设置为1。该操作完成时,产生接收中断。同时,UxCSR.ACTIVE位变为低电平。通过寄存器UxDBUF提供收到的数据字节。当UxDBUF读出时,UxCSR.RX_BYTE位由硬件清0。3UART特征格式如果寄存器UxUCR中的BIT9和奇偶校验位设置为1,那么奇偶校验产生而且检测使能。奇偶校验计算出来,作为第9位来传送。在接收期间,奇偶校验位计算出来而且与收到的第9位进行比较。如果奇偶校验出错,则UxCSR.ERR位设置为高电平。当读取UxCSR时,UxCSR.ERR位清除。要传送的停止位的数量设置为1或者2,这取决于寄存器位UxUCR.SPB。接收器总是要核对一个停止位。如果在接收期间收到的第一个停止位不是期望的停止位电平,就通过设置寄存器位UxCSR.FE为高电平发出帧出错信号。当读取UxCSR时,UxCSR.FE位清除。当UxUCR.SPB设置为1时,接收器将核对两个停止位。注意当检测到第一个停止位正确时,将设置RX中断。如果第二个停止位不正确,设置帧误码位UxCSR.FE时将有一个延迟。这个延迟与波特率有关(位持续时间)。4USART寄存器CC2530有USART0和USART1两个串口,可以通过设置相应的寄存器来决定选用哪一个串口。对于每个USART,有如下5个寄存器(x是USART的编号,为0或者1):

UxCSR:USARTx控制和状态寄存器。

UxUCR:USARTxUART控制寄存器。

UxGCR:USARTx通用控制寄存器。

UxDBUF:USARTx接收/发送数据缓冲寄存器。

UxBAUD:USARTx波特率控制寄存器。实施步骤启动IAR软件,新建一个工程“USART_SET”,具体步骤参见“实训1-2新建与调试ZigBee工程”。代码部分参照书中描述。1实训源码1)串口初始化2实训部分代码解析voidinitUART(void){CLKCONCMD&=~0x40; //设置系统时钟源为32MHz晶振

while(CLKCONSTA&0x40); //等待晶振稳定

CLKCONCMD&=~0x47; //设置系统主时钟频率为32MHzPERCFG=0x00; //位置1P0口

P0SEL=0x3c; //P0_2,P0_3,P0_4和P0_5用作串口

P2DIR&=~0XC0; //P0优先作为USART0U0CSR|=0x80; //UART方式

U0GCR|=10;U0BAUD|=59; //波特率设为38400

UTX0IF=0; //USART0TX中断标志初始置位0}2)串口发送函数voidUartTX_Send_String(char*Data,intlen){intj;for(j=0;j<len;j++){U0DBUF=*Data++;while(UTX0IF==0);UTX0IF=0;}}3)功能实现while(1){if(KeyScan()&0x01) //读取按键动作

{

LED0=!LED0;}LED1=!LED1;UartTX_Send_String(Txdata,sizeof(Txdata)) //串口发送数据

Delay(50000);Delay(50000);}成果检验(1)查看LED(D9)是否闪烁,查看串口接收数据指示灯D5是否闪烁。(2)查看串口调试工具是否接收到正确数据,如右图所示。串口接收数据自我考核修改程序,实现串口数据的接收处理。CONTENT目录3412实训3-1看门狗应用实训3-2串口通信实训3-3ADC单次采样实训3-4采集温度信息实训简介CC2530具有ADC功能。ADC支持14位的模拟/数字转换,有效位数(ENOB)多达12位。它包括一个模拟多路转换器(具有多达8个各自可配置的通道)和一个参考电压发生器,并通过DMA将转换结果写入存储器。此外,它还具有多种运行模式。ADC的主要特性如下: 可选的抽取率,这也设置了分辨率(7到12位)。

8个独立的输入通道,可接收单端或差分信号。 参考电压可选为内部、外部单端、外部差分或AVDD5。 产生中断请求。 转换结束时的DMA触发。 温度传感器输入。 电池测量功能。实训目的2了解CC2530ADC单次采集功能的运用。1了解CC2530ADC的相关寄存器配置。实训内容2烧录程序并进行硬件上的验证。1编写一个ADC采集外部滑动变阻器电压的程序。

知识链接ADC操作主要包括ADC输入、ADC转换序列、单个ADC转换、ADC运行模式、ADC转换结果、ADC参考电压、ADC转换时间、ADC中断等。1ADC输入端口0引脚的信号可以用作ADC输入。在下面的描述中,这些端口引脚指的是AIN0~AIN7引脚。输入引脚AIN0~AIN7是连接到ADC的。可以把输入配置为单端或差分输入。在选择差分输入的情况下,差分输入包括输入对AIN0-AIN1、AIN2-AIN3、AIN4-AIN5和AIN6-AIN7。注意负电压不适用这些引脚,大于VDD(未调节电压)的电压也不适用。它是在差分模式下转换的输入对之间的差。除了输入引脚AIN0~AIN7,片上温度传感器的输出也可以选择作为ADC的输入,用于温度测量。还可以输入一个对应AVDD5/3的电压,作为ADC输入。这个输入允许诸如需要在应用中实现电池监测器的功能。需要注意的是,在这种情况下参考电压不能取决于电源电压,比如AVDD5电压不能作为参考电压。单端输入AIN0~AIN7以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论