引 言
在USB拓扑结构中PC机扮演着核心作用,没有PC机的参与,USB设备将无用武之地;但随着USB-OTG规范的提出和USB主机接口芯片的产出,USB主机逐渐应用到各种场合中,如数码伴侣、打印机等。目前,大多数的温湿度记录仪都是通过单片机的A/D模块多次采样.经过软件滤波,得到一个均值,然后再通过模拟传感器的数据校正表换算出实际的温湿度,而且都是通过串口与上位机进行通信,上位机需要编写一个数据分析软件来设置记录仪的工作模式,并对记录的历史数据进行分析与处理。根据对以往记录仪的分析和对USB-OTG技术的深入研究,提出了数字温湿度记录仪系统中USB主机设计的实现方案。将USB主机嵌入到数字温湿度记录仪系统中,把对记录仪的设置预先写到USB磁盘上,再将USB磁盘插到记录仪上,分别按下读/写按键,记录仪分别完成读取磁盘上的配置和将记录数据写到USB磁盘上。下面详细分析其硬件设计和软件实现过程。
1 硬件设计
记录仪系统硬件结构如图1所示。该系统主要完成采集、显示和记录数据,并驱动USB磁盘,在单片机上实现读写USB磁盘功能。整个系统硬件主要由一个主控芯片、数字温湿度传感器、USB主机接口芯片、E2PROM、LCD液晶显示器等构成。系统由电池供电,无论是硬件设计还是软件编程都要考虑功耗问题,所以主控芯片选用超低功耗的MSP430F1611单片机,结合软件编程能延长电池寿命。数字温湿度传感器选用的是Rotronic公司的HygroC1ip,USB主机芯片选用Philips公司的ISPl362。
1.1 数字温湿度传感器HygroClip
HygroClip是一种数字温湿度传感器,具有5根线:电源、地、温度输出、湿度输出、数字输入/输出。供电电压需要5 V,而整个系统的工作电压小于5 V,所以要外加有使能端输出为5V的升压器,使能端由MSP430F1611的普通I/O口控制,这样可以有选择地使传感器工作,有利于降低系统功耗。传感器主要由AIRCHIP2000和Micro-Controller/E2PROM两部分构成。AIRcHIP2000中的集成电路负责测量温湿度,并将它们转换为数字量;D/A转换器将MicroController发出的数据转为模拟输出。MicroController根据数字量算出温湿度的实际值,通过数字输出线发送到MSP430F16ll中。E2PROM用来保存校正数据、传感器数据等。HygroClip与MSP430F1611传输数据通过数据输入/输出线来完成,所以是一位一位地发送数据,发送8位代表发完1个字节,有点类似于串口通信协议。串口通信协议规定如下:先发送同步头,当HygroC1ip接入系统3秒钟后,自动进入发送温湿度数据状态,单片机检测到其下降沿中断,然后开启上升沿中断,启动定时器计数,计算进入上升沿中断的时间。若在800μs左右,表示可能是同步头,此时开下降沿中断,并重计定时器的时间。若在4700μs左右,则表示抓到同步头。该下降沿标志着第一位发送数据的开始,经过200μs查看接收位的状态,为“1”表示收到的是“1”,为“0”表示收到的就是“0”。其数字输入/输出引脚的波形如图2所示。
1.2 ISPl362简介
ISPl362是Philips公司推出的USB芯片。它在单芯片上集成了OTG控制器、主机控制器、设备控制器、USB收发器、OTG收发器和缓存器等。OTG控制器完全兼容USB2.0及On-The-Go Supplement 1.0协议,支持OTG标准要求的所有功能。在OTG模式下工作时,可通过主机通信协议HNP实现主机和外设两种功能的转化,并支持对话请求协议SNP。主机和设备控制器遵守USB2.O协议,支持1.5 Mb/s的低速传输和12 Mb/s的全速传输。当作为设备控制器时,具有两个控制端点,且能利用14个端点进行四种传输类型的任意类型。ISP1362还集成了计时器及支持OTG功能所需要的模拟元件,而且内部还有一个锁相环PLL,因此可以选用12MHz的晶振,既降低了成本,又降低了EMI。ISP1362支持内置电源供电及外部电源供电两种模式。对于较低功耗的应用设计,可用内部集成的电荷泵激励器;而如果应用系统的功耗较高,则要用外部电源供电。ISPl362还提供2个USB端口。端口1可进行软件配置,并可用作下行、上行OTG端口。作为OTG端口,端口1可在主机或外设模式下工作,并可通过HNP或布线变化来动态转换角色。端口2只用作下行传输。ISPl362的接口电路如图3所示。
1.3 MSP430F1611简介
MSP430F1611是TI公司推出的一款16位超低功耗单片机,工作电源电压为1.8~3.6 V,可用电池工作,而且可以有很长的使用时间;具有16位RISC结构,CPU中的16个寄存器和常数发生器使MSP430微控制器能达到最高的代码效率;灵活的时钟源可以使器件达到最低的功耗;具有5种省电模式,在lMHz的时钟条件下运行,耗电电流(0.1~400 μA)因不同的工作模式而不同;数字控制振荡器(DCO)可使器件从低功耗模式迅速唤醒,在少于6μs的时间内激活到活跃的工作方式;支持串行在系统编程和安全熔丝的程序代码保护,内部具有10KB容量的RAM,可以存放大容量中间数据和变量。
2 软件设计
整个系统软件分为用户程序和uSB主机软件两部分,USB主机软件为用户程序提供软件接口。当记录仪需要读写USB磁盘时,调用接口发送读写命令即可实现。用户程序集成初始化、采集、显示、记录等子程序。初始化单片机与其外围模块;采集程序负责将数字温湿度传感器的脉冲输入转换为温湿度的值;显示程序则将采集到的数据通过液晶显示器显示出来,显示频率可以设置;记录程序将采集的数据写到F2PROM保存,掉电不丢失,从而要通过I/O口模拟I2C协议实现读写32PROM,USB主机软件集成USB主机控制器驱动程序(HCD)、USB驱动程序(USBD)和MassStorage类驱动程序。HCD负责完成对USB主机控制器ISPl362配置和工作管理,通过数据线上的电平变化检测到USB设备的接入和拔出,如ISPl362的初始化、设置ISPl362的寄存器实现链路级数据传输等。USBD是整个主机软件的核心部分,相当于PC机上USB主机的核心驱动程序,按照USB协议合理调用HCD来获取设备、配置、接口及端点描述符,然后对USB设备设置地址并与之通信,从而识别并判断USB设备是否属于Mass Storage类。Mass Storage类驱动程序包括Bulk_Only传输协议的实现以及在协议实现的基础上发送特定的请求命令,进而对USB磁盘上的F1ash进行读和写,从USB磁盘上读取对记录仪的配置,并将记录仪保存的数据写到USB磁盘上供上位机分析处理。
为了将系统的功耗降到最低,仅仅在硬件设计上考虑是远远不够的,还需要设计低功耗的软件来配合硬件工作,才能达到理想的目标。在本系统中,为了降低功耗,将用户程序和USB主机软件进行整理和优化,分成主程序、看门狗中断子程序和USB主机程序三大模块。主程序负责初始化、开中断后进入低功耗工作模式,然后一直等待中断,看门狗中断程序负责采集数据、显示数据、保存数据等功能,因为记录仪需要不断的采集、显示和保存,所以要周期性地进入中断。采集、显示和保存这三个事件不是同步的,每次进入中断后都会采集数据,但是达到显示和保存条件之后分别进入相应的处理,而且显示和保存的时间参数是通过USB磁盘配置得到的,可以更改。读写中断子程序负责判断按键类型,在Mass Storage类驱动程序基础上建立一个FAT文件系统,支持FATl6/FAT32两种文件格式,以文件的形式统一管理USB磁盘上的内容。各个程序流程如图4至图6所示。
3 结论
将USB主机应用到数字温湿度记录仪系统中;使用数字传感器可大大提高记录的精度,记录仪通过USB磁盘就可上传配置和下载数据,可去除对PC机的依赖,扩大应用范围,具有很好的扩展性;使用超低功耗单片机大大降低系统的功率,延长电池的寿命。