引言
变 频空调在调试运行过程中,室内机与室外机之间会通过异步串口进行大量的数据通讯,这些数据对研究系统运行情况是非常重要的,因此必须把这些数据存储下来。此前,我们只能使用电脑通过人工操作的方式记录数据,而空调的测试需要在许多温度、湿度等外界因素不同的环境下进行,如果分别派专人去这些地方测试显然是不可取的,因此在系统调试过程中,如何有效地记录、分析数据就成为了一件非常困难的事。
就 这一难题决定开发一个专门用来存储数据的系统,这一系统应具备如下特点:
1、使用常用的接口与主设备相连,使该系统具有可移植性。
2、可以存储大量的数据,并且使用较为常用的存储方式,数据存储的形式应便于数据分析。
3、数据存储过程不需要人为的干预,在出现异常情况时,系统应有一定的电路保护和数据保护能力。
系统结构
经过对该系统特点的研究,从数 据存储的实用性出发,决定采用当 前使用较多的U盘作为数据存储的介质。U盘以体积小、容量大、使用方便灵活等优点得到广泛应用,它不仅能够存储数量较大的数据,满足对大量存储的要求,而且能够让我们方便地在PC机上分析数据,因此使用U盘存储数据是最佳的解决方案;在数据通讯方面,采用通用串口与主设备相连来获取数据,这是一种常用的通讯方式,可以方便灵活地与其他系统相连;为了提高数据的安全性,还要加入断电保护模块,使系统在出现异常的情况下能够主动存储数据,防止数据的丢失;为了避免频繁的读写U盘,确保数据安全,加入一定容量的存储器也是非常必要的。系统结构如图1所示。
图 1 数据存系统结构(略)
硬件组成及功能
根据系统结构框图,综合分析了系统对硬件的要求,选定各模块硬件如下:
主控芯片W78E365及内存芯片
HM62256
W78E365是伟邦公司生产的一款8位单片机,完全兼容8052系列的单片机,它内置了64k的程序存储空间,1k的内部RAM,4组8位的双向I/O口,3个16位的定时计数器,一个全双工异步串行通讯口等。
由于U盘存储过程中要进行临时数据的读写操作,主CPU内部提供的1k容量的RAM是远远不够的,因此需要扩大容量的内存。HM62256是一款32k字节的RAM,其容量足以满足要求,可大大加快数据的存储速度。HM62256与主CPU的连接采用总线连接方式,地址总线16位,数据总线8位,其中地址总线的低8位与数据总线是复用的,因此要使用地址锁存器74HC573,并把ALE作为锁存器的使能信号;由于总线上还要接SL811HST,所以还要有一个选通信号来控制HM62256和SL811HST的使用,而HM62256的容量是32k字节,使用15条地址总线就可以了,所以在这里使用地址总线的A15引脚作为HM62256和SL811HST的选通信号,分时使用这两个芯片。原理图如图2所示。
图 2 CPU与内存连接图(略)
USB主控芯片SL811HST
SL811HST是CYPRESS公司生产的USB主/从控制芯片,它既可以当作USB主控芯片使用,又可以作从控芯片使用,在两种模式下通讯速度均可达到低速1.5Mbps,全速12Mbps,且可以自动检测设备速度;支持暂停/恢复、唤醒及低能耗模式,自动产生SOF和CRC5/16;8位双向I/O口,用12MHz或者48MHz晶振及有源晶振。
在本设计中,我们主要使用SL811HST的主控功能,在该模式下,SL811HST提供了16个寄存器,通过这些寄存器就可以方便地控制它与U盘之间的通讯。SL811HST与W78E365的硬件连接如图3所示。图中J1为3针跳线,用来切换SL811HST的主/从功能,使它也可工作在从模式下;J2为主模式下的USB接口,J3为从模式下的USB接口;本设计采用48M有源晶振作为其时钟源,提供更准确的时钟信号,且提高系统的稳定性;由于SL811HST的外部中断为高电 平有效,而W78E365的外部中断为低电平有效,因此在两个中断引脚之间要加入反相器74HC00,同时它还可作为信号缓存来使用;片选信号 /CS由A15和/CS SL811共同控制,实现对SL811HST的选通。
图 3 SL811HST硬件连接(略)
数据保护模块
数据保护模块采用了ATMEL公司生产的24c256,该芯片是一款32k字节存储空间的EEPROM,使用两线串行接口(I 2 C)进行数据通讯,可一次性写入64字节的数据,是常用的数据存储芯片。因其具有掉电不丢数据的特点,在本设计中把它作为重要数据的临时存储器来使用,保证数据即使在断电的情况下也不会丢失,提高了数据存储的安全性,同时为了避免频繁的读写U盘,该模块还可作为数据缓存来使用。原理图如图4所示。
图 4 24c256的硬件连接(略)
电源转换及断电保护
该系统需要使用5V和3.3V电压,而外部提供的电压为8V左右,这时就需要电源转换芯片7805将8V转换成5V,再使用LT1587-3.3将5V转成3.3V,其接法如图5所示。
图 5 电源转换及断电保护(略)
为防止突然断电造成的无法及时存储数据,还加入了断电保护电路。图中的LM193是保护电路的核心部件,它是一款电压比较芯片,在它的“+”端接入外部输入电压,“?”端与系统电压5V相连,并使“+”端电压略高于“?”端电压,此时LM193输出端为高电平;当外部电压突然消失的时候,由于在电压转换芯片之前接入了较大的电容和电感,使得LM193两输入端的电压变化率差别很大,“?”端电压很快就会高于“+”端电压,此时LM193将会输出低电平,从而在CPU外部中断引脚上产生中断信号,收到中断的CPU就会做出相应动作,在系统电压仍保持在正常区间的这段时间里把数据存储完毕。
软件部分
该系统的软件编写涉及内容较多,除了一些对芯片寄存器的操作外,还包括许多海量存储设备类(Mass Storage Class)的规范、USB(Universal Serial Bus)设计规范、磁盘 数据结构和FAT文件系统等,这些标准、规范的内容比较复杂,涉及面广泛,但是对设计U盘数据存储是必不可少的,因此必须要进行深入研究。
USB海量存储设备类规范
海量存储设备类规范包括四个独立的子类规范,本设计中所使用的U盘遵循Bulk-Only传输协议和UFI命令规范。
设备插入到USB后,USB即对设备进行搜索,并要求设备提供相应的描述符。在USB Host得到上述描述符后,即完成了设备的配置,识别出为Bulk-Only的Mass Storage设备后即进入Bulk-Only传输方式。在此方式下,USB与设备间的所有数据均通过Bulk-In和Bulk-Out来进行传输,不再通过控制端点传输任何数据。在这种传输方式下,有三种类型的数据在USB和设备之间传送:CBW、CSW和普通数据。CBW(Command Block Wrapper,即命令块包)是从USB Host发送到设备的命令,命令格式遵从SCSI传输命令集。USB设备需要将SCSI命令从CBW中提取出来,执行相应的命令,完成以后,向Host发出反映当前命令执行状态的CSW(Command Status Wrapper),Host根据CSW来决定是否继续发送下一个CBW或是数据。Host要求USB设备执行的命令可能为发送数据,则此时需要将特定数据传送出去,完毕后发出CSW,以使Host进行下一步的操作。
程序流程见图6。
图 6 程序流程图(略)
结束语
该存储系统可以在无人看守的情况下自动记录数据;使用异步串口作为通讯接口,具有较好的可移植性;电源保护及数据保护模块的设计让数据存储变得安全、稳定。本文主要针对硬件结构及软件框架给出了U盘数据存储系统的设计方案,着重讲述了硬件连接原理及数据存储规范,解决问题的同时也为开发者的进一步研究打下了基础。 |