引言
近几年,随着Flash Memory非易失存储技术的发展,基于USB接口的闪存即U盘现已得到广泛应用。从理论上讲,以U盘作为便携式采集存储系统的存储载体完全能够满足长时间采集海量数据的要求。但目前所面临的问题是,U盘主要应用于PC机系统中。以单片机等微处理器为核心的嵌入式系统的应用中,尚缺少与U盘的直接接口技术。因此将单片机技术与U盘存储技术两者结合起来,利用单片机直接读写U盘,并通过总线方式与嵌入式系统的其它部分实现命令和数据的通信,从而实现便携仪器或者嵌入式系统的外挂式海量存储,具有广阔的应用前景。而以Cypress公司的SL811HS为代表的嵌入式USB主机接口芯片为这种方案的实现提供了可能。
SL811HS介绍[1]
采用单片机直接控制读写U盘,牵涉到关键在于USB-HOST技术的实现,即单片机作为USB主机系统。USB系统包括两部分:USB主机和USB外设,它们组合在一起就构成了完整的USB系统。USB的拓扑结构中居于核心地位的是Host(也称为主机),任何一次USB的数据传输都必须由主机来发起和控制,所有的USB外设都只能和主机建立连接,任何两个外设之间或是两个主机之间无法直接通信。
SL811HS作为嵌入式的USB主机/设备控制器,功能模块框图如图1.1所示。
SL811HS实现了USB主机结构中的第一个层次,即USB总线接口层的功能。SL811HS的主要特点如下:
•可作为USB主机或者设备的接口控制器;
•支持USB协议1.1,提供全速和低速2种USB总线速度方式;
•片上集成了SIE、单端口根Hub、USB收发器和256字节的SRAM;
•3.3V工作电压,接口兼容5V电压;
•硬件自动产生帧起始包SOF和CRC5/16校验。
图1.1 SL811HS功能框图
SL811HS与单片机的硬件接线[2][3]
单片机采用的是AT89C55WD,它通过SL811HS芯片对U盘进行读写,实现存储。这部分的电路原理图如图1.2所示。
图中SL811HS与CPU的连接是关键。SL811HS是3.3V供电的系统,而AT89C55WD是5V供电的系统,但二者的端口能够彼此兼容对方的高低电平。因此SL811HS的数据引脚D0~D7直接与单片机的低八位地址/数据总线AD0~AD7连接,读写选通引脚nRD、nWR则直接与单片机的读写线/RD、/WR连接;对AT8955WD而言,SL811HS不过是其在片外扩展的I/O芯片之一,地址线A15与/CS_SL811(AT89C55WD的P3.3引脚)组合后充当SL811HS的片选,地址线A0与SL811HS的A0引脚相连,于是SL811HS的地址指针寄存器的地址为7FFEH(A0、/CS_SL811为低电平),SL811HS的数据寄存器的地址为7FFFH(A0为高电平,/CS_SL811为低电平)。之所以需要/CS_SL811配合,是因为AT89C55WD在外部还扩展了一片128KB的SRAM62256(省略未画),片选线也是A15。SL811HS的M/S引脚经下拉电阻后接地,使得其工作于主机控制器模式。此外,SL811HS的中断请求信号为高电平有效,故反向后连接到AT89C55WD的外部中断引脚/INT0。本系统没有采用SL811HS内部的锁相环,直接使用外部的48MHz有源晶振作为时钟源,更准确。
存储模块是主机系统,其PCB板上安装有A型插座,用于为下层的设备提供连接点。因为连接的外设是功耗量极低的USB盘,下行端口的电源VCC直接连到了检测系统的电源上。
基于U盘的海量存储板中单片机固件程序编写