基于嵌入式的室内环境信息采集系统设计样本_第1页
基于嵌入式的室内环境信息采集系统设计样本_第2页
基于嵌入式的室内环境信息采集系统设计样本_第3页
基于嵌入式的室内环境信息采集系统设计样本_第4页
基于嵌入式的室内环境信息采集系统设计样本_第5页
已阅读5页,还剩33页未读 继续免费阅读

付费下载

VIP免费下载

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

文档简介

*******************实践教学*************************************学院秋季学期嵌入式系统课程设计题目:基于嵌入式室内环境信息采集控制演示系统设计专业班级:计算机科学与技术(物联网工程方向)姓名:学号:指引教师:成绩:目录题目:基于嵌入式的室内环境信息采集控制演示系统设计 1目录 2摘要 3关键词 3前言 3系统分析及其设计 4一、基本原理: 4二、系统方案设计 5三、总体设计 7四、系统测试 31总结 31参考文献 32致谢 32基于嵌入式室内环境信息采集控制演示系统设计摘要基于嵌入式无线传感网络是多学科高度交叉,知识高度集成前沿热点研究领域。它通过各类集成化微型传感器协作地实时监测,感知和采集各种环境或监测对象信息,这些信息通过无线方式被发送,并以自组多跳网络方式传送到顾客终端无线传感器网络特性决定了其不需要较高传播带宽,而规定较低传播延时和极低功率消耗。IEEES02.15.4/ZigBee技术是近年来通信领域中研究热点,具备低成本、低功耗、低速率、低复杂度特点和高可靠性、组网简朴、灵活等优势,逐渐成为无线传感器网络事实上国际原则。本次课设设计并实现了用无线传感器网络构成分布式温度湿度监控系统。核心词:嵌入式、信息采集、ZIGBEE、串口通信前言嵌入式系统是以应用为中心,以计算机技术为基本,软硬件可定制,合用于不同应用场合,对功能,可靠性,成本,体积,功耗有严格规定专用计算机系统[1]。随着生活水平提高和科学技术发展需求,人类对环境信息感知上有了更高规定,在某些特殊工业生产领域和室内存储场合对环境规定显得特别苛刻;随着嵌入式技术发展,为环境环境检测提供了更进一步保障。基于嵌入式环境信息采集系统包括感知层、传播层、应用层三个层面;传播层常用有温湿度、烟感、一氧化碳、压力等嵌入式传感器模块,传播层涉及有线通信和无线通信两某些,应用层涉及各种终端。在室内环境监测领域,以嵌入式技术为基本,结合ZigBee技术可以实现、精确、完整、可靠反映环境信息,做到实时监控。系统分析及其设计一、基本原理:温度传感器将被测点温度采集后输出模仿信号逐渐送往放大电路、低通滤波器以及A/D转换器(即信号调理电路),然后再单片机控制下将A/D转换器输出数字信号传送到无线收发芯片中,并通过芯片调制解决后由芯片内部天线发送到上位机机监测软件上,在上位机模块上,发来数据由单片机控制无线收发芯片接受并解调,最后通过接口芯片发送到PC机中进行显示和解决。温度传感器被用在终端节点上,当上电后,温度传感器就是可以获取环境中某个地方温度敏感元器件,它可以将环境中温度或者是与温度有关参量信息转换成电信号,咱们可以依照这些电信号强弱来辨认被测点在环境中温度数据。系统方案设计系统设计需求湿度传感器和温度传感器采集到数据后,通过给RS232串口增长无线传播功能,代替设备电缆线进行无线传播,无线温度采集系统变化了老式有线数据采集系统搭建布线困难,监测区域受限等诸多局限性。规定设计短距离无线通信系统具备功耗少,性价比高,系统维护快捷以便,并且通过在传感器模块上添加FLASH存储设备,使得数据采集工作可以挣脱对监测过程网络辐射范畴限制,可应用到许多场合更好改进采集工作便捷行。通过与其她通信技术(如GSM/GPRS)无缝接合,可以实现采集数据远程传播,满足对数据采集区域远程监控串口传播设计为双向全双工,无硬件流控制,强制容许OTA(多条)时间和丢包重传。2、系统方案设计方案一:飞思卡尔公司(Freescale)MC13193芯片搭载了满足IEEE802.15.4原则射频信号传播与接受调制解调设备。此类功能完善双向2.4GHz频段收发设备可以融合到ZigBee技术之中。MC13193包括低噪放大器,10mW功率增强器,压控振荡器,电源供应调节模块,所有频段编码和解码模块,涉及可以转换和控制数据发送与接受串行外围接口(SPI)中断祈求输出。采用O-QPSK调制方式,最大传播速率为250kb/s。搭配高性能微解决器一起使用,MC13193可以提供低成本且高效率短距离数据传播解决方案。MC13193和MCU两者采用串行外围接口(SPI)连接,因而可以保证飞思卡尔庞大产品系列中任意一款MCU都能与之匹配使用。方案二:选取TI公司2.4GHz片上系统解决方案CC2530,CC2530是用于IEEES02.15.4、Zigbee和RF4CE应用一种片上系统解决方案,它能以较低总成本建立强大网络节点。CC2530结合了先进RF收发器性能,业界原则增强型8051内核,使操作更容易,具备不同运营模式,特别合用于低功耗系统需求。3、系统方案选取通过对比以上两种方案开发难易限度、开发周期和既有实验环境咱们选取方案二。无线温度采集系统变化了老式有线数据采集系统搭建布线困难,监测区域受限等诸多局限性。ZigBee这种新兴短距离无线通信系统具备功耗少,性价比高,系统维护快捷以便,并且通过在传感器模块上添加FLASH存储设备,使得数据采集工作可以挣脱对监测过程网络辐射范畴限制[2],可应用到许多场合更好改进采集工作便捷行。通过与其她通信技术(如GSM/GPRS)无缝接合,可以实现采集数据远程传播,满足对数据采集区域远程监控。普通以ZigBee技术为核心无线温度采集系统工作过程为:协调器节点一方面应搭建网络,等待各自终端采集节点入网祈求;终端节点通过验证加入网络后,把温度传感器采集到数据通过无线网络上传传播给协调器节点;协调器节点接受到数据包后,进行数据包解析,并通过串口将温度信息以及子节点地址等有效信息存储并显示在监控界面上。三、总体设计无线传感器温度测量系统重要由单个ZigBee协调器、单部PC机和放置在各处温度采集节点—ZigBee终端设备构成。ZigBee协调器与各个终端节点形成了一种ZigBee星型网络。整个无线温度采集系统拓扑构造图如图1所示。各处温度采集节点—ZigBee终端设备构成。CC2530芯片有效通信半径为100m时,终端节点可以安顿在以协调器为中心100m半径范畴内。终端数据采集节点构造较为简化,仅由一种CC2530模块,Flash存储,2节1.5V电池和温度传感器构成,各个终端节点被初始化为无信标网络中终端设备。终端设备上电复位后,便启动搜索指定信道上ZigBee协调器,并发送连接祈求,终端设备在成功入网后,将被赋予一种16位短地址,在后来网络中通信都以这个16位短地址作为节点标记;启动休眠定期器,间隔10秒钟唤醒一次,醒来后使用一种简朴非时隙CSMA-CA,通过竞争机制获得信道使用权,自己向协调器节点发送祈求数据。运用模块上温度传感器模块检测环境温度,并上传给协调器节点,然后及时再次进入休眠状态,最大限度地减少能耗,延长终端节点电源续航时间,同步也可以延伸采集范畴,即运用ZigBe网络自组织性咱们可以携带轻巧终端数据采集节点到实际测量区域完毕数据采集工作,如果超过了无线网络可以支持传播范畴,那可以将数据暂时存储在Flash存储器中。网络中协调器节点负责收集各温度采集节点信息,并将信息迅速通过RS232串口按事先定义好格式上传PC机,随后解析并显示出来。1、总体设计框图如下:图1无线温湿度采集系统框图2、硬件设计实物图如下:2.1CC2530邮票孔节点模块2.2无线节点模块2.3温湿度采集模块3、温湿度监测芯片阐明3.1SHT10阐明SHT10是一款高度集成温度湿度传感器芯片,提供全标定数字输出。它采用专利COMSens技术,保证了传感器具备极高可靠性与卓越长期稳定性。传感器涉及涉及一种电容性聚合体测湿敏感元件、一种能隙材料制成测温元件[3],并在同一芯片上,与14位A/D转换器以及串行接口电路进行连接。SH10引脚特性如下:3.1.1、电源引脚SHT10供电电压为2.4~5.5V。传感器上电后,要等待11ms以越过“休眠”状态。在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增长一种100nF电容,用以去耦滤波。3.1.2、串行接口(两线双向)SHT10串行接口,在传感器信号读取及电源损耗方面,都做了优化解决;但与I2C接口不兼容.3.1.3、串行时钟输入(SCK)SCK用于微解决器与SHTxx之间通讯同步。由于接口包括了完全静态逻辑,因而不存在最小SCK频率。3.1.4、串行数据(DATA)DATA三态门用于数据读取。DATA在SCK时钟下降沿之后变化状态,并仅在SCK时钟上升沿有效。数据传播期间,在SCK时钟高电平时,DATA必要保持稳定。为避免信号冲突,微解决器应驱动DATA在低电平。需要一种外部上拉电阻(例如:10kΩ)将信号提拉至高电平(参见图2)。上拉电阻普通已包括在微解决器I/O电路中。3.1.5、串行时钟输入(SCK)SCK用于微解决器与SHTxx之间通讯同步。由于接口包括了完全静态逻辑,因而不存在最小SCK频率。3.1.6、串行数据(DATA)DATA三态门用于数据读取。DATA在SCK时钟下降沿之后变化状态,并仅在SCK时钟上升沿有效。数据传播期间,在SCK时钟高电平时,DATA必要保持稳定。为避免信号冲突,微解决器应驱动DATA在低电平。需要一种外部上拉电阻(例如:10kΩ)将信号提拉至高电平(参见图2)。上拉电阻普通已包括在微解决器I/O电路中。3.1.7、测量时序(RH和T)发布一组测量命令(‘00000101’表达相对湿度RH,‘00000011’表达温度T)后,控制器要等待测量结束。这个过程需要大概11/55/210ms,分别相应8/12/14bit测量。确切时间随内部晶振速度,最多有±15%变化。SHTxx通过下拉DATA至低电平并进入空闲模式,表达测量结束。控制器在再次触发SCK时钟前,必要等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其他任务在需要时再读出数据。接着传播2个字节测量数据和1个字节CRC奇偶校验。uC需要通过下拉DATA为低电平,以确认每个字节。所有数据从MSB开始,右值有效(例如:对于12bit数据,从第5个SCK时钟起算作MSB;而对于8bit数据,首字节则无意义)。用CRC数据确认位,表白通讯结束。如果不使用CRC-8校验,控制器可以在测量值LSB后,通过保持确认位ack高电平,来中断通讯。在测量和通讯结束后,SHTxx自动转入休眠模式。3.1.8、通讯复位时序如果与SHTxx通讯中断,下列信号时序可以复位串口:当DATA保持高电平时,触发SCK时钟9次或更多。在下一次指令前,发送一种“传播启动”时序。这些时序只复位串口,状态寄存器内容依然保存。通讯复位时序图4、CC2530阐明4.1、简介CC2530是用于2.4-GHz

