1 系统硬件设计
1.1 系统总体结构与工作原理
系统由电源模块、USB接口转储模块、控制模块、键盘模块和液晶显示模块等组成,如图1所示。C8051F040微控制单元外接两个CH375 U盘模块,通过在单片机内部开辟一个数据缓冲区,直接调用子程序库,负责将一个U盘中选中的文件数据传送到另一个U盘中。液晶和外部键盘实现人机接口,通过键盘的上翻、下翻、选择、复制等按键,选中要转存的文件,并在液晶模块中显示文件名、文件大小等相关信息。人机交互界面友好、操作简便。
1.2 CH375 U盘模块
采用振南电子开发的CH375 U盘读写模块,该模块体积小巧,仅3.3x2.0 cm2。模块供电为5 V,配有指示灯,工作时指示灯被点亮。模块使用USB主从机控制器CH375B,采用并行方式驱动,可以实现U盘的读写。共需要13根信号线(5根控制线8根数据线)。
通过该模块提供的znFAT,一种单片机上的FAT32文件系统解决方案,能够轻松地实现U盘上的各种文件级的应用。主要包括文件扇区的定位、文件打开、信息修改、文件关闭、文件删除、文件读、文件写、磁盘信息查询等一些对文件的基本操作。该模块具有体积小,价格较低,使用方便的特点。通过该模块很容易通过单片机实现对两个U盘中的相关文件的转移。
CH375 U盘读写模块与C8051F040单片机的连接如图2所示。C8051F040通过CS选中U盘模块,U盘模块则通过INT以中断方式与单片机进行通信。DO~D7为CH375 U盘模块与单片机的并行通信数据线,单片机通过AO、RD、WR控制信号控制CH375U盘模块。D+、D-为CH375 U盘模块与 USB存储设备的串行接口。通过CH375 U盘模块可以很容易地实现单片机与USB存储设备直接的数据转储。
1. 3 液晶显示模块
本系统使用122x32点阵的MGLS12232液晶显示模块,模块内置两块2.560位的RAM和两片SED1520控制器,分别由E1、E2两个选通信号控制左右两半屏的显示。图形液晶显示模块有两种连接方式:一种为直接访问方式,另一种为间接控制方式。本系统是采用直接控制方式,该方式将液晶显示模块的接口作为存储器或I/O设备直接挂接在单片机总线上。该模块体积小、价格较低且通过该液晶模块能够满足对一般文件夹名、文件名和文件信息的显示。
1.4 键盘模块
键盘模块是3x3矩阵式键盘结构,采用Button按键,分别定义了上电、复位、上翻、下翻、选择、复制、粘贴等按键,以最少的按键实现文件转储的各种操作。
1.5 C8051F040单片机控制模块
C8051F040单片机控制模块是本系统的核心控制模块。该单片机具有丰富的片内资源和强大的控制功能:与8051完全兼容,最大系统时钟频率为24 MHz,70%指令的执行时间为1或2个系统时钟周期。丰富的中断源,扩展的中断系统向CIP-51提供20个中断源,一个中断驱动的系统需要较少的MCU干预,因而有更高的执行效率,这么多的中断源完全能满足本系统的所有外设。通用串行总线(USB)功能控制器,有8个灵活的端点管道,集成收发器和1K FIFO RAM;片内存储较大,CIP-51的SFR地址空间可包含多达256个SFR页,通过SFR分页,CIP-51MCU可以控制大量用于控制和配置片内外设所需的SFR。串口资源丰富,具有两个增强型全双工UART、一个增强型SPI总线和SMBus/I2C。每种串行总线都完全用硬件实现,都能向CIP-51产生中断,因此需要很少的CPU干预。这些串总线不“共享”定时器、中断或端口I/O等资源,可以使用任何一个或同时使用多个。
该模块的功能是:通过在单片机内部开辟一个数据缓冲区缓存两个U盘之间要转移的文件数据,并通过两个CH375 U盘模块控制U盘文件的打开、读取、写入和关闭,实现文件数据的转移工作。该控制单元还可以将外围键盘发来的中断信息进行处理,以实现文件的选择等对单片机的控制。通过控制一个MGLS12232液晶显示模块来显示一些相关的文件信息。
2 系统软件设计
2.1 外设控制方式
本系统采用CH375 U盘模块,该模块附带znFAT,单片机上的FAT32文件系统解决方案。从而减少了繁杂的Fat32文件系统方面的编程,由于CH375 U盘模块配带文件系统及文件操作子程序,通过单片机主程序调用比较容易实现文件名、文件信息的液晶显示,以及文件的选择与转移操作。
由于C8051F040单片机的中断资源丰富,并且中断具有以下优点:
1)分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率。
2)实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强。
3)可靠性高。CPU具有处理设备故障及掉电等突发事件的能力,从而使系统的可靠性提高。
综上所述,本系统的所有外设键盘均采用中断控制方式,文件转移也用中断方式控制。这样C8051F040的系统资源利用效率有了很大的提高。
2.2 文件转储方案
首先在C8051F040单片机内部开辟一个缓冲区,当需要转存文件时,首先选中一个U盘中的文件,当单击复制及粘贴按键后,会通过中断自动调用相关的程序,想将该文件打开,并读取文件的数据与开辟的缓冲区中,然后把缓冲区的数据存储到另一个U盘相应目录下的新建的同名文件中。
系统总流程图如图3所示。系统上电后,对C8051F040单片机内部开辟的缓冲区进行初始化,并使液晶屏显示初始界面,之后进入等待U盘插入的状态,当等待一段时间后,若没用U盘插入,则显示“请插入U盘”的提示信息。当U盘个数为一个或两个时,开始读取U盘信息,并在液晶屏上显示基本的U盘信息。之后,C8051F040单片机等待键盘操作,根据键盘输入的编码调用相应的中断程序,处理完后,继续等待键盘的中断信号。
3 联机调试
在USB转储器的两个USB接口分别接甲、乙两个U盘,液晶显示屏能够显示甲U盘里的文件,通过手动操作转储器上的键盘按钮可以选择甲U盘里的文件,并可将其转移到乙U盘里。在这次USB转储器的制作过程中比较难的是对设备端的程序进行调试。由于USB协议有严格要求,这就使程序必须在有效的时间内对某些请求或者状态进行,否则USB将无法正常工作。因此在调试过程中,较多的借助串口输出程序输出的一些信息来辅助调试,定位问题所在。
调试工作主要分为两步,首先是要能显示U盘里面的文件,借助PC调试软件(从网上下载的Bus Hound)将设备端的USB协议调通,然后加上U盘写入U盘显示程序,在液晶屏里可以看到U盘里的文件名;第二步是转储,在单片机里写入转储程序进行调试。通过键盘按钮选择可以实现转储文件。
4 结束语
目前市场上虽有单片机读写U盘的功能模块,但只能够实现简单的读功能,还不能够实现两个U盘之间的直接相互传输和显示。本文设计的U盘转储器经实验表明具有很强的实用性和可操作性,人们可以在户外不借助计算机很方便地完成一个U盘到另外一个U盘的文件转储。由于采用USB接口传输速度非常快,完全能够满足普通用户的需要。系统采用STM封装,具有外形小巧、方便佩戴等优点,是一款廉价实用的电子产品。