引 言
目前在数据采集设备和仪器仪表等嵌入式系统
中,数据交换多采用串行口(RS232、RS485、CAN 总
线)或以太网等方式,这些方式需要布线施工、成本
高且不具有移动性。基于 USB-FLASH 技术的 USB
移动存储技术的发展为上述领域中的数据存储和交
换提供了新的方式。U 盘以其容量大、体积小、价格
便宜、信息不易丢失等优点成为了最新的移动存储设
备。由于多数数据采集设备和仪器仪表等嵌入式系统
并没有安装 USB
接口,使得在 USB 数据存储方
面一直没有很好的解决
。
本文详细介绍了利用 USB 接口芯片 CH376 实现
单片机对 U 盘的读写,从而实现便携式仪器设备等嵌
入式系统的外挂式海量存储。本设计除了 MCU 以外,
只需要一片 CH376 即可实现对 U 盘的读写操作,具
有成本低、结构简单、通用性强、可靠性高等优点。
1 系统总体结构
系统主要由本地端控制器(单片机)和 USB 接
单片机 U 盘控制器的设计与实现
孟 涛,王福虎
(中国船舶重工集团公司第七一八研究所,河北 邯郸,056027)
摘 要: 基于目前在数据采集设备和仪器仪表等嵌入式系统中,数据交换多采用串行口或以太网等
方式的现状,本文介绍了一种以 U 盘为存储介质的 U 盘控制器设计方案,并给出了系统电路原理图
和单片机读写 U 盘的程序
。该方案以 USB 接口芯片 CH376 和单片机为核心,具有成本低、通用
性强、可靠性高等特点,可方便的集成到各种测控系统中,解决了串口、网络通信方式需要布线施
工、成本高、移动性差的问题。
关键词: CH376;单片机;U 盘;USB 接口
中图分类号:TP311 文献标识码:A
Design and implementation of MCU USB flash disk controller
Meng Tao, Wang Fu-hu
(The 718th Research Institute of CSIC, Handan 056027, China)
Abstract: Now UART and Ethernet are widely used in application-embedded systems. Based on MCU and
CH376, this paper introduces a design and implementation to control USB flash disk, and provides
schematic diagram of hardware and part of program, gives detailed introductions to their principles and
control-methods. It is proved to have several advantages such as low cost, easy application and stable
running. This solution fits the application especially in measuring system and data acquisition equipment.
Key words: CH376; MCU; USB flash disk; USB interface
舰 船 防 化
2010 年第 2 期,20~24 CHEMICAL DEFENCE ON SHIPS №2, 20~24
口芯片 CH376 组成,另外可以根据需要在系统中增
加人机接口,如键盘、LCD 液晶模块等。单片机通过
USB 接口芯片 CH376 对 U 盘进行读写操作。图 1 是
系统硬件框图。
图 1 系统硬件框图
Fig.1 system fundamental block diagram
系统支持 1.5Mbps 低速和 12Mbps 全速 USB 通
讯,兼容 USB V2.0,外围元器件只需要晶振和电容。
内置 FAT16 和 FAT32 以及 FAT12 文件系统的管理固
件,支持容量高达 32GB 的 U 盘和移动硬盘。
2 CH376 芯片简介
CH376 是文件管理控制芯片,用于单片机系统读
写 U 盘或者 SD 卡中的文件。CH376 支持 USB 设备
方式和 USB 主机方式,并且内置了 USB 通讯
的
基本固件,内置了处理 Mass-Storage 海量存储设备的
专用通讯协议的固件,内置了 SD 卡的通讯接口固件,
内置了 FAT16 和 FAT32 以及 FAT12 文件系统的管理
固件,支持常用的 USB 存储设备(包括 U 盘/USB 硬
盘/USB 闪存盘/USB 读卡器)和 SD 卡(包括标准容
量 SD 卡和高容量 HC-SD 卡以及协议兼容的 MMC
卡和 TF 卡)。CH376 支持三种通讯接口:8 位并口、
SPI 接口或者异步串口,单片机/DSP/MCU/MPU 等控
制器可以通过上述任何一种通讯接口控制 CH376 芯
片,存取 U 盘或者 SD卡中的文件或者与计算机通讯。
图 2 是 MCU 处理 U 盘的示意图。一般情况下,
单片机或者嵌入式系统处理 U 盘的文件系统需要实
现图 2 左边的 4 个层次,右边是 U 盘的内部结构层
次。由于 CH376 不仅是一个通用的 USB-HOST 硬件
接口芯片,还内置了相关的 USB 底层传输固件程序、
Bulk-Only 协议传输固件程序、FAT 文件系统管理固
件程序,包含了图 2左边的 4 个层次(标为灰色部分),
所以实际的单片机程序只需要发出文件管理和文件
读写命令即可完成对 U 盘的操作[1]。
3 系统硬件电路设计
本设计中CH376与单片机之间采用并口通信方
式,并口信号线包括:8位双向数据总线D7~D0、读
选通输入引脚RD#、写选通输入引脚WR#、片选输入
引脚PCS#以及地址输入引脚A0。CH376芯片的PCS#
可以由地址译码电路驱动,用于当单片机具有多个外
围器件时进行设备选择。通过被动并行接口,CH376
芯片可以很方便地挂接到各种8位单片机、DSP、MCU
的系统总线上,并且可以与多个外围器件共存。图3
是系统电路原理图。
并口状态下,CH376的TXD引脚应接地。对于类
似Intel并口时序的单片机,CH376芯片的RD#引脚和
2010 年第 2 期 单片机 U 盘控制器的设计与实现 · 21 ·
图 2 MCU 处理 U 盘示意图
Fig.2 sketch map of MCU controlling USB flash disk
WR#引脚可以分别连接到单片机的读选通输出引脚
和写选通输出引脚。表1为并口I/O操作的真值表(表
中X代表不关心此位,Z代表CH376三态禁止)。
CH376 芯片占用两个地址位,当 A0 引脚为高电
平时选择命令端口,可以写入新的命令,或者读出接
口状态;当 A0 引脚为低电平时选择数据端口,可以
读写数据。单片机通过 8 位并口对 CH376 芯片进行
读写,所有操作都是由一个命令码、若干个输入数据
和若干个输出数据组成,部分命令不需要输入数据,
部分命令没有输出数据。命令操作步骤如下:
①单片机在 A0=1 时向命令端口写入命令代码;
②如果该命令具有输入数据,那么在 A0=0 时依
次写入输入数据,每次一个字节;
③如果该命令具有输出数据,那么在 A0=0 时依
次读取输出数据,每次一个字节;
④命令完成,有些命令在执行完成后会产生中断
通知,单片机可以暂停或者转到①继续执行下一个命
令。
4 系统软件设计
由于CH376内置了USB控制传输的协议处理器
和处理海量存储设备的专用通讯协议,支持
Bulk-Only传输协议和SCSI、UFI、RBC或等效命令集
的USB存储设备的固件,所以单片机可以通过CH376
读写U盘、SD卡等大容量存储器,而不需要详细了解
USB通信协议。CH376提供了操作U盘和SD卡的常用
命令集,表2是该芯片部分指令编码表,其他指令用
户可以参考CH376的数据手册。
· 22 · 舰 船 防 化 2010 年第 2 期
PCS# WR# RD# A0 D7~D0 对 CH376 芯片的实际操作
1 X X X X/Z 未选中 CH376,不进行任何操作
0 1 1 X X/Z 虽然选中 CH376,但不进行任何操作
0 0 1/X 1 输入 向 CH376 的命令端口写入命令码
0 0 1/X 0 输入 向 CH376 的数据端口写入数据
0 1 0 0 输出 从 CH376 的数据端口读出数据
0 1 0 1 输出
从 CH376 的命令端口读取接口状态:位 7
是中断标志,低有效,等效于 INT#引脚,
位 4 是忙标志,高有效,等效于 BZ 引脚。
表 1 并口 I/O 操作真值表
Table 1 parallel interface controlling detail
图 3 电路原理图
Fig.3 principle diagram of circuit
CH376对U盘文件的读写方式分为扇区模式和字
节模式。扇区模式下以扇区(每扇区通常是51 2字节)
为基本单位对U盘文件进行读写,所以读写速度较快,
但是通常情况下需要额外的文件数据缓冲区
(RAM)。字节模式下,以字节为基本单位对U盘进
行读写,读写速度较慢,但是不需要额外的文件数据
缓冲区,使用方便,适用于RAM少、数据量小或者
数据零碎、不经常读写数据的单片机系统。
下面以字节模式为例,说明在U盘中新建一个名
为“TEST.TXT”文档,并写入数据的过程。程序流
程 图 如 图 4 所 示 , 单 片 机 首 先 发 送
CMD_SET_USB_MODE命令设置CH376工作在主机
模式下,之后等待U盘连接。U盘可以由CH376自动
检测并产生中断通知,也可以由单片机定时发送命令
检测。U盘连入之后,在进行操作之前必须要发送
CMD_DISK_MOUNT命令进行初始化,并检查磁盘
是否准备就绪。随后向U盘内新建文件并通过循环执
行指令写入数据,最后保存文件并更新文件长度。
6 结 论
2010 年第 2 期 单片机 U 盘控制器的设计与实现 · 23 ·
代码 命令名称 CMD_ 输入数据 输出数据 命令用途
15H SET_USB_MODE 模式代码 操作状态 设置设置USB 工作模式
22H GET_STATUS 中断状态 获取中断状态并取消中断请求
数据长度
2DH WR_REQ_DATA
数据流(n)
向内部指定的缓冲区
写入请求的数据块
2FH SET_FILE_NAME 字符串(n) 设置将要操作的文件名称
30H DISK_CONNECT 产生中断 检查磁盘是否连接
31H DISK_MOUNT 产生中断 初始化磁盘并测试磁盘是否就绪
32H FILE_OPEN 产生中断 打开文件或目录
34H FILE_CREATE 产生中断 新建文件
36H FILE_CLOSE 是否运行更新 产生中断 关闭当前打开的文件或目录
3CH BYTE_WRITE 请求写入字节数 产生中断
以字节为单位向当前
位置写入数据块
3DH BYTE_WR_GO 产生中断 继续字节写
表2 部分CH376指令编码表
Table 2 parts of instruction of CH376
图 4 程序流程图
Fig.4 program flow chart
本文利用 USB 总线接口芯片 CH376 完成了单片
机 U 盘控制器的设计。采用字节读写方式时只需要一
片 CH376 即可实现对 U 盘的读写控制,具有成本低、
结构简单、通用性强、可靠性高等优点,为数据采集
设备和仪器仪表等嵌入式系统的数据存储和交换提
供了一种方便、通用、可靠的解决方案。随着 USB
移动存储产品的普及,该方案在嵌入式系统领域将有
着广泛的应用前景。
参 考 文 献
[1] USB总线接口芯片CH376中文手册. 南京沁恒电子有限公
司, 2009
_____________________________________________________
作者简介:孟涛(1980~),男,硕士,2006 年毕业于华中科
技大学控制科学与工程系,研究方向为 RFID、微处理器技术
等。
派瑞门禁系列产品之
派瑞单体门禁系统
派瑞单体门禁系统是一款集门禁控制、安全报
警、读/发卡机具及电子门锁于一体的单体门禁系
统,特别适用于对出入口需要进行严格控制的小型
办公场所。
功能特性:
主卡开门
1) 可支持多张卡开门,开门不受任何限制。
2) 开门时,记录开门卡号及进入日期、时间。
3) 关门时,记录锁门日期、时间。
副卡开门
1) 支持有限张副卡,只在特定时间段有效。
2) 开门时,记录开门卡号及进入日期、时间。如
门开时间超过有效时间段则报警提示。
3) 门被关上后,自动上锁并报警提示,需要再次
刷卡确认锁门日期、时间及卡号。
4) 锁门后,系统会记录未读卡出现的开门现象。
报警功能
1) 门长开状态下,关门时会以声、光形式提醒用
户取消长开状态。
2) 门虚掩或门没锁好会自动报警。
3) 电流欠压时会报警提示更换电池。
独特设计
1) 系统提供严格受控长开方式,可避免频繁开门
操作。
2) 电子门锁内设访问控制口令,对上位机与门锁
的连接提供访问认证。
3) 在系统更换电池时,也能正常计时。
4) 特有的安全设计,即使室外锁体裸露部分被破
坏,仍无法实施技术开启。
技术指标:
管 理 卡 支持
主 副 卡 支持
读卡距离 0~3 cm
开门时间 <1 s
开门次数 15000 次
工作电源 6 V(4 节 5号碱性电池)
低压报警 4.5 V 可调
开锁电流 约 150 mA
静态电流 <30 µA
· 24 · 舰 船 防 化 2010 年第 2 期