IEEE802.15.4、ZigBee和RF4CE应用一种真正片上系统(SoC)解决方案。它可以以非常低总材料成本建立强大网络节点。CC2530结合了领先RF收发器优良性能,业界原则增强型8051CPU,系统内可编程闪存,8-KBRAM和许多其他强大功能。CC2530有四种不同闪存版本:CC2530F32/64/128/256,分别具备32/64/128/256KB闪存。CC2530具备不同运营模式,使得它特别适应超低功耗规定系统。运营模式之间转换时间短进一步保证了低能源消耗。CC2530F256结合了德州仪器业界领先黄金单元ZigBee

合同栈(Z-Stack™),提供了一种强大和完整ZigBee解决方案。CC2530F64结合了德州仪器黄金单元RemoTI,更好地提供了一种强大和完整ZigBeeRF4CE

远程控制解决方案。4.2、引脚描述引脚名称引脚引脚类型描述AVDD128电源(模仿)2-V–3.6-V模仿电源连接AVDD227电源(模仿)2-V–3.6-V模仿电源连接AVDD324电源(模仿)2-V–3.6-V模仿电源连接AVDD429电源(模仿)2-V–3.6-V模仿电源连接AVDD521电源(模仿)2-V–3.6-V模仿电源连接AVDD631电源(模仿)2-V–3.6-V模仿电源连接DCOUPL40电源(数字)1.8V数字电源去耦。不使用外部电路供应。DVDD139电源(数字)2-V–3.6-V数字电源连接DVDD210电源(数字)2-V–3.6-V数字电源连接GND-接地接地衬垫必要连接到一种结实接地面。GND1,2,3,4未使用引脚

