龙源期刊网 http://www.qikan.com.cn
基于CC2530网络传感器的无线数据采集与存储系统的设计与实现①
作者:杜宝祯 张友桥 祝水军 何剑海 来源:《数字技术与应用》2012年第09期
摘要:温度是许多网络测控系统中需要测量的一个重要参数。针对温度测量,设计了一种基于CC2530微控制器和U盘文件系统级处理芯片CH375的zigbee无线数据采集与存储系统平台。 该平台采用内置RF的8051内核的CC2530为数据处理的核心,利用zigbee协议栈实现组网和数据传输,通过STC89C52+CH375实现USB海量存储功能,同时配套液晶屏和键盘实现了人机交互。该平台测量精度高、灵敏度好且价格低廉,应用前景广阔。 关键词:CC2530 文件系统级处理芯片 zigbee CH375
中图分类号:TP273.5 文献标识码:A 文章编号:1007-9416(2012)09-0135-03 1、引言
在很多测控系统中,温度湿度的采集都是测控系统中不可避免的环节。而使用基于zigbee协议栈的物联网系统,为大规模的数传以及存储带来了便利。目前基于zigbee的网络测控系统发展迅猛,具有良好的研究应用前景,由于项目的实际需要,本文将重点研究采用CC2530、zibgee协议栈以及CH375芯片实现无线数据采集与存储的软硬件实现方法。 2、无线数据采集与存储系统的硬件平台设计
传感器节点以低功耗的CC2530作为zibgee解决方案的核心,同时精心设计了复位、电源、时钟电路模块以及2.4GHz天线硬件接口的PCB布局,为了方便人机交互和实时显示还设计了键盘接口和液晶接口电路。另外对于基站节点,还另外设计了USB数据海量存储模块。考虑到CC2530已经承担着zigbee协议、数据采收等任务,可用资源已比较有限,因此本设计采用STC89C52+CH375为一个模块完成对数据的存储工作。CC2530周期性的通过串口将数据打包发送给STC89C52,STC89C52引发中断程序将数据保存在定义好的缓冲区buffer中,当buffer填满后,再由CH375周期性写入到U盘。因此基站节点有两颗8051核的单片机为其工作。基站节点的硬件平台结构图如下图所示: 2.1 CC2530微控制器介绍
采用新一代低功耗zibgee片上系统CC2530作为网络传感器节点的核心,该芯片遵循IEEE802.15.4标准,同时RF收发器为2.4GHz,可编程的输出功率高达4.5dBm,超低功耗,有5种运行模式。芯片内核采用优化的8位8051微控制器内核,有强大的5通道DMA功能。
龙源期刊网 http://www.qikan.com.cn
该芯片系统资源和外围接口丰富,内部集成安全协处理器、看门狗定时器及电池监视和温度传感器,支持多种工作模式,硬件支持CSMA/CA、21个I/O口、3个定时器和多种通信接口[1]。
2.2 基于CH375和STC89C52的USB数据存储模块的设计
能否实现Plug-and-Play海量存储,一直是嵌入式和工业产品设计所关注的问题。考虑到CC2530处理能力有限,在本设计中采用了STC89C52+CH375的USB数据存储方案。CH375是由沁恒公司研发的一款USB主从机控制器芯片,其主机方式支持常用的USB全速设备,外部单片机可以通过CH375按照相应的USB协议与USB设备通讯。CH375内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备(包括USB硬盘/USB闪存盘/U盘)。CH375与STC89C52通信采用并行方式驱动,可实现读写U盘以及USB通信功能,共需要13根信号线。(CB:5根信号线;DB:8根数据线)。通过详细研读CH375芯片手册,设计了存储器硬件电路[2]。其中CH375的USB接口电路设计如下:
3、数据采集与存储系统的软件平台设计 3.1 基于zigbee的数据采集软件平台整体结构
硬件是基础,软件是灵魂。几乎所有的嵌入式产品中都需要嵌入式软件来提供灵活多样、而且应用特制的功能。Zibgee是当前流行的无线传感器网络的通信协议,其遵循IEEE802.15.4和Zigbee联盟标准,因此选用该协议对于软件平台的标准化意义重大。该平台以Chipcon的Z-stackZigbee协议栈为核心为核心实现[3]。
该软件体系结构如图3所示,其中最底层为物理层,主要是采用扩频通信的调制方式,控制RF收发器工作;第二层为媒体访问控制层,该层遵循IEEE802.15.4协议,负责设备间的无线数据链路建立、维护和结束; 第三层为网络层,该层负责建立新的网络、处理节点的进入和离开网络、根据网络类型设置节点的协议堆栈、使网络协调器对节点分配地址、保证节点之间的同步、提供网络的路由;第四层为应用层,由应用子层、设备对象等构成,用户的程序开发主要在该层进行,有大量的API接口函数可以调用。 3.2 CH375 USB数据存储模块软件设计
存储模块软件部分设计的工作主要有:CH375芯片驱动程序和文件系统两部分。由于CH375芯片已内置USB Mass-Storage专用通讯协议固件,故在主机端无需编写Mass-Storage的协议,只需要对USB存储设备类命令进行详细宏定义,以供系统调用即可[4]。 在驱动编写过程中,CH375芯片驱动程序最基本的四个函数是CH375_Wait_Int()、CH375_Read_Dat()、CH375_Write_Cmd()和CH375_Write_Dat()。该四个函数是扇区读写操作、文件系统数据追加最终要调用的底层函数。完成底层基本函数后,对U盘的操作
龙源期刊网 http://www.qikan.com.cn
主要是通过disk初始化函数、读写扇区三个函数实现,即CH375_InitDisk()、
CH375_Read_Sector()、CH375_Write_Sector()。以下对上述两个函数的编程进行说明,其他函数编程类似[5]。
3.2.1 CH375_Wait_Int() 编写说明
中断程序在驱动程序中的核心,中断程序通常直接操作芯片底层硬件,如初始化USB存储设备、USB设备读写数据块等,产生中断信号通知MCU,并给出中断状态字,由主机MCU作出判断。CH375中断函数已经由Mass-Storage固件完成,CH375_Wait_Int()主要是使用查询方式,等待中断标志,获取中断状态。中断程序具体实现如下: 3.2.2 CH375_Read_Sector()读扇区函数编写说明
完成底层基本函数后,对U盘的操作主要是通过CH375_Init Disk()、、
CH375_Write_Sector()三个函数实现。对扇区读写,是实现数据存储最关键的步骤。下面CH375_Write_Sector()部分源码的实现:
在向U盘写入一个扇区数据数据时,首先须向CH375发送CMD_DISK_WRITE命令执行“向USB设备写数据块”,此时需写入数据的扇区地址和写入数据长度,CMD_DISK_WRITE命令可以在容量高达2000GB的USB存储设备中任意写入1到255个扇区的数据,为了连续写入数据,要与DISK_WR_GO命令配合使用。单片机收到中断状态USB_INT_DISK_WRITE后,写入命令WR_USB _DATA7,用于向USB主机端点的输出缓冲区或者USB端点2的上传缓冲区写入数据块。接着写入的输入数据是数据块长度,再调用CH375_Write_Dat()将数据逐个写入CH375。
在完成了CH375_Read_Sector()和CH375_wirte_Sector()等驱动程序的编写之后,本文在在参考fat_fs等目前常用的嵌入式文件系统基础上,主要实现了fat32文件系统的初始化、文件创建、数据追加功能,实现了数据存储[6,7]。 4、实验与验证
基站将其他节点发送来的温度数据,进行简单处理后,通过串口批量送入数据模块存储到U盘中。首先主机会检测U盘是否已插入到卡槽,待检测到U盘后,就开始初始化U盘和文件系统,检测磁盘分区和扇区容量(将程序运行的状态发送到串口上),随后在根目录下创建txt格式的文件,并返回输出“文件已存在”。
存储器模块周期的从基站串口读取打包好的温度值,保存在定义好的缓冲区buffer中,当缓冲区填满后,再周期性调用FAT32_ Add_Dat()保存到U盘。(如图6) 5、结语