ETC CH375

1
CH375 中文手册(一)
USB 总线接口芯片 CH375
中文手册
版本:3E
http://wch.cn
1、概述
CH375 是一个 USB 总线的通用接口芯片,
支持 USB-HOST 主机方式和 USB-DEVICE/SLAVE 设备方式。
在本地端,CH375 具有 8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机
/DSP/MCU/MPU 等控制器的系统总线上。在 USB 主机方式下,CH375 还提供了串行通讯方式,通过串行
输入、串行输出和中断输出与单片机/DSP/MCU/MPU 等相连接。
CH375 的 USB 设备方式与 CH372 芯片完全兼容,CH375 包含了 CH372 的全部功能。本手册中没有
提供 CH375 在 USB 设备方式下的说明,相关资料可以参考 CH372 手册 CH372DS1.PDF。
CH375 的 USB 主机方式支持常用的 USB 全速设备,外部单片机可以通过 CH375 按照相应的 USB 协
议与 USB 设备通讯。CH375 还内置了处理 Mass-Storage 海量存储设备的专用通讯协议的固件,外部
单片机可以直接以扇区为基本单位读写常用的 USB 存储设备(包括 USB 硬盘/USB 闪存盘/U 盘)
。
D [7-0]
本地端
控制器
单片机
DSP
MCU
MPU
等
INT#
CS#
CH375
接口芯片
D+
计算机或
USB 设备
例如:
USB 打印机
USB 键盘/鼠标
DUSB 闪存盘
外置硬盘
U 盘/闪盘等
A0
RD#
WR#
2、特点
●
●
●
●
●
●
●
●
●
●
●
●
低速和全速 USB-HOST 主机接口,兼容 USB V2.0,外围元器件只需要晶体和电容。
低速和全速 USB 设备接口,完全兼容 CH372 芯片,支持动态切换主机与设备方式。
主机端点输入和输出缓冲区各 64 字节,支持 12Mbps 全速 USB 设备和 1.5Mbps 低速设备。
支持 USB 设备的控制传输、批量传输、中断传输。
自动检测 USB 设备的连接和断开,提供设备连接和断开的事件通知。
内置控制传输的协议处理器,简化常用的控制传输。
内置固件处理海量存储设备的专用通讯协议,支持 Bulk-Only 传输协议和 SCSI、UFI、RBC 或
等效命令集的 USB 存储设备(包括 USB 硬盘/USB 闪存盘/U 盘/USB 读卡器)
。
通过 U 盘文件级子程序库实现单片机读写 USB 存储设备中的文件。
并行接口包含 8 位数据总线,4 线控制:读选通、写选通、片选输入、中断输出。
串行接口包含串行输入、串行输出、中断输出,支持通讯波特率动态调整。
支持 5V 电源电压和 3.3V 电源电压,支持低功耗模式。
采用 SOP-28 无铅封装,兼容 RoHS,提供 SOP28 到 DIP28 的转换板,引脚基本兼容 CH374 芯片。
2
CH375 中文手册(一)
3、封装
封装形式
SOP-28
塑体宽度
7.62mm
引脚间距
300mil
1.27mm
50mil
封装说明
订货型号
标准的 28 脚贴片
CH375B
4、引脚
引脚号
28
12、23
引脚名称
VCC
GND
类型
电源
电源
9
V3
电源
13
14
10
11
22~15
4
3
27
1
XI
XO
UD+
UDD7~D0
RD#
WR#
CS#
INT#
输入
输出
USB 信号
USB 信号
双向三态
输入
输入
输入
输出
8
A0
输入
24
ACT#
输出
5
TXD
输入
输出
6
2
25
26
7
RXD
RSTI
RST
RST#
NC.
输入
输入
输出
输出
空脚
引脚说明
正电源输入端,需要外接 0.1uF 电源退耦电容
公共接地端,需要连接 USB 总线的地线
在 3.3V 电源电压时连接 VCC 输入外部电源,
在 5V 电源电压时外接容量为 0.01uF 退耦电容
晶体振荡的输入端,需要外接晶体及振荡电容
晶体振荡的反相输出端,需要外接晶体及振荡电容
USB 总线的 D+数据线
USB 总线的 D-数据线
8 位双向数据总线,内置弱上拉电阻
读选通输入,低电平有效,内置弱上拉电阻
写选通输入,低电平有效,内置弱上拉电阻
片选控制输入,低电平有效,内置弱上拉电阻
在复位完成后为中断请求输出,低电平有效
地址线输入,区分命令口与数据口,内置弱上拉电阻,
当 A0=1 时可以写命令,当 A0=0 时可以读写数据
在内置固件的 USB 设备方式下是
USB 设备配置完成状态输出,低电平有效。
在 USB 主机方式下是
USB 设备连接状态输出,低电平有效
仅用于 USB 主机方式,设备方式只支持并口,
在复位期间为输入引脚,内置弱上拉电阻,
如果在复位期间输入低电平那么使能并口,
否则使能串口,复位完成后为串行数据输出
串行数据输入,内置弱上拉电阻
外部复位输入,高电平有效,内置下拉电阻
电源上电复位和外部复位输出,高电平有效
电源上电复位和外部复位输出,低电平有效
空脚,必须悬空
3
CH375 中文手册(一)
5、命令
本手册中的数据,后缀 B 为二进制数,后缀 H 为十六进制数,否则为十进制数。
本手册中所指的单片机基本适用于 DSP 或者 MCU/MPU/SCM 等。
本手册主要提供了 USB 存储设备类命令,专用于 USB 海量存储设备,关于执行事务命令以及常用
控制传输命令请参考手册(二)
,关于 USB 设备方式下的命令请参考 CH372 手册。
代码
命令名称
输入数据
输出数据
命令用途
01H
GET_IC_VER
获取芯片及固件版本
分频系数
分频常数
版本号
(等 1mS)
操作状态
02H
SET_BAUDRATE
03H
05H
06H
0AH
ENTER_SLEEP
RESET_ALL
CHECK_EXIST
GET_MAX_LUN
0BH
SET_DISK_LUN
0BH
SET_PKT_P_SEC
15H
SET_USB_MODE
16H
TEST_CONNECT
17H
22H
ABORT_NAK
GET_STATUS
28H
RD_USB_DATA
2BH
WR_USB_DATA7
51H
DISK_INIT
产生中断
初始化 USB 存储设备
53H
DISK_SIZE
产生中断
获取 USB 存储设备的容量
54H
DISK_READ
产生中断
从 USB 存储设备读数据块
55H
DISK_RD_GO
产生中断
继续 USB 存储设备的读操作
56H
DISK_WRITE
产生中断
向 USB 存储设备写数据块
57H
DISK_WR_GO
产生中断
继续 USB 存储设备的写操作
58H
DISK_INQUIRY
产生中断
查询 USB 存储设备的特性
59H
DISK_READY
产生中断
检查 USB 存储设备是否就绪
5AH
DISK_R_SENSE
产生中断
检查 USB 存储设备的错误
任意数据
数据 38H
数据 34H
逻辑单元号
数据 39H
每扇区包数
模式代码
(等 40mS)
按位取反
最大单元号
(等 20uS)
操作状态
(等 2uS)
连接状态
中断状态
数据长度
数据流
数据长度
LBA 地址
扇区数
进入低功耗睡眠挂起状态
执行硬件复位
测试工作状态
获取 USB 存储设备最大逻辑单元号
设置 USB 存储设备的
当前逻辑单元号
设置 USB 存储设备的
每扇区数据包总数
设置 USB 工作模式
检查 USB 设备的连接状态
放弃当前 NAK 的重试
获取中断状态并取消请求
从当前 USB 中断的
端点缓冲区读取数据块
向 USB 主机端点的
输出缓冲区写入数据块
数据流
LBA 地址
扇区数
设置串口通讯波特率
如果命令的输出数据是操作状态,参考下表。
状态代码
状态名称
51H
CMD_RET_SUCCESS
5FH
CMD_RET_ABORT
状态说明
操作成功
操作失败
4
CH375 中文手册(一)
5.1. 命令 GET_IC_VER
该命令获取芯片及固件版本。返回的一个字节数据是版本号,其位 7 为 1,位 6 为 0,位 5~位 0
为版本号。如果返回值为 0B7H,去掉位 7 的 1,版本号为 37H。
5.2. 命令 SET_BAUDRATE
该命令设置 CH375 的串口通讯波特率。在 CH375 工作于串口通讯方式时,复位后默认的通讯波特
率是 9600bps,如果单片机支持较高的通讯速度,可以通过该命令动态调整串口通讯波特率。该命令
需要输入两个数据,分别是波特率分频系数和分频常数。
通常情况下,设置串口通讯波特率在 1mS 时间之内完成,完成后 CH375 以新设定的通讯波特率输
出操作状态,所以单片机应该在发出命令后及时调整自身的通讯波特率。
下面是串口通讯波特率对应的分频系数和分频常数。
分频系数
分频常数
串口通讯波特率(bps)
误差
02H
02H
03H
03H
03H
07H
03H
03H
03H
02H
03H
B2H
D9H
98H
CCH
F3H
F3H
C4H
FAH
FDH
常数
常数
9600
19200
57600
115200
460800
921600
100000
1000000
2000000
计算公式: 750000/(256-常数)
计算公式:6000000/(256-常数)
0.16%
0.16%
0.16%
0.16%
0.16%
0.16%
0%
0%
0%
5.3. 命令 ENTER_SLEEP
该命令使 CH375 芯片进入低功耗睡眠挂起状态(部分型号的芯片不支持该功能)
。进入低功耗状
态后,CH375 芯片的时钟停振,从而节约电能,直到检测到以下两种情况之一才退出低功耗状态:一
是检测到 USB 总线有信号;二是单片机向 CH375 芯片写入新的命令(没有输入数据的命令,例如
GET_IC_VER 或者 ABORT_NAK 命令)
。
通常情况下,CH375 芯片从低功耗状态退出并恢复到正常工作状态需要几毫秒的唤醒时间,当完
全恢复到正常工作状态后,CH375 将产生 USB_INT_WAKE_UP 事件中断。
5.4. 命令 RESET_ALL
该命令使 CH375 执行硬件复位。通常情况下,硬件复位在 40mS 时间之内完成。
5.5. 命令 CHECK_EXIST
该命令测试工作状态,以检查 CH375 是否正常工作。该命令需要输入 1 个数据,可以是任意数据,
如果 CH375 正常工作,那么 CH375 的输出数据是输入数据的按位取反。例如,输入数据是 57H,则输
出数据是 A8H。另外,在 CH375 复位后未收到任何命令之前,从其并口通常是读出数据 00H。
5.6. 命令 GET_MAX_LUN
该命令获取 USB 存储设备的最大逻辑单元号。该命令需要输入 1 个数据 38H,输出为 USB 存储设
备的最大逻辑单元号。有些 USB 存储设备支持多逻辑单元,最大逻辑单元号加 1 就是逻辑单元总数。
CH375 中文手册(一)
5
5.7. 命令 SET_DISK_LUN
该命令设置 USB 存储设备的当前逻辑单元号。该命令需要输入两个数据,分别是数据 34H 和新的
当前逻辑单元号。有些 USB 存储设备支持多逻辑单元,CH375 初始化 USB 存储设备后,默认是访问 0#
逻辑单元,如果需要访问其它逻辑单元,那么可以通过该命令选择当前逻辑单元号。
5.8. 命令 SET_PKT_P_SEC
该命令设置 USB 存储设备的每扇区数据包总数。该命令需要输入两个数据,分别是数据 39H 和新
的每扇区数据包总数。CH375 初始化 USB 存储设备后,默认是每扇区 512 字节,如果通过 DISK_SIZE
命令获得的扇区大小不是 512 字节,那么可以通过该命令设置每扇区的数据包总数,其值为扇区大小
除以 64,对于 512 字节的扇区,数据包总数为 8,对于 2048 字节的扇区,数据包总数为 32。
5.9. 命令 SET_USB_MODE
该命令设置 USB 工作模式。该命令需要输入 1 个数据,该数据是模式代码:
模式代码为 00H 时切换到未启用的 USB 设备方式(上电或复位后的默认方式)
;
模式代码为 01H 时切换到已启用的 USB 设备方式,外部固件模式;
模式代码为 02H 时切换到已启用的 USB 设备方式,内置固件模式;
模式代码为 04H 时切换到未启用的 USB 主机方式;
模式代码为 05H 时切换到已启用的 USB 主机方式,不产生 SOF 包;
模式代码为 06H 时切换到已启用的 USB 主机方式,自动产生 SOF 包;
模式代码为 07H 时切换到已启用的 USB 主机方式,复位 USB 总线;
关于 USB 设备方式请参考 CH372 手册。
在 USB 主机方式下,未启用是指不自动检测 USB 设备是否连接,所以需要外部单片机检测;启用
是指自动检测 USB 设备是否连接,当 USB 设备连接或者断开时都会产生中断通知外部单片机。在切换
到模式代码 06H 后,CH375 会自动定时产生 USB 帧周期开始包 SOF 发送给已经连接的 USB 设备。模式
代码 07H 通常用于向已经连接的 USB 设备提供 USB 总线复位状态,当切换到其它工作模式后,USB 总
线复位才会结束。建议在没有 USB 设备时使用模式 5,插入 USB 设备后先进入模式 7 再换到模式 6。
通常情况下,设置 USB 工作模式在 20uS 时间之内完成,完成后输出操作状态。
5.10. 命令 TEST_CONNECT
该命令用于在 USB 主机方式下查询当前 USB 设备的连接状态。通常情况下,该命令在 2uS 时间之
内完成。完成后输出 USB_INT_CONNECT、USB_INT_DISCONNECT 或者 USB_INT_USB_READY 三种状态之一,
状态 USB_INT_CONNECT 说明 USB 设备刚连接或者已经连接但尚未初始化,状态 USB_INT_DISCONNECT
说明 USB 设备尚未连接或者已经断开,状态 USB_INT_USB_READY 说明 USB 设备已经连接并且已经被初
始化(已经分配 USB 地址)
,输出 0 说明该命令尚未完成,可以稍后再读取状态。
5.11. 命令 ABORT_NAK
该命令放弃当前 NAK 的重试。CH375 工作于 USB 主机方式时,默认情况下,CH375 在收到 USB 设
备返回的 NAK 状态时,将不断重试直到返回成功或者错误。该命令可以强制 CH375 终止重试,以便执
行新的操作。另外,使用 SET_RETRY 命令可以设置是否禁止 NAK 重试。
5.12. 命令 GET_STATUS
该命令获取 CH375 的中断状态并通知 CH375 取消中断请求。当 CH375 向单片机请求中断后,单片
机通过该命令获取中断状态,分析中断原因并处理。
6
CH375 中文手册(一)
中断状态字节
00H~0FH
10H~1FH
20H~3FH
中断状态的分类
USB 设备方式的中断状态,请参考 CH372 手册
USB 主机方式的常用中断状态
USB 主机方式的操作失败状态,用于分析操作失败原因
下面是 USB 主机方式的常用中断状态。
状态字节
状态名称
14H
USB_INT_SUCCESS
15H
USB_INT_CONNECT
16H
USB_INT_DISCONNECT
17H
USB_INT_BUF_OVER
1DH
USB_INT_DISK_READ
1EH
USB_INT_DISK_WRITE
1FH
USB_INT_DISK_ERR
中断状态分析说明
USB 事务或者传输操作成功
检测到 USB 设备连接事件
检测到 USB 设备断开事件
USB 传输的数据有误或者数据太多缓冲区溢出
USB 存储设备读操作,请求数据读出
USB 存储设备写操作,请求数据写入
USB 存储设备操作失败
下面是 USB 主机方式的操作失败状态,通常用于分析操作失败原因。
中断状态字节
位 7~位 6
位5
位4
位 3~位 0
名称
(保留位)
(标志位)
IN 事务的
同步标志
导致操作
失败时的
USB 设备
的返回值
中断状态分析说明
总是 00
总是 1,指示该状态是操作失败状态
对于 IN 事务,如果该位为 0 则
当前接收的数据包不同步,数据可能无效
1010=设备返回 NAK
1110=设备返回 STALL
XX00=设备返回超时,设备没有返回
其它值是设备返回的 PID
5.13. 命令 RD_USB_DATA
该命令从当前 USB 中断的端点缓冲区中读取数据块。在 USB 主机方式下,USB 中断的端点缓冲区
就是 USB 主机端点的输入缓冲区。首先读取的输出数据是数据块长度,也就是后续数据流的字节数。
数据块长度的有效值是 0 至 64,如果长度不为 0,则单片机必须将后续数据从 CH375 逐个读取完。
5.14. 命令 WR_USB_DATA7
该命令向 USB 主机端点的输出缓冲区或者 USB 端点 2 的上传缓冲区写入数据块。首先写入的输入
数据是数据块长度,也就是后续数据流的字节数。数据块长度的有效值是 0 至 64,如果长度不为 0,
则单片机必须将后续数据逐个写入 CH375。
5.15. 命令 DISK_INIT
该命令初始化 USB 存储设备。对于已经连接的 USB 设备,该命令首先复位 USB 总线,然后分析该
USB 设备的描述符,如果是能够支持的 USB 存储设备,那么将自动配置该设备,最后建立与 USB 存储
设备的连接。CH375 在命令执行完成后向单片机请求中断,单片机可以读取中断状态作为该命令的操
作状态。如果 USB 设备已经断开,那么操作状态可能是 USB_INT_DISCONNECT;如果 USB 设备不能识
别或者该 USB 存储设备不被支持,那么操作状态通常是 USB_INT_DISK_ERR 或 USB_INT_BUF_OVER;如
果 USB 存储设备初始化成功,那么操作状态将是 USB_INT_SUCCESS。
5.16. 命令 DISK_SIZE
该命令用于获取 USB 存储设备的物理容量。在成功初始化 USB 存储设备后,该命令可以获取 USB
CH375 中文手册(一)
7
存储设备的总容量。CH375 在命令执行完成后向单片机请求中断,单片机可以读取中断状态作为该命
令的操作状态。如果操作状态是 USB_INT_SUCCESS,那么可以由 RD_USB_DATA 命令获取数据,数据通
常是 8 个字节,前 4 个字节以高字节在前组成的双字数据是 USB 存储设备的总扇区数,后 4 个字节以
高字节在前组成的双字数据是每个扇区的字节数,两个数据相乘的结果就是以字节为单位的 USB 存储
设备的总容量。如果扇区不是 512 字节,那么应该执行 SET_PKT_P_SEC 命令设置每扇区数据包总数。
5.17. 命令 DISK_READ
该命令从 USB 存储设备读取数据块。读取数据块以扇区为基本单位,需要两组参数:起始地址和
数据长度,起始地址是以 4 个字节表示的线性扇区号 LBA 地址,数据长度是以 1 个字节表示的扇区数。
该命令需要 5 个输入数据,依次是 LBA 地址的最低字节,LBA 地址的较低字节,LBA 地址的较高字节,
LBA 地址的最高字节,扇区数。该命令可以在容量高达 2000GB 的 USB 存储设备中任意读取 1 至 255
个扇区的数据。该命令需要与下面的 DISK_RD_GO 命令配合使用。
5.18. 命令 DISK_RD_GO
该命令使 CH375 继续执行 USB 存储设备的读操作。在单片机发出 DISK_READ 命令后,每当 CH375
从 USB 存储设备中读完 64 个字节的数据就会请求中断,单片机获取中断状态 USB_INT_DISK_READ,
所以单片机应该发出 RD_USB_DATA 命令取走 64 个字节的数据,然后发出 DISK_RD_GO 命令使 CH375 继
续读;CH375 再次从 USB 存储设备中读 64 个字节的数据并再次请求中断,单片机再次取走数据并再
次让 CH375 继续读;直到所有数据完全读出,CH375 会最后一次请求中断,单片机获取中断状态作为
整个读操作的状态,如果操作成功则状态是 USB_INT_SUCCESS,否则可能是 USB_INT_DISK_ERR。
即使单片机发出 DISK_READ 命令只读 1 个扇区,正常情况下,单片机也将收到(每扇区数据包总
数+1)个中断(在扇区为 512 字节时共 9 个中断)
,前面的中断是要求单片机取走数据,最后一个中
断是返回最终的操作状态。如果读 4 个扇区,那么正常情况下,单片机将会收到(4*每扇区数据包总
数+1)个中断,前面的中断是要求单片机取走数据。如果读操作中途失败,单片机将有可能提前收到
USB_INT_DISK_ERR 状态,从而提前结束读操作。
5.19. 命令 DISK_WRITE
该命令向 USB 存储设备写入数据块。写入数据块以扇区为基本单位,需要两组参数:起始地址和
数据长度,起始地址是以 4 个字节表示的线性扇区号 LBA 地址,数据长度是以 1 个字节表示的扇区数。
该命令需要 5 个输入数据,依次是 LBA 地址的最低字节,LBA 地址的较低字节,LBA 地址的较高字节,
LBA 地址的最高字节,扇区数。该命令可以在容量高达 2000GB 的 USB 存储设备中任意写入 1 至 255
个扇区的数据。该命令需要与下面的 DISK_WR_GO 命令配合使用。
5.20. 命令 DISK_WR_GO
该命令使 CH375 继续执行 USB 存储设备的写操作。在单片机发出 DISK_WRITE 命令后,CH375 很
快就会请求中断,单片机获取中断状态 USB_INT_DISK_WRITE,所以单片机应该发出 WR_USB_DATA7 命
令提供 64 个字节的数据,然后发出 DISK_WR_GO 命令使 CH375 继续写;每当 CH375 向 USB 存储设备写
完 64 个字节的数据后就会请求中断,单片机再次提供数据并再次让 CH375 继续写;直到所有数据完
全写入,CH375 会最后一次请求中断,单片机获取中断状态作为整个写操作的状态,如果操作成功则
状态是 USB_INT_SUCCESS,否则可能是 USB_INT_DISK_ERR。
即使单片机发出 DISK_WRITE 命令只写 1 个扇区,正常情况下,单片机也将收到(每扇区数据包
总数+1)个中断(在扇区为 512 字节时共 9 个中断)
,前面的中断是要求单片机提供数据,最后一个
中断是返回最终的操作状态。如果写 4 个扇区,那么正常情况下,单片机将会收到(4*每扇区数据包
总数+1)个中断,前面的中断是要求单片机提供数据。如果写操作中途失败,单片机将有可能提前收
到 USB_INT_DISK_ERR 状态,从而提前结束写操作。
CH375 中文手册(一)
8
5.21. 命令 DISK_INQUIRY
该命令查询 USB 存储设备的特性。CH375 在命令执行完成后向单片机请求中断,单片机可以读取
中断状态作为该命令的操作状态。如果操作状态是 USB_INT_SUCCESS,那么可以由 RD_USB_DATA 命令
获取数据,数据通常是 36 个字节,包括 USB 存储设备的特性以及厂商和产品的识别信息等。该命令
一般不需要用到,除非是分析新的逻辑单元。
5.22. 命令 DISK_READY
该命令检查 USB 存储设备是否就绪。CH375 在命令执行完成后向单片机请求中断,单片机可以读
取中断状态作为该命令的操作状态。如果操作状态是 USB_INT_SUCCESS,那么说明 USB 存储设备当前
已经就绪。
5.23. 命令 DISK_R_SENSE
该命令检查 USB 存储设备的错误。CH375 在命令执行完成后向单片机请求中断,单片机可以读取
中断状态作为该命令的操作状态。正常情况下操作状态是 USB_INT_SUCCESS,可以由 RD_USB_DATA 命
令获取数据后分析错误。
6、功能说明
6.1. 一般说明
CH375 芯片可以工作于 USB-HOST 主机方式或者 USB 设备方式。
CH375 的 USB 设备方式与 CH372 芯片完全兼容,相关资料可以参考 CH372 手册。
CH375 的 USB 主机方式支持并行接口和串行接口。在 USB 主机方式下,CH375 支持各种常用的 USB
全速设备,外部单片机需要编写固件程序按照相应的 USB 协议与 USB 设备通讯。但是对于 USB 存储设
备,CH375 内置了相关协议,通常情况下,外部单片机不需要编写固件程序,就可以直接通讯。
6.2. 本地端的硬件
CH375 芯片在本地端提供了通用的被动并行接口和点对点的串行接口。
在 CH375 芯片的复位期间,TXD 引脚用于选择通讯接口。如果 CH375 在复位期间检测到 TXD 引脚
为低电平则启用并行接口,否则启用串行接口。如果启用串行接口,那么复位完成后 TXD 引脚将用于
串行数据输出,并且 CH375 芯片只能工作于 USB 主机方式。
6.2.1. 并行接口
并口信号线包括:8 位双向数据总线 D7~D0、读选通输入引脚 RD#、写选通输入引脚 WR#、片选
输入引脚 CS#、中断输出引脚 INT#以及地址输入引脚 A0。通过被动并行接口,CH375 芯片可以很方便
地挂接到各种 8 位单片机、DSP、MCU 的系统总线上,并且可以与多个外围器件共存。
CH375 芯片的 CS#由地址译码电路驱动,用于当单片机具有多个外围器件时进行设备选择。INT#
输出的中断请求是低电平有效,可以连接到单片机的中断输入引脚或者普通 I/O 引脚,单片机可以使
用中断方式或者查询方式获知中断请求。
对于类似 Intel 并口时序的单片机,CH375 芯片的 RD#引脚和 WR#引脚可以分别连接到单片机的
读选通输出引脚和写选通输出引脚。对于类似 Motorola 并口时序的单片机,CH375 芯片的 RD#引脚应
该接低电平,并且 WR#引脚连接到单片机的读写方向输出引脚 R/-W。
CH375 芯片占用两个地址位,当 A0 引脚为高电平时选择命令端口,可以写入新的命令,或者读
出中断标志;当 A0 引脚为低电平时选择数据端口,可以读写数据。
下表为并口 I/O 操作的真值表(表中 X 代表不关心此位,Z 代表 CH375 三态禁止)
。
9
CH375 中文手册(一)
CS#
1
0
0
0
0
0
WR#
X
1
0
0
1
1
RD#
X
1
1/X
1/X
0
0
A0
X
X
1
0
0
1
D7-D0
X/Z
X/Z
输入
输入
输出
输出
对 CH375 芯片的实际操作
未选中 CH375,不进行任何操作
虽然选中但无操作,不进行任何操作
向 CH375 的命令端口写入命令码
向 CH375 的数据端口写入数据
从 CH375 的数据端口读出数据
从 CH375B 的命令端口读取中断标志,位 7 等效于 INT#引脚
6.2.2. 串行接口
串行接口只能用于 USB 主机方式,CH375 芯片的 USB 设备方式不支持串口。
串口信号线包括:串行数据输入引脚 RXD、串行数据输出引脚 TXD、中断输出引脚 INT#。通过串
行接口,CH375 可以用最少的连线与单片机、DSP、MCU 进行较远距离的点对点连接。
CH375 芯片的 RXD 和 TXD 可以分别连接到单片机的串行数据输出引脚和串行数据输入引脚。INT#
输出的中断请求是低电平有效,用于通知单片机。
CH375 的串行数据格式是 1 个起始位、9 个数据位、1 个停止位,其中前 8 个数据位是一个字节
数据,最后 1 个数据位是命令标志位。第 9 位为 0 时,前 8 位的数据被写入 CH375 芯片中,第 9 位为
1 时,前 8 位被作为命令码写入 CH375 芯片中。CH375 的串行通讯波特率默认是 9600bps,单片机可
以随时通过 SET_BAUDRATE 命令选择合适的通讯波特率。
6.2.3. 其它
CH375 芯片的 ACT#引脚用于状态指示。在内置固件的 USB 设备方式下,当 USB 设备尚未配置或者
取消配置后,该引脚输出高电平;当 USB 设备配置完成后,该引脚输出低电平。在 USB 主机方式下,
当 USB 设备断开后,该引脚输出高电平;当 USB 设备连接后,该引脚输出低电平。CH375 的 ACT#引脚
可以外接串了限流电阻的发光二级管 LED,用于指示相关的状态。
CH375 芯片的 UD+和 UD-引脚是 USB 信号线,工作于 USB 设备方式时,应该直接连接到 USB 总线
上;工作于 USB 主机方式时,可以直接连接到 USB 设备。如果为了芯片安全而串接保险电阻或者电感
或者 ESD 保护器件,那么交直流等效串联电阻应该在 5Ω之内。
CH375 芯片内置了电源上电复位电路,一般情况下,不需要外部提供复位。RSTI 引脚用于从外部
输入异步复位信号;当 RSTI 引脚为高电平时,CH375 芯片被复位;当 RSTI 引脚恢复为低电平后,CH375
会继续延时复位 35mS 左右,然后进入正常工作状态。为了在电源上电期间可靠复位并且减少外部干
扰,可以在 RSTI 引脚与 VCC 之间跨接一个容量为 0.1uF 左右的电容。RST 引脚和 RST#引脚是复位状
态输出引脚,分别是高电平有效和低电平有效;当 CH375 电源上电复位或者被外部强制复位以及复位
延时期间,RST 引脚和 RST#引脚分别输出高电平和低电平;CH375 复位完成后,RST 引脚和 RST#引脚
分别恢复到低电平和高电平。RST 和 RST#引脚可以用于向外部单片机提供上电复位信号。
CH375 芯片正常工作时需要外部为其提供 12MHz 的时钟信号。一般情况下,时钟信号由 CH375 内
置的反相器通过晶体稳频振荡产生。外围电路只需要在 XI 和 XO 引脚之间连接一个标称频率为 12MHz
的晶体,并且分别为 XI 和 XO 引脚对地连接一个高频振荡电容。如果从外部直接输入 12MHz 时钟信号,
那么应该从 XI 引脚输入,而 XO 引脚悬空。
CH375B 芯片支持 3.3V 或者 5V 电源电压。当使用 5V 工作电压时,CH375 芯片的 VCC 引脚输入外
部 5V 电源,并且 V3 引脚应该外接容量为 4700pF 到 0.02uF 左右的电源退耦电容。当使用 3.3V 工作
电压时,CH375 芯片的 V3 引脚应该与 VCC 引脚相连接,同时输入外部的 3.3V 电源,并且与 CH375 芯
片相连接的其它电路的工作电压不能超过 3.3V。
6.3. 内部结构
CH375 芯片内部集成了 PLL 倍频器、主从 USB 接口 SIE、数据缓冲区、被动并行接口、异步串行
接口、命令解释器、控制传输的协议处理器、通用的固件程序等。
PLL 倍频器用于将外部输入的 12MHz 时钟倍频到 48MHz,作为 USB 接口 SIE 时钟。
主从 USB 接口 SIE 是 USB 主机方式和 USB 设备方式的一体式 SIE,用于完成物理的 USB 数据接收
CH375 中文手册(一)
10
和发送,自动处理位跟踪和同步、NRZI 编码和解码、位填充、并行数据与串行数据之间的转换、CRC
数据校验、事务握手、出错重试、USB 总线状态检测等。
数据缓冲区用于缓冲 USB 接口 SIE 收发的数据。
被动并行接口用于与外部单片机/DSP/MCU 交换数据。
异步串行接口用于代替被动并行接口与外部单片机/DSP/MCU 交换数据。
命令解释器用于分析并执行外部单片机/DSP/MCU 提交的各种命令。
控制传输的协议处理器用于自动处理常用的控制传输的多个阶段,简化外部固件编程。
通用的固件程序包含两组:一组用于 USB 设备方式,自动处理 USB 默认端点 0 的各种标准事务等;
另一组用于 USB 主机方式,自动处理 Mass-Storage 海量存储设备的专用通讯协议。
CH375 芯片内部具有 7 个物理端点:
端点 0 是默认端点,支持上传和下传,上传和下传缓冲区各是 8 个字节;
端点 1 包括上传端点和下传端点,
上传和下传缓冲区各是 8 个字节,
上传端点的端点号是 81H,
下传端点的端点号是 01H;
端点 2 包括上传端点和下传端点,上传和下传缓冲区各是 64 个字节,上传端点的端点号是
82H,下传端点的端点号是 02H;
主机端点包括输出端点和输入端点,输出和输入缓冲区各是 64 个字节,主机端点与端点 2
合用同一组缓冲区,主机端点的输出缓冲区就是端点 2 的上传缓冲区,主机端点的输入
缓冲区就是端点 2 的下传缓冲区。
CH375 的端点 0、1、2 只用于 USB 设备方式,在 USB 主机方式下只需要用到主机端点。
在 USB 主机方式下,CH375 支持各种常用的 USB 全速设备。USB 设备的端点号可以是 0~15,两
个方向最多支持 31 个端点,USB 设备的包长度可以是 0~64 字节。
内置固件可以处理 Mass-Storage 海量存储设备的通讯协议,要求 USB 存储设备支持 Bulk-Only
传输协议,支持 SCSI、UFI、RBC 或者等效的命令集,并且数据端点的最大包长度是 64 字节,但是默
认端点 0 的最大包长度可以是 8、16、32 或者 64 字节。如果 USB 存储设备不符合上述要求,则需要
外部单片机通过控制传输以及 ISSUE_TOKEN 命令或者 ISSUE_TKN_X 命令自行处理相关通讯协议。
下图为 CH375 芯片内部的中断逻辑图。
6.4. 本地端的单片机软件
单片机通过 8 位并口对 CH375 芯片进行读写,所有操作都是由一个命令码、若干个输入数据和若
11
CH375 中文手册(一)
干个输出数据组成,部分命令不需要输入数据,部分命令没有输出数据。命令操作步骤如下:
①、 在 A0=1 时向命令端口写入命令代码;
②、 如果该命令具有输入数据,则在 A0=0 时依次写入输入数据,每次一个字节;
③、 如果该命令具有输出数据,则在 A0=0 时依次读取输出数据,每次一个字节;
④、 命令完成,可以暂停或者转到①继续执行下一个命令。
CH375 芯片专门用于处理 USB 通讯,在检测到 USB 总线的状态变化时或者命令执行完成后,CH375
以中断方式通知单片机进行处理。
7、参数
7.1. 绝对最大值(临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏)
名称
TA
TS
VCC
VIO
参数说明
CH375B 芯片,VCC=5V
CH375B 芯片,VCC=3.3V
储存时的环境温度
电源电压(VCC 接电源,GND 接地)
输入或者输出引脚上的电压
工作时的环境温度
最小值
最大值
-40
-40
-55
-0.5
-0.5
85
85
125
6.0
VCC+0.5
单位
℃
℃
V
V
7.2. 电气参数(测试条件:TA=25℃,VCC=5V,不包括连接 USB 总线的引脚)
(如果电源电压为 3.3V,则表中所有电流参数需要乘以 40%的系数)
名称
参数说明
最小值
典型值
最大值
CH375B 芯片,V3 不连 VCC
4.5
5
5.3
VCC
电源电压
CH375B 芯片,V3 连接 VCC
3.3
3.3
3.6
VCC=5V
12
30
ICC
工作时的总电源电流
VCC=3.3V
6
15
低功耗状态的电源电流
VCC=5V
0.15
ISLP
I/O 引脚悬空/内部上拉
VCC=3.3V
0.05
VIL
低电平输入电压
-0.5
0.7
VIH
高电平输入电压
2.0
VCC+0.5
VOL
低电平输出电压(4mA 吸入电流)
0.5
VOH
高电平输出电压(4mA 输出电流)
VCC-0.5
IUP
内置上拉电阻的输入端的输入电流
40
80
160
IDN
内置下拉电阻的输入端的输入电流
-80
-140
-240
VR
电源上电复位的电压门限
2.4
2.7
3.0
注:ACT#引脚的低电平吸入电流为 4mA,高电平输出电流为 200uA。
在 CH375 芯片复位期间 INT#引脚和 TXD 引脚只能提供 80uA 的高电平输出电流。
7.3. 时序参数(测试条件:TA=25℃,VCC=5V,参考附图)
(RD 是指 RD#信号有效并且 CS#信号有效,RD#=CS#=0 执行读操作)
(WR 是指 WR#信号有效并且 CS#信号有效,WR#=CS#=0 执行写操作)
单位
V
mA
mA
V
V
V
V
uA
uA
V
CH375 中文手册(一)
名称
FCLK
TPR
TRI
TRD
TE1
TE2
TE3
TE4
TE0
TSX
TSC
TSD
TWW
TRW
TAS
TAH
TIS
TIH
TON
TOF
TINT
TWAK
12
参数说明
USB 主机方式 XI 引脚的输入时钟的频率
内部电源上电的复位时间
外部复位输入的有效信号宽度
外部复位输入后的复位延时
RESET_ALL 命令的执行时间
SET_USB_MODE 命令的执行时间
SET_ENDP?命令的执行时间
SET_BAUDRATE 命令的执行时间
其余命令的执行时间
CH375B 命令码与命令码之间的间隔时间
CH375B 命令码与数据之间的间隔时间
CH375B 数据与数据之间的间隔时间
有效的写选通脉冲 WR 的宽度
有效的读选通脉冲 RD 的宽度
RD 或 WR 前的地址输入建立时间
RD 或 WR 后的地址输入保持时间
写选通 WR 前的数据输入建立时间
写选通 WR 后的数据输入保持时间
读选通 RD 有效到数据输出有效
读选通 RD 无效到数据输出无效
收到 GET_STATUS 命令到 INT#引脚撤消中断
从低功耗状态退出的唤醒时间
最小值
11.995
18
100
18
典型值
12.00
30
最大值
12.005
40
30
30
10
2
40
40
20
4
1000
2
100
1.5
1.5
1.5
0.6
60
60
5
5
0
5
0
0
2
10000
10000
1.5
6
30
20
3
10
单位
MHz
mS
nS
mS
mS
uS
uS
uS
uS
uS
uS
uS
nS
nS
nS
nS
nS
nS
nS
nS
uS
mS
CH375 中文手册(一)
13
8、应用
8.1. 并口方式(下图)
这是 CH375 与普通的 MCS-51 单片机的连接电路。CH375 的 TXD 引脚通过 1KΩ左右的下拉电阻接
地或者直接接地,从而使 CH375 工作于并口方式。
USB 总线包括一对 5V 电源线和一对数据信号线,通常,+5V 电源线是红色,接地线是黑色,D+
信号线是绿色,D-信号线是白色。USB 插座 P1 可以直接连接 USB 设备,必要时可以在提供给 USB 设
备的+5V 电源线上串接具有限流作用的快速电子开关,USB 电源电压必须是 5V。
电容 C3 用于 CH375 内部电源节点退耦,C3 是容量为 4700pF 到 0.02μF 的独石或者高频瓷片电
容。电容 C4 和 C5 用于外部电源退耦,C4 是容量为 0.1μF 的独石或者高频瓷片电容。晶体 X1、电容
C1 和 C2 用于 CH375 的时钟振荡电路。USB-HOST 主机方式要求时钟频率比较准确,晶体 X1 的频率是
12MHz±0.4‰,C1 和 C2 是容量为 15pF~30pF 的独石或高频瓷片电容。
为使 CH375 可靠复位,电源电压从 0V 上升到 5V 的上升时间应该少于 100mS。如果电源上电过程
较慢并且电源断电后不能及时放电,那么 CH375 将不能可靠复位。可以在 RSTI 引脚与 VCC 之间跨接
一个容量为 0.1μF 或者 0.47μF 的电容 C11 延长复位时间。
如果 CH375 的电源电压为 3.3V,那么应该将 V3 引脚与 VCC 引脚短接,共同输入 3.3V 电压,并
且电容 C3 可以省掉。
在设计印刷线路板 PCB 时,需要注意:退耦电容 C3 和 C4 尽量靠近 CH375 的相连引脚;使 D+和
D-信号线贴近平行布线,尽量在两侧提供地线或者覆铜,减少来自外界的信号干扰;尽量缩短 XI 和
XO 引脚相关信号线的长度,为了减少高频时钟对外界的干扰,可以在相关元器件周边环绕地线或者
覆铜。
CH375 中文手册(一)
14
CH375 芯片具有通用的被动并行接口,可以直接连接多种单片机、DSP、MCU 等。在普通的 MCS-51
系列单片机的典型应用电路中,CH375 芯片可以通过 8 位被动并行接口的 D7~D0、-RD、-WR、-CS、
A0 直接挂接到单片机 U2 的系统总线上。
如果 MCS-51 单片机没有用 U3 锁存 A7~A0 地址,那么可以用 U2 的 P20 等引脚驱动 CH375 的地址
线 A0,并且单片机程序中的端口地址需要相应修改。U4 用于简单的地址译码,产生所需的片选信号,
图中 CH375 芯片的片选地址范围为 B000H-BFFFH,而实际上 CH375 只需要占用两个地址:地址 BXX1H
用于写命令,地址 BXX0H 用于读写数据。
8.2. 串口方式(下图)
如果 CH375 芯片的 TXD 引脚悬空或者没有通过下拉电阻接地,那么 CH375 工作于串口方式。在
串口方式下,CH375 只需要与单片机/DSP/MCU 连接 3 个信号线,TXD 引脚、RXD 引脚以及 INT#引脚,
其它引脚都可以悬空。除了连接线较少之外,其它外围电路与并口方式基本相同。
另外,如果需要动态修改 CH375 串口的通讯波特率,那么建议由单片机的 I/O 引脚控制 CH375
的 RSTI 引脚,便于在必要时复位 CH375 以恢复到默认的通讯波特率。由于 RSTI 引脚内置有下拉电阻,
所以由 MCS51 等单片机的准双向 I/O 引脚驱动时可能需要另加一个阻值约几 KΩ的上拉电阻。
由于 INT#引脚和 TXD 引脚在 CH375 复位期间只能提供微弱的高电平输出电流,在进行较远距离
的连接时,为了避免 INT#或者 TXD 在 CH375 复位期间受到干扰而导致单片机误操作,可以在 INT#引
脚或者 TXD 引脚上加阻值为 2KΩ~5KΩ的上拉电阻,以维持较稳定的高电平。在 CH375 芯片复位完
成后,INT#引脚和 TXD 引脚将能够提供 4mA 的高电平输出电流或者 4mA 的低电平吸入电流。
8.3. 单片机读写 U 盘文件(USB 存储设备的文件级接口)
文件级 API 应用层接口
FAT32/16/12 文件系统层
SCSI/UFI/RBC 命令层
以扇区读写闪存或者硬盘
Bulk-Only 传输协议层
USB 基本传输:控制/批量
Bulk-Only 传输协议层
USB 基本传输:控制/批量
USB
USB-HOST 硬件接口芯片
USB-DEVICE 硬件接口芯片
一般情况下,单片机或嵌入式系统处理 USB 存储设备的文件系统需要实现上图左边的 4 个层次,
右边是 USB 存储设备的内部结构层次。由于 CH375 不仅是一个通用的 USB-HOST 硬件接口芯片,还内
置了相关的固件程序,包含了上图左边的 3 个层次(标为灰色部分)
,所以实际的单片机程序只需要
CH375 中文手册(一)
15
处理 FAT 文件系统层,并且即使这一层也可以由 CH375 的 U 盘文件级子程序库实现。
如果不需要处理文件系统,也就是不处理上图左边的最顶层,那么 CH375 直接提供了数据块的读
写接口,以 512 字节或者 2K 字节等的物理扇区为基本读写单位,从而将 USB 存储设备简化为一种外
部数据存储器,单片机可以自由读写 USB 存储设备中的数据,也可以自由定义其数据结构。
由于计算机将 USB 存储设备组织为文件系统,为了方便单片机通过 USB 移动存储设备与计算机之
间交换数据,单片机也可以将 USB 存储设备组织为文件系统,也就是处理上图左边的最顶层。
CH375 以 C 语言子程序库提供了 USB 存储设备的文件级接口,这些应用层接口 API 包含了常用的
文件级操作,可以移植并嵌入到各种常用的单片机程序中。
CH375 的 U 盘文件级子程序库具有以下特性:支持常用的 FAT12、FAT16 和 FAT32 文件系统,磁
盘容量可达 100GB 以上,支持多级子目录,支持 8.3 格式的大写字母和中文文件名,可以支持小写字
母或者长文件名,支持文件打开、新建、删除、读写以及搜索等。
CH375 的文件级子程序库需要至少 600 字节的随机存储器 RAM 作为缓冲区。以普通的 MCS-51 单
片机为例,文件系统的全部子程序有 4KB 到 8KB 代码,并且需要大约 80 字节的内部 RAM 和至少 512
字节的外部 RAM 作为缓冲区。有关 U 盘文件级子程序库的详细信息请参考 CH375 评估板的说明。
文件级子程序库的所有 API 在调用后都有操作状态返回,但不一定有应答数据。有关 API 参数的
说明请参考 CH375HF?.H,主要子程序如下:
初始化 CH375 芯片:CH375Init
查询 U 盘是否准备好:CH375DiskReady
查询 U 盘容量:CH375DiskSize
查询 U 盘信息(总容量及剩余容量)
:CH375DiskQuery
打开文件:CH375FileOpen
枚举或者搜索文件:CH375FileEnumer
关闭文件:CH375FileClose
新建文件:CH375FileCreate
删除文件:CH375FileErase
以扇区为单位从文件读数据:CH375FileReadX
以扇区为单位向文件写数据:CH375FileWriteX
以扇区为单位移动文件指针:CH375FileLocate
查询文件属性(属性/日期/时间/长度)
:CH375FileQuery
设置文件属性(属性/日期/时间/长度)
:CH375FileModify
以字节为单位从文件读数据:CH375ByteRead
以字节为单位向文件写数据:CH375ByteWrite
以字节为单位移动文件指针:CH375ByteLocate