连接到GNDP0_019数字I/O端口0.0P0_118数字I/O端口0.1P0_217数字I/O端口0.2P0_316数字I/O端口0.3P0_415数字I/O端口0.4P0_514数字I/O端口0.5P0_613数字I/O端口0.6P0_712数字I/O端口0.7P1_011数字I/O端口1.0-20-mA驱动能力P1_19数字I/O端口1.1-20-mA驱动能力P1_28数字I/O端口1.2P1_37数字I/O端口1.3P1_46数字I/O端口1.4P1_55数字I/O端口1.5P1_638数字I/O端口1.6P1_737数字I/O端口1.7P2_036数字I/O端口2.0P2_135数字I/O端口2.1P2_234数字I/O端口2.2P2_333数字I/O模仿端口2.3/32.768kHzXOSCP2_432数字I/O模仿端口2.4/32.768kHzXOSCRBIAS30模仿I/O参照电流外部精密偏置电阻RESET_N20数字输入复位,活动到低电平RF_N26RFI/ORX期间负RF输入信号到LNARF_P25RFI/ORX期间正RF输入信号到LNAXOSC_Q122模仿I/O32-MHz晶振引脚1或外部时钟输入XOSC_Q223模仿I/O32-MHz晶振引脚24.3、模块阐明CC2530芯片系列中使用8051CPU内核是一种单周期8051兼容内核。它有三种不同内存访问总线(SFR,DATA和CODE/XDATA),单周期访问SFR,DATA和主SRAM。它还涉及一种调试接口和一种18输入扩展中断单元。中断控制器总共提供了18个中断源,分为六个中断组,每个与四个中断优先级之一有关。当设备从活动模式回到空闲模式,任一中断服务祈求就被激发。某些中断还可以从睡眠模式(供电模式1-3)唤醒设备。内存仲裁器位于系统中心,由于它通过SFR

总线把CPU和DMA控制器和物理存储器以及所有外设连接起来。内存仲裁器有四个内存访问点,每次访问可以映射到三个物理存储器之一:一种8-KBSRAM、闪存存储器和XREG/SFR

寄存器。它负责执行仲裁,并拟定同步访问同一种物理存储器之间顺序。8-KBSRAM映射到DATA存储空间和某些XDATA存储空间。8-KBSRAM是一种超低功耗SRAM,虽然数字某些掉电(供电模式2和3)也能保存其内容。这是对于低功耗应用来说很重要一种功能。32/64/128/256KB闪存块为设备提供了内电路可编程非易失性程序存储器,映射到XDATA

存储空间。除了保存程序代码和常量以外,非易失性存储器容许应用程序保存必要保存数据,这样设备重启之后可以使用这些数据。使用这个功能,例如可以运用已经保存网络详细数据,就不需要通过完全启动、网络寻找和加入过程。4.4、时钟和电源管理数字内核和外设由一种1.8-V低差稳压器供电。它提供了电源管理功能,可以实现使用不同供电模式长电池寿命低功耗运营。有五种不同复位源来复位设备。4.5、外设CC2530涉及许多不同外设,容许应用程序设计者开发先进应用。调试接口执行一种专有两线串行接口,用于内电路调试。通过这个调试接口,可以执行整个闪存存储器擦除、控制使能哪个振荡器、停止和开始执行顾客程序、执行8051

内核提供指令、设立代码断点,以及内核中所有指令单步调试。使用这些技术,可以较好地执行内电路调试和外部闪存编程。设备具有闪存存储器以存储程序代码。闪存存储器可通过顾客软件和调试接口编程。闪存控制器解决写入和擦除嵌入式闪存存储器。闪存控制器容许页面擦除和4

字节编程。I/O控制器负责所有通用I/O引脚。CPU可以配备外设模块与否控制某个引脚或它们与否受软件控制,如果是话,每个引脚配备为一种输入还是输出,与否连接衬垫里一种上拉或下拉电阻。CPU中断可以分别在每个引脚上使能。每个连接到I/O

引脚外设可以在两个不同I/O引脚位置之间选取,以保证在不同应用程序中灵活性。系统可以使用一种多功能五通道DMA控制器,使用XDATA存储空间访问存储器,因而可以访问所有物理存储器。每个通道(触发器、优先级、传播模式、寻址模式、源和目的指针和传播计数)用DMA描述符在存储器任何地方配备。许多硬件外设(AES

内核、闪存控制器、USART、定期器、ADC接口)通过使用DMA控制器在SFR或XREG地址和闪存/SRAM之间进行数据传播,获得高效率操作。定期器1是一种16位定期器,具备定期器/PWM功能。它有一种可编程分频器,一种16位周期值,和五个各自可编程计数器/捕获通道,每个均有一种16位比较值。每个计数器/捕获通道可以用作一种PWM输出或捕获输入信号边沿时序。它还可以配备在IR产生模式,计算定期器3周期,输出是ANDed,定期器3输出是用最小CPU互动产生调制消费型IR信号。MAC定期器(定期器2)是专门为支持IEEE802.15.4MAC或软件中其她时槽合同设计。定期器有一种可配备定期器周期和一种8位溢出计数器,可以用于保持跟踪已经通过周期数。一种16位捕获寄存器也用于记录收到/发送一种帧开始界定符精准时间,或传播结束精准时间,尚有一种16位输出比较寄存器可以在详细时间产生不同选通命令(开始RX,开始TX,等等)到无线模块。定期器3和定期器4是8位定期器,具备定期器/计数器/PWM功能。它们有一种可编程分频器,一种8位周期值,一种可编程计数器通道,具备一种8位比较值。每个计数器通道可以用作一种PWM输出。睡眠定期器是一种超低功耗定期器,计算32-kHz晶振或32-kHzRC振荡器周期。睡眠定期器在除了供电模式3所有工作模式下不断运营。这一定期器典型应用是作为实时计数器,或作为一种唤醒定期器跳出供电模式1或2。ADC支持7到12位辨别率,分别在30kHz或4kHz带宽。DC和音频转换可以使用高达八个输入通道(端口0)。输入可以选取作为单端或差分。参照电压可以是内部电压、AVDD或是一种单端或差分外部信号。ADC尚有一种温度传感输入通道。ADC可以自动执行定期抽样或转换通道序列程序。随机数发生器使用一种16位LFSR来产生伪随机数,这可以被CPU读取或由选通命令解决器直接使用。例如随机数可以用作产生随机密钥,用于安全。AES加密/解密内核容许顾客使用带有128位密钥AES算法加密和解密数据。这一内核可以支持IEEE802.15.4MAC安全、ZigBee网络层和应用层规定AES操作。一种内置看门狗容许CC2530在固件挂起状况下复位自身。当看门狗定期器由软件使能,它必要定期清除;否则,当它超时就复位它就复位设备。或者它可以配备用作一种通用32-kHz

定期器。USART0和USART1每个被配备为一种SPI主/从或一种UART。它们为RX和TX提供了双缓冲,以及硬件流控制,因而非常适合于高吞吐量全双工应用。每个均有自己高精度波特率发生器,因而可以使普通定期器空闲出来用作其她用途。4.6、无线设备CC2530具备一种IEEE802.15.4兼容无线收发器。RF内核控制模仿无线模块。此外,它提供了MCU和无线设备之间一种接口,这使得可以发出命令,读取状态,自动操作和拟定无线设备事件顺序。无线设备还涉及一种数据包过滤和地址辨认模块。5、软件设计在一种ZigBee应用系统中,光有硬件是没有用,还需要与之相匹配软件程序才干真正可以使用。无线温度采集系统软件设计重要涉及ZigBee节点间通信程序,协调器节点组网程序。5软件开发环境选取ZigBee合同栈:ZigBeeZigBee开发及下载工具:TI公司IAR软件5.1、基于ZigBee无线传感器网络测控系统中协调器设备软件设计流程如下:macEventLoopmacEventLoop解决本任务当前优先级最高事件macTaskInit注册相应事件YES解决本任务当前优先级最高事件macTaskInitNwk_event_loop解决本任务当前优先级最高事件Nwk_event_loop解决本任务当前优先级最高事件nwk_initHal_InitHalProcessevet解决本任务当前优先级最高事件开始注册相应事件Hal_InitHalProcessevet解决本任务当前优先级最高事件开始MT_ProcessEventMT_TaskInit解决本任务MT_ProcessEventMT_TaskInit解决本任务当前优先级最高事件硬件初始化osalInitTASKS系统初始化注册相应事件YESosalInitTASKS系统初始化APS_event_loopAPS_Init解决本任务当前优先级最高事件注册相应事件YESAPS_event_loopAPS_Init解决本任务当前优先级最高事件执行操作系统执行操作系统ZDApp_InitZDAappeventlooppp解决本任务当前优先级最高事件注册相应事件NOYESZDApp_InitZDAappeventlooppp解决本任务当前优先级最高事件SAPI_ProcessEvent解决本任务当前优先级最高事件SAPI_ProcessEvent解决本任务当前优先级最高事件SAPI_Init注册相应事件YESSAPI_Init5.2、无线接受串口转发流程图如下:SerialApp_ProcessEventSerialApp_ProcessEventOOsal_msg_receive(SerialApp_Taskid)AAF_INCOMING_MSG_CMDSerialApp_ProcessMSGCmdSerialApp_ProcessMSGCmdHalUARTWriteHalUARTWriteOOsal_set_event(SerialApp_TaskID,SERIALAPP_RESP_EVT)SerialApp_RespSerialApp_Resp5.3、串口接受无线转发流程图如下:SerialApp_CallBackSerialApp_CallBackSerialApp_Send()SerialApp_Send()HalUARTResdHalUARTResdAF_DataResquestAF_DataResquest发送与否成功?发送与否成功?结束YES结束Osal_Set_Osal_Set_event(SerialApp_TaskID,SERIALAPPSENDEVT)6.源代码如下:#include"ZComDef.h"#include"OSAL.h"#include"OSAL_Nv.h"#include"OnBoard.h"#include"ZMAC.h"#ifndefNONWK#include"AF.h"#endif/*Hal*/#include"hal_lcd.h"#include"hal_led.h"#include"hal_adc.h"#include"hal_drivers.h"#include"hal_assert.h"#include"hal_flash.h"#include"stdio.h"//MaximunnumberofVddsamplescheckedbeforegoon#defineMAX_VDD_SAMPLES3//电压检测#defineZMAIN_VDD_LIMITHAL_ADC_VDD_LIMIT_4//正常电压极限值externboolHalAdcCheckVdd(uint8limit);//设备启动前芯片电压检测函数staticvoidzmain_dev_info(void);staticvoidzmain_ext_addr(void);staticvoidzmain_vdd_check(void);#ifdefLCD_SUPPORTEDstaticvoidzmain_lcd_init(void);#endif/**********************************************************************@fnmain*@briefFirstfunctioncalledafterstartup.*@returndon'tcare*/intmain(void){//Turnoffinterruptsosal_int_disable(INTS_ALL);//关闭所有中断EA=0//InitializationforboardrelatedstuffsuchasLEDsHAL_BOARD_INIT();//初始化系统时钟、LED所使用IO等//Makesuresupplyvoltageishighenoughtorunzmain_vdd_check();//检测芯片电压与否正常//InitializeboardI/OInitBoard(OB_COLD);//初始化LEDIO//InitialzeHALdriversHalDriverInit();//初始化芯片各个硬件模块(涉及LCD)//InitializeNVSystemosal_nv_init(NULL);//初始化FLASH存储//InitializetheMACZMacInit();//初始化MAC层//Determinetheextendedaddresszmain_ext_addr();//形成节点MAC地址//InitializebasicNVitemszgInit();//初始化某些非易失变量#ifndefNONWK//SincetheAFisn'tatask,callit'sinitializationroutineafInit();//初始化应用框架层#endif//Initializetheoperatingsystemosal_init_system();//初始化操作系统//Allowinterruptsosal_int_enable(INTS_ALL);//使能所有中断//FinalboardinitializationInitBoard(OB_READY);//初始化按键//Displayinformationaboutthisdevicezmain_dev_info();//在液晶上显示设备IEEE信息/*DisplaythedeviceinfoontheLCD*/#ifdefLCD_SUPPORTEDzmain_lcd_init();//在LCD上显示该设备信息#endif#ifdefWDT_IN_PM1/*IfWDTisused,thisisagoodplacetoenableit.*/WatchDogEnable(WDTIMX);#endifosal_start_system();//NoReturnfromherereturn0;//Shouldn'tgethere.}/**********************************************************************@fnzmain_vdd_check*@briefCheckiftheVddisOKtoruntheprocessor.*@returnReturnifVddisok;otherwise,flashLED,thenreset*********************************************************************/staticvoidzmain_vdd_check(void)//检测设备电压{uint8vdd_passed_count=0;booltoggle=0;//RepeatgettingthesampleuntilnumberoffailuresorsuccesseshitsMAX//thenbasedonthecountvalue,determineifthedeviceisreadyornotwhile(vdd_passed_count<MAX_VDD_SAMPLES)//电压正常状况下,检查3次{if(HalAdcCheckVdd(ZMAIN_VDD_LIMIT))//设立电压正常极限值并使用AD检测电压{vdd_passed_count++;//Keeptrack#timesVddpassesinarowMicroWait(10000);//Wait10mstotryagain}else{vdd_passed_count=0;//ResetpassedcounterMicroWait(50000);//Wait50msMicroWait(50000);//Waitanother50mstotryagain}/*toggleLED1andLED2*/if(vdd_passed_count==0){if((toggle=!(toggle)))HAL_TOGGLE_LED1();elseHAL_TOGGLE_LED2();}}/*turnoffLED1*/HAL_TURN_OFF_LED1();HAL_TURN_OFF_LED2();}/***************************************************************************************************@fnzmain_ext_addr**@briefExecuteaprioritizedsearchforavalidextendedaddressandwritetheresults*intotheOSALNVsystemforusebythe*system.TemporaryaddressnotsavedtoNV.*inputparameters*None.*outputparameters*None.*@returnNone.***************************************************************************************************/staticvoidzmain_ext_addr(void){uint8nullAddr[Z_EXTADDR_LEN]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};uint8writeNV=TRUE;//Firstcheckwhetheranon-erasedextendedaddressexistsintheOSALNV.if((SUCCESS!=osal_nv_item_init(ZCD_NV_EXTADDR,Z_EXTADDR_LEN,NULL))||(SUCCESS!=osal_nv_read(ZCD_NV_EXTADDR,0,Z_EXTADDR_LEN,aExtendedAddress))||(osal_memcmp(aExtendedAddress,nullAddr,Z_EXTADDR_LEN))){//Attempttoreadtheextendedaddressfromthelocationonthelockbitspage//wheretheprogrammingtoolsknowtoreserveit.HalFlashRead(HAL_FLASH_IEEE_PAGE,HAL_FLASH_IEEE_OSET,aExtendedAddress,Z_EXTADDR_LEN);if(osal_memcmp(aExtendedAddress,nullAddr,Z_EXTADDR_LEN)){//AttempttoreadtheextendedaddressfromthedesignatedlocationintheInfoPage.if(!osal_memcmp((uint8*)(P_INFOPAGE+HAL_INFOP_IEEE_OSET),nullAddr,Z_EXTADDR_LEN)){osal_memcpy(aExtendedAddress,(uint8*)(P_INFOPAGE+HAL_INFOP_IEEE_OSET),Z_EXTADDR_LEN);}else//Novalidextendedaddresswasfound.{uint8idx;#if!defined(NV_RESTORE)writeNV=FALSE;//MakethisatemporaryIEEEaddress#endif/*Attempttocreateasufficientlyrandomextended*addressforexpediency.*Note:thisisonlyvalid/legalinatestenvironment*andmustneverbeusedforacommercialproduct.*/for(idx=0;idx<(Z_EXTADDR_LEN-2);){uint16randy=osal_rand();aExtendedAddress[idx++]=LO_UINT16(randy);aExtendedAddress[idx++]=HI_UINT16(randy);}//Next-to-MSBidentifiesZigBeedevicetype.#ifZG_BUILD_COORDINATOR_TYPE&&!ZG_BUILD_JOINING_TYPEaExtendedAddress[idx++]=0x10;#elifZG_BUILD_RTRONLY_TYPEaExtendedAddress[idx++]=0x20;#elseaExtendedAddress[idx++]=0x30;#endif//MSBhashistoricalsignficance.aExtendedAddress[idx]=0xF8;}}if(writeNV){(void)osal_nv_write(ZCD_NV_EXTADDR,0,Z_EXTADDR_LEN,aExtendedAddress);}}//SettheMACPIBextendedaddressaccordingtoresults//fromabove.(void)ZMacSetReq(MAC_EXTENDED_ADDRESS,aExtendedAddress);}/***************************************************************************************************@fnzmain_dev_info*@briefThisdisplaystheIEEE(MSBtoLSB)ontheLCD.*inputparameters*None.*outputparameters*None.*@returnNone.***************************************************************************************************/staticvoidzmain_dev_info(void){#ifdefLCD_SUPPORTEDuint8i;uint8*xad;uint8lcd_buf[Z_EXTADDR_LEN*2+1];uint8num;chars[16];//Displaytheextendedaddress.xad=aExtendedAddress+Z_EXTADDR_LEN-1;for(i=0;i<Z_EXTADDR_LEN*2;xad--){uint8ch;ch=(*xad>>4)&0x0F;lcd_buf[i++]=ch+((ch<10)?'0':'7');ch=*xad&0x0F;lcd_buf[i++]=ch+((ch<10)?'0':'7');}lcd_buf[Z_EXTADDR_LEN*2]='\0';//HalLcdWriteString("IEEE:",HAL_LCD_LINE_1);//HalLcdWriteString((char*)lcd_buf,HAL_LCD_LINE_2);//osal_nv_read(ZCD_NV_PANID,0,2,&zgConfigPANID);sprintf(s,(char*)"%d%d%d%d%d",((UINT16)((uint16)zgConfigPANID/10000)),((UINT16)((uint16)zgConfigPANID%10000/1000)),((UINT16)((uint16)zgConfigPANID%1000/100)),((UINT16)((uint16)zgConfigPANID%100/10)),((UINT16)((uint16)zgConfigPANID%10)));i=0;do{if(s[i]=='0'){s[i]='';num=1;}elsenum=0;i++;}while(num);GUI_SetColor(1,0);//GUI_LoadBitmap(80,0,(uint8*)Logo,48,30);//向显示缓冲区加载一幅128×64点阵单色位图//LCM_Refresh();GUI_PutString5_7(20,8,"OURS-CC2530");GUI_PutString5_7(5,22,"IEEEAddress:"

温馨提示

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

评论

0/150

提交评论