CH374 中文手册 ( 一 ) 1 1 概述 USB 总线接口芯片 CH374 中文手册 ( 一 ) 版本 :2A http://wch.cn CH374 是一个 USB 总线的通用接口芯片, 支持 USB-HOST 主机方式和 USB-DEVICE/SLAVE 设备方式, 内置 3 端口 HUB 根集线器, 支持低速和全速的控制传输 批量传输 中断传输以及同步 / 等时传输 在本地端,CH374 具有 8 位数据总线和读 写 片选控制线以及中断输出, 可以方便地挂接到单片机 /DSP/MCU/MPU 等控制器的系统总线上 除此之外,CH374 还提供了节约 I/O 引脚的 SPI 串行通讯方式, 通过 3 线或者 4 线 SPI 串行接口以及中断输出与单片机 /DSP/MCU/MPU 等相连接 D [7-] 本地端控制器 单片机 DSP MCU MPU 等 INT# CS# A RD# WR# CH374 接口芯片 并行接口 UD+ UD- 计算机或 USB 设备 例如 : USB 打印机 U 盘 / 闪存盘 USB 摄像头 USB 键盘等 本地端控制器单片机 DSP MCU MPU 等 INT# SCS# SCK SDO ( CH374-SDI ) SDI ( CH374-SDO ) CH374 接口芯片 SPI 接口 UD+ UD- 计算机或 USB 设备例如 : USB 打印机 U 盘 / 闪存盘 USB 摄像头 USB 键盘等 2 特点 支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯, 兼容 USB V2., 外围元器件只需要晶体和电容 支持 USB-HOST 主机接口和 USB-DEVICE 设备接口, 支持动态切换主机方式与设备方式 CH374U 芯片内置 3 端口 USB 根集线器 ROOT-HUB, 可以同时连接和管理 3 个 USB 设备 支持常用的低速和全速 USB 设备的控制传输 批量传输 中断传输 同步 / 等时传输 自动检测低速和全速 USB 设备的连接和断开, 提供设备连接和断开的中断通知 内置 USB 信号线的阻抗匹配串联电阻 USB 设备端的上拉电阻 USB 主机端的下拉电阻 可选两种单片机接口 :6MB 速度的 8 位被动并行接口和 3.5MB/28MHz 速度的 SPI 串行接口 并行接口包含 8 位数据总线,1 位地址,3 线控制 : 片选输入 写选通以及可选的读选通 并行接口只占用两个地址位 : 索引地址口和数据口, 读写数据口后内部索引地址自动递增 SPI 串行接口包含 SPI 片选 串行时钟 串行输入和输出, 并且 SPI 输出与输入可以并联
CH374 中文手册 ( 一 ) 2 中断输出引脚是可选连接, 低电平有效, 可以通过查询寄存器中的中断标志位代替 提供辅助功能 : 可编程时钟输出, 上电复位输出以及可选的看门狗复位 提供支持 FAT12/FAT16/FAT32 文件系统的 U 盘文件级子程序库, 实现单片机读写 U 盘文件 支持 5V 电源电压和 3.3V 电源电压甚至 3V 电源电压 提供 SOP-28 SSOP-2 SSOP-24 和 SOP-16 无铅封装, 兼容 RoHS, 可以提供 DIP28 转换板, 引脚基本兼容 CH375 和 CH372 芯片 3 封装 封装形式塑体宽度引脚间距封装说明订货型号 SOP-28 7.62mm 3mil 1.27mm 5mil 标准的 28 脚贴片 CH374S SSOP-2 5.3mm 29mil.65mm 25mil 超小型 2 脚贴片 CH374T 有关 CH374U 和 CH374G 的封装 HUB 引脚和 HUB 寄存器说明请参考手册 ( 二 ) 4 引脚 CH374S 引脚号 CH374T 引脚号 引脚名称 类型 引脚说明 28 2 VCC 电源 正电源输入端, 需要外接.1uF 电源退耦电容 12 23 18 GND 电源 公共接地端, 需要连接 USB 总线的地线 9 5 V3 电源 在 3.3V 电源电压时连接 VCC 输入外部电源, 在 5V 电源电压时外接容量为.1uF 退耦电容 13 8 XI 输入 晶体振荡的输入端, 需要外接晶体及振荡电容 14 9 XO 输出 晶体振荡的反相输出端, 需要外接晶体及振荡电容 1 6 UD+ USB 信号 USB 总线的 D+ 数据线 11 7 UD- USB 信号 USB 总线的 D- 数据线 8 位双向数据总线, 内置弱上拉电阻, 22~15 17~1 D7~D 双向三态 D3 兼是 SPI 接口的 SCS#,D5 兼是 SPI 接口的 SCK, D6 兼是 SPI 接口的 SDI,D7 兼是 SPI 接口的 SDO 4 3 RD# 输入 读选通输入, 低电平有效, 内置弱上拉电阻 3 2 WR# 输入 写选通输入, 低电平有效, 内置弱上拉电阻 27 19 CS# 输入 片选控制输入, 低电平有效, 内置弱上拉电阻 1 1 INT# 开漏输出 中断请求输出, 低电平有效, 内置上拉电阻 8 4 A 输入 地址线输入, 区分索引口与数据口, 内置弱上拉电阻, 当 A=1 时可以写索引地址, 当 A= 时可以读写数据 在 USB 设备方式下是 USB 传输或活动状态输出, 24 无 ACT# 开漏输出 在 USB 主机方式下是 USB 设备连接状态输出, 低电平有效, 内置上拉电阻
CH374 中文手册 ( 一 ) 3 5 无 UEN 输入 USB 信号 UD+/UD- 输出使能, 内置下拉电阻 6 无 CKO 输出 可编程时钟输出, 不用时必须悬空并且尽可能缩短连线 2 无 RSTI 输入 外部复位输入, 高电平有效, 内置下拉电阻 25 无 RST 输出 电源上电复位和外部复位输出, 高电平有效 26 无 RST# 输出 电源上电复位和外部复位输出, 低电平有效 7 无 SLP 输出 睡眠状态输出, 高电平有效 5 寄存器 本手册中所指的单片机基本适用于 DSP 或者 SCM/MCU/MPU/CPU 等 CH374 的内部寄存器以及缓冲区分配在地址从 H 到 FFH 的范围内, 由单片机寻址后访问 复位后的默认值都是以二进制数表示, 并可以由若干个字符标志说明其特性, 字符标志如下 : : 复位后总是 ; 1: 复位后总是 1; X: 该位由内部硬件自动设置, 或者受外部引脚状态的影响 ; =: 复位不影响数据, 数据初值不确定 ;?: 保留位, 读出的数据没有意义, 写入时必须写 或者保持原值 注 : 受翻译习惯的影响, 源于英文 USB 规范中的一些专业术语可能有多种相近的中文术语 地址范围十六进制 寄存器名称 ( 灰色 ) 寄存器的位名称 寄存器说明 ( 灰色 ) 寄存器的位说明 软硬件复位后的默认值 H-3H 保留 禁止读写???????? 4H REG_SYS_INFO 系统信息寄存器, 只读 XXX?XX1 4H 位 7 BIT_INFO_POWER_RST 硬件上电复位完成状态 : = 正在复位 ;1= 复位完成 /X 4H 位 6 BIT_INFO_WAKE_UP 芯片唤醒状态, 不受软件复位影响 : = 正在睡眠或唤醒过程中 ;1= 已唤醒 X 4H 位 5 BIT_INFO_SOF_PRES 硬件 1mS 定时周期状态, 在主机方式下,1= 将要产生 SOF 包 =/X 4H 位 4 保留 读出的数据无意义且不确定? 4H 位 3 BIT_INFO_USB_DP USB 总线 UD+ 引脚的逻辑电平状态 X 4H 位 2 BIT_INFO_USB_DM USB 总线 UD- 引脚的逻辑电平状态 X 4H 位 1 4H 位 硬件识别位 固定值, 总是为常量 1, 用于验证硬件连接无误和读操作成功 5H REG_SYS_CTRL 系统控制寄存器, 不受软件复位影响 5H 位 7 保留 读出的数据无意义且必须写 /? 5H 位 6 BIT_CTRL_OE_POLAR UEN 引脚的 USB 输出使能极性 : = 高电平使能,UEN 低则禁止 UD+/- 输出 ; 1= 低电平使能,UEN 高则禁止 UD+/- 输出 5H 位 5 BIT_CTRL_INT_PULSE INT# 引脚的中断输出方式 : = 低电平中断, 直到清除相应的中断标志 ; 1= 低电平脉冲中断 5H 位 4 BIT_CTRL_WATCH_DOG RST 引脚和 RST# 引脚的看门狗复位使能 : = 禁用, 仅提供上电复位, 无看门狗复位 ; 1= 启用, 启用后无法禁止, 除非硬件复位 5H 位 3 BIT_CTRL_RESET_NOW 芯片软件复位控制 := 不复位 ;1= 复位 5H 位 2 BIT_CTRL_USB_POWER V3 引脚的 USB 电源调节器控制 : = 开启, 从 VCC 引脚 5V 电源产生 USB 电源 ; 1= 禁用, 可以从 V3 引脚外部输入 USB 电源 1
CH374 中文手册 ( 一 ) 4 5H 位 1 保留 读出的数据无意义且必须写 /? 5H 位 BIT_CTRL_OSCIL_OFF 时钟振荡器控制 := 允许振荡 ;1= 停止振荡 6H REG_USB_SETUP USB 配置寄存器 6H 位 7 BIT_SETP_HOST_MODE USB 主从方式 := 设备方式 ;1= 主机方式 6H 位 6 BIT_SETP_LED_ACT 在设备方式下,ACT# 引脚低电平的激活事件 : = 收发传输过程 ;1=USB 主机活动 6H 位 6 BIT_SETP_AUTO_SOF 在主机方式下, 自动产生 SOF 使能 : = 禁止 ;1= 允许, 自动定时发出 SOF 包 6H 位 5 6H 位 4 6H 位 3 6H 位 2 6H 位 1 6H 位 6H 位 1 6H 位 BIT_SETP_USB_SPEED 启用 ROOT-HUB 后保留 BIT_SETP_RAM_MODE BIT_SETP_PULLUP_EN BIT_SETP_TRANS_EN BIT_SETP_BUS_CTRL 启用 ROOT-HUB 后保留 USB 总线速率 ( 启用 ROOT-HUB 后用法不同 ): = 全速模式 12Mbps;11= 低速模式 1.5Mbps; 其它值 = 禁用备用缓冲区应用方式 : = 禁用备用缓冲区 ; 1= 连接接收缓冲区以连续接收 128 字节, 起始地址为 RAM_ENDP2_EXCH/RAM_HOST_EXCH; 1= 连续发送第二缓冲区, 同步标志为 1 选中 ; 11= 连续接收第二缓冲区, 同步标志为 1 选中在设备方式下,USB 上拉电阻控制 : = 禁用上拉电阻 ;1= 启用上拉电阻 / 连接在设备方式下,USB 设备传输使能 : = 禁止 ;1= 允许, 启用 USB 设备 / 允许收发在主机方式下,USB 总线状态控制 : = 正常 / 空闲 ;1=UD+ 低 UD- 低 ( 总线复位 ); 1= 禁用 ;11=UD+ 低 UD- 高 ( 总线恢复 ) 7H REG_INTER_EN 中断使能寄存器, 含可编程时钟设置 1111 7H 位 7 至 BIT_IE_CLK_OUT_DIV 可编程时钟的分频除数 : 输出频率 = ( 48MHz / ( 该值 + 1 ) ), 1111 7H 位 4 例 :1=24MHz;1=16MHz;1111=3MHz 7H 位 3 BIT_IE_USB_RESUME USB 总线恢复 / 唤醒中断使能 : = 使能芯片唤醒完成中断 BIT_IF_WAKE_UP; 1= 使能 USB 总线恢复中断 BIT_IF_USB_RESUME 7H 位 2 BIT_IE_USB_SUSPEND USB 总线挂起中断使能 : = 禁止 ;1= 允许, 从 INT# 引脚输出 7H 位 1 BIT_IE_BUS_RESET 在设备方式下,USB 总线复位中断使能 : = 禁止 ;1= 允许, 从 INT# 引脚输出 7H 位 1 BIT_IE_DEV_DETECT 在主机方式下,USB 设备检测中断使能 : = 禁止 ;1= 允许, 从 INT# 引脚输出 7H 位 BIT_IE_TRANSFER USB 传输完成中断使能 : = 禁止 ;1= 允许, 从 INT# 引脚输出 8H REG_USB_ADDR USB 设备地址寄存器 8H 位 7 保留 读出的数据无意义且必须写 /? 8H 位 6 至 8H 位 BIT_ADDR_USB_DEV 在设备方式下为自身作为 USB 设备的地址, 在主机方式下为当前被操作的 USB 设备地址 9H REG_INTER_FLAG 中断标志寄存器, 只读 XXX 9H 位 7 BIT_IF_USB_DX_IN 全速时 UD+ 引脚 / 低速时 UD- 引脚的采样状态 : = 低电平 / 速度失配 ;1= 高电平 / 速度匹配 X 9H 位 6 BIT_IF_USB_OE 从 UEN 引脚输入的 USB 输出使能状态 : =UEN 引脚为低电平 ;1=UEN 引脚为高电平 X
CH374 中文手册 ( 一 ) 5 9H 位 5 9H 位 4 9H 位 3 9H 位 3 9H 位 2 9H 位 1 9H 位 1 9H 位 AH AH 位 7 AH 位 6 AH 位 5 AH 位 4 AH 位 3 AH 位 2 AH 位 1 AH 位 AH 位 3 至 AH 位 BIT_IF_DEV_ATTACH BIT_IF_USB_PAUSE BIT_IF_WAKE_UP BIT_IF_USB_RESUME BIT_IF_USB_SUSPEND BIT_IF_BUS_RESET BIT_IF_DEV_DETECT BIT_IF_TRANSFER REG_USB_STATUS BIT_STAT_SIE_FREE BIT_STAT_SUSPEND BIT_STAT_BUS_RESET BIT_STAT_TOG_MATCH BIT_STAT_THIS_PID BIT_STAT_THIS_ENDP BIT_STAT_DEV_RESP USB 设备的当前连接状态 : = 尚未连接任何 USB 设备 / 断开 / 拔出 ; 1= 至少已经连接一个 USB 设备 / 插入 USB 传输暂停标志, 该位在每次 USB 传输完成后自动置 1 芯片唤醒完成中断标志, 该位在芯片唤醒完成后自动置 1 USB 总线恢复 / 唤醒中断标志, 该位在检测到 USB 总线恢复时自动置 1 USB 总线挂起中断标志, 该位在检测到 USB 总线挂起时自动置 1 在设备方式下,USB 总线复位中断标志, 该位在检测到 USB 总线复位时自动置 1 在主机方式下,USB 设备插拔检测中断标志, 该位在检测到 USB 设备插拔后自动置 1 USB 传输完成中断标志, 该位在每次 USB 传输完成后自动置 1 USB 状态寄存器, 只读, 通常仅在检测到相应的中断之后查询当前 USB 接口引擎 SIE 的状态 : = 忙 / 正在传输 ;1= 空闲 / 等待当前 USB 总线挂起状态 : = 总线有活动 ;1= 总线挂起在设备方式下, 当前 USB 总线复位状态 : =USB 总线空闲 / 正常 / 没有复位 ; 1=USB 总线正在复位指示当前接收的数据包是否同步 : = 不同步 ;1= 同步在设备方式下,USB 传输的事务 / 令牌 PID: =OUT 事务 ;1= 保留 / 意外 ; 1=IN 事务 ;11=SETUP 事务在设备方式下,USB 传输的目的端点号 : = 端点 ;1= 端点 1; 1= 端点 2;11= 保留 / 意外在主机方式下,USB 设备的应答 PID: 1= 设备对 OUT/SETUP 事务应答 ACK; 11= 设备对 IN/OUT/SETUP 事务应答 NAK; 111= 设备对 IN/OUT/SETUP 事务应答 STALL; 11= 设备对 IN 事务应答 DATA; 111= 设备对 IN 事务应答 DATA1; XX= 设备应答错误或者超时无应答 ; 其它值 = 非法应答 / 意外 =/X /X /X /X /X /X /X /X 1XXXXXXX 1/X X X X XX XX XXXX
CH374 中文手册 ( 一 ) 6 BH REG_USB_LENGTH USB 长度寄存器, 只读 / 只写, 读为当前 USB 传输的接收长度, 在设备方式下, 写为 USB 端点 2 发送长度, XXXXXXXX 在主机方式下, 写为 USB 主机发送长度 CH REG_USB_ENDP 在设备方式下,USB 端点 控制寄存器 CH 位 7 BIT_EP_RECV_TOG 端点 接收同步标志 :=DATA;1=DATA1 CH 位 6 BIT_EP_TRAN_TOG 端点 发送同步标志 :=DATA;1=DATA1 CH 位 5 CH 位 4 CH 位 3 至 CH 位 BIT_EP_RECV_RESP BIT_EP_TRAN_RESP 端点 接收响应 ( 对 OUT 事务 ): = 应答 ACK;1= 禁用 ; 1= 应答 NAK;11= 应答 STALL 端点 发送响应 ( 对 IN 事务 ): 至 1= 应答数据长度 至 8; 111= 应答 NAK;1111= 应答 STALL; 其它值 = 禁用 DH REG_USB_ENDP1 在设备方式下,USB 端点 1 控制寄存器 ======== DH 位 7 BIT_EP1_RECV_TOG 端点 1 接收同步标志 :=DATA;1=DATA1 = DH 位 6 BIT_EP1_TRAN_TOG 端点 1 发送同步标志 :=DATA;1=DATA1 = DH 位 5 DH 位 4 DH 位 3 至 DH 位 BIT_EP1_RECV_RESP BIT_EP1_TRAN_RESP 端点 1 接收响应 ( 对 OUT 事务 ): = 应答 ACK;1= 禁用 ; 1= 应答 NAK;11= 应答 STALL 端点 1 发送响应 ( 对 IN 事务 ): 至 1= 应答数据长度 至 8; 111= 应答 NAK;1111= 应答 STALL; 其它值 = 禁用 EH REG_USB_ENDP2 在设备方式下,USB 端点 2 控制寄存器 EH 位 7 BIT_EP2_RECV_TOG 端点 2 接收同步标志 :=DATA;1=DATA1 EH 位 6 BIT_EP2_TRAN_TOG 端点 2 发送同步标志 :=DATA;1=DATA1 EH 位 5 EH 位 4 BIT_EP2_RECV_RESP 端点 2 接收响应 ( 对 OUT 事务 ): = 应答 ACK;1= 同步 / 等时传输 ; 1= 应答 NAK;11= 应答 STALL EH 位 3 保留 读出的数据无意义且必须写 /? EH 位 2 保留 读出的数据无意义且必须写 /? EH 位 1 EH 位 BIT_EP2_TRAN_RESP 端点 2 发送响应 ( 对 IN 事务 ): = 应答 DATA/DATA1;1= 同步 / 等时传输 ; 1= 应答 NAK;11= 应答 STALL DH REG_USB_H_TOKEN 在主机方式下,USB 主机令牌寄存器 ======== DH 位 7 至 DH 位 4 DH 位 3 至 DH 位 BIT_HOST_PID_TOKEN BIT_HOST_PID_ENDP 指定事务 / 令牌 PID: 111=SETUP 事务 ;1=OUT 事务 ; 11=IN 事务 ;11=SOF 包 ; 其它值 = 禁用 注 :SOF 包完成后无中断, 可查询 SIE 状态 指定被操作的目的端点号 : 至 1111= 端点号 至 15 EH REG_USB_H_CTRL 在主机方式下,USB 主机控制寄存器 EH 位 7 BIT_HOST_RECV_TOG 主机接收同步标志 :=DATA;1=DATA1 EH 位 6 BIT_HOST_TRAN_TOG 主机发送同步标志 :=DATA;1=DATA1 EH 位 5 保留 读出的数据无意义且必须写 /? EH 位 4 BIT_HOST_RECV_ISO 主机接收的传输类型 : = 控制 / 批量 / 中断传输 ;1= 同步 / 等时传输 = ==== ==== ====
CH374 中文手册 ( 一 ) 7 EH 位 3 BIT_HOST_START 主机传输启动控制 : = 暂停 ;1= 启动传输, 完成后自动清 EH 位 2 保留 读出的数据无意义且必须写 /? EH 位 1 保留 读出的数据无意义且必须写 /? EH 位 BIT_HOST_TRAN_ISO 主机发送的传输类型 : = 控制 / 批量 / 中断传输 ;1= 同步 / 等时传输 FH-1FH 保留 禁止读写???????? 2H-27H RAM_ENDP_TRAN USB 设备方式下的端点 发送缓冲区 ======== 28H-2FH RAM_ENDP_RECV USB 设备方式下的端点 接收缓冲区 ======== 3H-37H RAM_ENDP1_TRAN USB 设备方式下的端点 1 发送缓冲区 ======== 38H-3FH RAM_ENDP1_RECV USB 设备方式下的端点 1 接收缓冲区 ======== 4H-7FH RAM_ENDP2_TRAN USB 设备方式下的端点 2 发送缓冲区 ======== CH-FFH RAM_ENDP2_RECV USB 设备方式下的端点 2 接收缓冲区 ======== 8H-BFH RAM_ENDP2_EXCH USB 设备方式下的端点 2 备用缓冲区 ======== 4H-7FH RAM_HOST_TRAN USB 主机方式下的发送缓冲区 ======== CH-FFH RAM_HOST_RECV USB 主机方式下的接收缓冲区 ======== 8H-BFH RAM_HOST_EXCH USB 主机方式下的备用缓冲区 ======== 6 功能说明 6.1. 单片机接口 CH374 芯片在本地端提供了通用的 8 位被动并行接口和 SPI 同步串行接口 ( CH374G 只支持 SPI 接口方式 ) 在 CH374 芯片上电复位时,CH374 将采样 CS# WR# 和 RD# 引脚的状态, 如果 WR# 和 RD# 都为低电平 ( 接地 ) 并且 CS# 为高电平 ( 接正电源 ), 那么选择 SPI 串行接口, 否则选择并行接口 CH374 芯片 INT# 引脚输出的中断请求默认是低电平有效, 可以连接到单片机的中断输入引脚或普通输入引脚, 单片机可以使用中断方式或查询方式获知 CH374 的中断请求 为了节约引脚, 单片机可以不连接 CH374 的 INT# 引脚, 而直接查询 CH374 的中断标志寄存器 REG_INTER_FLAG 获知中断 6.2. 并行接口 并口信号线包括 :8 位双向数据总线 D7~D 读选通输入引脚 RD# 写选通输入引脚 WR# 片选输入引脚 CS# 和地址输入引脚 A 通过被动并行接口,CH374 芯片可以很方便地挂接到各种 8 位单片机 DSP MCU 的系统总线上, 并且可以与多个外围器件共存 CH374 芯片的 CS# 由地址译码电路驱动, 用于当单片机具有多个外围器件时进行设备选择 对于类似 Intel 并口时序的单片机,CH374 芯片的 RD# 引脚和 WR# 引脚可以分别连接到单片机的读选通输出引脚和写选通输出引脚 对于类似 Motorola 并口时序的单片机,CH374 芯片的 RD# 引脚应该接低电平, 并且 WR# 引脚连接到单片机的读写方向输出引脚 R/-W 下表为并口 I/O 操作的真值表 ( 表中 X 代表不关心此位,Z 代表 CH374 三态禁止 ) CS# WR# RD# A D7-D 对 CH374 芯片的实际操作 1 X X/Z CH374 芯片上电复位时开始采样, 用于选择 SPI 接口方式 1 X X X X/Z 未选中 CH374, 不进行任何操作 1 1 X X/Z 虽然选中但无操作, 不进行任何操作 1/X 1 输入 向 CH374 写入索引地址, 即其后进行读写操作的起始地址 1/X 输入 向指定地址写入数据, 完成后索引地址递增, 便于连续读写 1 输出 从指定地址读出数据, 完成后索引地址递增, 便于连续读写 1 1 输出 从指定地址读出数据, 索引地址不变, 便于读出修改后写回 CH374 芯片占用两个地址位, 当 A 引脚为高电平时选择索引地址端口, 可以写入新的索引地址, 或者读出数据但保持索引地址不变 ; 当 A 引脚为低电平时选择数据端口, 可以读写索引地址对应的
CH374 中文手册 ( 一 ) 8 数据, 并且在读写操作完成后自动将索引地址加 1 便于继续读写下一个数据 单片机通过 8 位并口对 CH374 芯片进行读写操作的步骤是 : 先从索引地址端口写入索引地址, 再连续读写若干个数据 6.3. SPI 串行接口 SPI 同步串行接口信号线包括 :SPI 片选输入引脚 SCS# 串行时钟输入引脚 SCK 串行数据输入引脚 SDI 和串行数据输出引脚 SDO 通过 SPI 串行接口,CH374 可以用较少的连线挂接到各种单片机 DSP MCU 的 SPI 串行总线上, 或者进行较远距离的点对点连接 CH374 芯片的 SCS# 引脚由单片机的 SPI 片选输出引脚或者普通输出引脚驱动,SCK 引脚由单片机的 SPI 时钟输出引脚 SCK 驱动,SDI 引脚由单片机的 SPI 数据输出引脚 SDO 或 MOSI 驱动,SDO 引脚则连接到单片机的 SPI 数据输入引脚 SDI 或 MISO 对于硬件 SPI 接口, 建议 SPI 设置是 CPOL=CPHA= 或者 CPOL=CPHA=1, 并且数据位顺序是高位在前 MSB first CH374 的 SPI 接口支持单片机用普通 I/O 引脚模拟 SPI 接口进行通讯 CH374 的 SDO 是三态输出引脚, 只在收到读操作命令后才输出 为了节约引脚,CH374 的 SDO 引脚可以与 SDI 引脚并联后再连接到单片机的双向 I/O 引脚, 建议 CH374 的 SDO 引脚先串接几百欧姆的电阻后再并联到 SDI 引脚 CH374 的 SPI 接口支持 SPI 模式 和 SPI 模式 3,CH374 总是从 SPI 时钟 SCK 的上升沿输入数据, 并在允许输出时从 SCK 的下降沿输出数据, 数据位顺序是高位在前, 计满 8 位为一个字节 SPI 的操作步骤是 : 1 单片机产生 CH374 芯片的 SPI 片选, 低电平有效 ; 2 单片机按 SPI 输出方式发出一个字节的地址码, 用于指定其后读写操作的起始地址 ; 3 单片机发出一个字节的命令码指明操作方向, 读操作命令码是 CH, 写操作命令码是 8H; 4 如果是写操作, 单片机发出一个字节的待写数据,CH374 收到并保存到指定地址后地址自动加 1, 单片机继续发出若干个字节的待写数据,CH374 依次处理, 直到单片机禁止 SPI 片选 ; 5 如果是读操作,CH374 从指定地址读出一个字节数据并输出后地址自动加 1, 单片机收到数据并保存,CH374 继续从下一个地址读出数据并输出, 直到单片机禁止 SPI 片选 ; 6 单片机禁止 CH374 芯片的 SPI 片选, 以结束当前 SPI 操作 下图是 SPI 逻辑时序图, 前一个是向 12H 地址写入 34H, 后一个是从 56H 地址读出 78H 6.4. 其它硬件 实际电路中未使用到的 CH374 芯片的任何引脚都可以悬空不接 CH374 芯片的 ACT# 引脚用于状态指示 在 USB 设备方式下, 由 BIT_SETP_LED_ACT 选择激活 ACT# 引脚输出低电平的事件, 默认是与自身有关的 USB 收发传输过程, 也可以选择是 USB 主机的所有传输包括 SOF 包 在 USB 主机方式下, 当 USB 设备断开后, 该引脚输出高电平 ; 当 USB 设备连接后, 该引脚输出低电平 CH374 的 ACT# 引脚可以外接串了限流电阻的发光二级管 LED, 用于指示相关的状态 CH374 芯片的 UD+ 和 UD- 引脚是 USB 信号线, 工作于 USB 设备方式时, 应该直接连接到 USB 总线
CH374 中文手册 ( 一 ) 9 上 ; 工作于 USB 主机方式时, 可以直接连接到 USB 设备 如果为了芯片安全而串接保险电阻或者电感或者 ESD 保护器件, 那么交直流等效串联电阻应该在 5Ω 之内 CH374 芯片的 UEN 引脚用于控制 USB 信号线 UD+ 和 UD- 的输出使能 对于没有 UEN 引脚的 CH374T 芯片, 必须设置 BIT_CTRL_OE_POLAR 为 1; 对于 CH374S 芯片, 可以由 UEN 引脚控制是否允许 USB 信号输出,UEN 引脚可以在串接 2KΩ 电阻后连接到 USB 设备的电源线上, 从而避免在 USB 设备失去工作电源时仍然发出 USB 信号 UEN 从无效变成有效还可以用于唤醒处于睡眠过程中的 CH374 芯片 CH374 芯片内置了电源上电复位电路, 一般情况下, 不需要外部提供复位 RSTI 引脚用于从外部输入异步复位信号 ; 当 RSTI 引脚为高电平时,CH374 芯片被复位 ; 当 RSTI 引脚恢复为低电平后,CH374 内部会继续延时复位 25mS 左右, 然后进入正常工作状态 为了在电源上电期间可靠复位并且减少外部干扰, 可以在 RSTI 引脚与 VCC 之间跨接一个容量为.1uF 左右的电容 RST 引脚和 RST# 引脚是复位状态输出引脚, 分别是高电平有效和低电平有效 ; 当 CH374 电源上电复位 被外部强制复位或复位延时期间, 以及启用看门狗后在看门狗计时溢出时,RST 和 RST# 引脚将分别输出高电平和低电平 ; 在 CH374 内部复位完成后,RST 和 RST# 引脚将继续延时几十毫秒再分别恢复到低电平和高电平 RST 和 RST# 引脚用于向外部单片机提供上电复位信号 对 CH374 执行任何写操作都可以清除看门狗计时 CH374 芯片正常工作时需要外部为其提供 24MHz 的时钟信号 一般情况下, 时钟信号由 CH374 内置的反相器通过晶体稳频振荡产生 外围电路只需要在 XI 和 XO 引脚之间连接一个标称频率为 24MHz 的晶体, 并且分别为 XI 和 XO 引脚对地连接一个高频振荡电容 如果从外部直接输入 24MHz 时钟信号, 那么应该从 XI 引脚输入, 而 XO 引脚悬空 CH374 芯片的 SLP 引脚是睡眠状态输出, 默认输出低电平 如果设置 BIT_CTRL_OSCIL_OFF 为 1 关闭时钟振荡器, 那么 CH374 芯片进入睡眠状态,SLP 引脚输出高电平, 直到唤醒后恢复低电平 CH374 芯片的 CKO 引脚是可编程时钟输出, 用于向单片机提供从 3MHz 到 24MHz 的时钟信号, 支持时钟频率动态调整并能够平滑过渡, 在 CH374 芯片睡眠后该引脚将停止时钟输出 CH374 芯片支持 5V 电源电压或者 3.3V 电源电压 ( 批号 232XXXXX 只支持 5V 电压 ) 当使用 5V 工作电压时,CH374 芯片的 VCC 引脚输入外部 5V 电源, 并且 V3 引脚应该外接容量为 47pF 到.2uF 左右的电源退耦电容 当使用 3.3V 工作电压时,CH374 芯片的 V3 引脚应该与 VCC 引脚相连接, 同时输入外部的 3.3V 电源, 并且与 CH374 芯片相连接的其它电路的工作电压不能超过 3.3V, 建议设置寄存器位 BIT_CTRL_USB_POWER 为 1 关闭电源调节器以节电 ( 从 4uA 到 15uA, 睡眠电流节约 63%) 6.5. 内部结构 在功能方面,CH374 芯片基本上是 CH375 芯片去掉命令解释器 控制传输的协议处理器 通用的固件程序后的纯接口芯片 由于去掉了协议处理器和固件程序, 所以外部的单片机程序更加复杂 ; 但是由于减少了内部处理等中间环节, 所以提高了与单片机之间的接口速度 CH374 芯片内部具有一个 USB 主机方式和 USB 设备方式的一体式主从 USB 接口引擎 SIE 以及根集线器, 用于完成物理的 USB 数据接收和发送, 自动处理位跟踪和同步 NRZI 编码和解码 位填充 并行数据与串行数据之间的转换 CRC 数据校验 事务握手 出错重试 USB 总线状态检测等 CH374 芯片内部具有 7 个物理端点 : 端点 是默认端点, 支持上传和下传, 上传和下传缓冲区各是 8 个字节 ; 端点 1 包括上传端点和下传端点, 上传和下传缓冲区各是 8 个字节, 上传端点的端点号是 81H, 下传端点的端点号是 1H; 端点 2 包括上传端点和下传端点, 上传和下传缓冲区各是 64 个字节, 上传端点的端点号是 82H, 下传端点的端点号是 2H; 主机端点包括输出端点和输入端点, 输出和输入缓冲区各是 64 个字节, 主机端点与端点 2 合用同一组缓冲区, 主机端点的发送缓冲区就是端点 2 的上传缓冲区, 主机端点的接收缓冲区就是端点 2 的下传缓冲区, 主机端点的接收缓冲区可以扩展为 128 字节 CH374 的端点 1 2 只用于 USB 设备方式, 在 USB 主机方式下只需要用到主机端点 在 USB 主机方式下,CH374 支持各种常用的 USB 低速 Low-Speed 设备 全速 Full-Speed 设备以及通过 USB-HUB 级联的 USB 设备 USB 设备的端点号可以是 ~15, 两个方向最多支持 31 个端点,USB 设备的包长度可以是 ~64 字节, 在接收方向上的最大包长度可以是 ~128 字节
CH374 中文手册 ( 一 ) 1 7 参数 7.1. 绝对最大值 ( 临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏 ) 名称参数说明最小值最大值单位 TA 工作时的环境温度 VCC=5V 或者 VCC=V3=3.3V -4 85 VCC=V3=3.V -4 7 TS 储存时的环境温度 -55 125 VCC 电源电压 (VCC 接电源,GND 接地 ) -.5 6. V VIO 输入或者输出引脚上的电压 -.5 VCC+.5 V 7.2. 电气参数 ( 测试条件 :TA=25,VCC=5V, 不包括连接 USB 总线的引脚 ) ( 如果电源电压为 3.3V, 则表中所有电流参数需要乘以 4% 的系数 ) 名称参数说明最小值典型值最大值单位 VCC 电源电压 V3 引脚不连 VCC 引脚 4.5 5 5.3 V3 引脚连接 VCC 引脚 3. 3.3 3.6 V ICC 工作时的总电源电流 VCC=5V 5 3 VCC=3.3V 2 15 ma ISLP 低功耗状态的电源电流 VCC=5V.35.15 I/O 引脚悬空 / 内部上拉 VCC=3.3V.15.7 ma VIL 低电平输入电压 -.5.7 V VIH 高电平输入电压 2. VCC+.5 V VOL 低电平输出电压 (4mA 吸入电流 ).5 V VOH 高电平输出电压 (4mA 输出电流 ) VCC-.5 V IUINT INT# 引脚的高电平上拉输出电流 24 24 36 ua IUACT ACT# 引脚的高电平上拉输出电流 53 53 8 ua IUP 其它内置上拉电阻的输入端的输入电流 3 15 25 ua IDUEN 内置下拉电阻的 UEN 引脚的输入电流 -3-6 -12 ua IDRI 内置下拉电阻的 RSTI 引脚的输入电流 -7-14 -21 ua VR 电源上电复位的电压门限 2.4 2.7 3. V 可定制选项 : 关掉内部上电复位, 低功耗睡眠状态的电源电流分别是 5V 时 7uA,3.3V 时 3uA 7.3. 基本时序 ( 测试条件 :TA=25,VCC=5V 或 VCC=3.3V) 名称参数说明最小值典型值最大值单位 FCLK USB 主机方式 XI 引脚的输入时钟的频率 23.99 24. 24.1 MHz TPR 电源上电的内部复位时间 15 25 4 ms TRI 外部复位输入的有效信号宽度 1 ns TRD 外部复位输入后的复位延时 15 17 2 ms TRO 电源上电 RST 和 RST# 引脚输出复位时间 6 15 ms TDGC 看门狗计时周期 ( 溢出时间 ) 95 117 ms TDGR 看门狗计时溢出产生的复位时间 6 64 14 ms TWAK 芯片唤醒完成时间 3 5 15 ms TINT 低电平脉冲方式下 INT# 引脚的中断脉宽 8 16 ms 7.4. 并口时序 ( 测试条件 :TA=25,VCC=5V, 括号中参数 VCC=3.3V, 参考下面附图 )
CH374 中文手册 ( 一 ) 11 (RD 是指 RD# 信号有效并且 CS# 信号有效,WR#=1&RD#=CS#= 执行读操作 ) (WR 是指 WR# 信号有效并且 CS# 信号有效,WR#=CS#= 执行写操作 ) 名称参数说明最小值典型值最大值单位 TWW 有效的写选通脉冲 WR 的宽度 3 (45) ns TRW 有效的读选通脉冲 RD 的宽度 3 (45) ns TWS 读选通或写选通脉冲的间隔宽度 12 (14) ns TAS RD 或 WR 前的地址输入建立时间 4 (6) ns TAH RD 或 WR 后的地址输入保持时间 3 ns TIS 写选通 WR 前的数据输入建立时间 1 ns TIH 写选通 WR 后的数据输入保持时间 4 (6) ns TON 读选通 RD 有效到数据输出有效 18 (25) 25 (4) ns TOF 读选通 RD 无效到数据输出无效 18 (25) ns 7.5. SPI 串口时序 ( 测试条件 :TA=25,VCC=5V, 括号中参数 VCC=3.3V, 参考上面附图 ) 名称参数说明最小值典型值最大值单位 TSS SCK 上升沿之前 SCS# 有效的建立时间 2 (3) ns TSH SCK 上升沿之后 SCS# 有效的保持时间 2 (3) ns TNS SCK 上升沿之前 SCS# 无效的建立时间 2 (3) ns TNH SCK 上升沿之后 SCS# 无效的保持时间 2 (3) ns TN SCS# 无效时间 (SPI 操作间隔时间 ) 8 (12) ns TCH SCK 时钟的高电平时间 14 (18) ns TCL SCK 时钟的低电平时间 18 (24) ns TDS SCK 上升沿之前 SDI 输入的建立时间 4 (6) ns TDH SCK 上升沿之后 SDI 输入的保持时间 3 ns TOE SCK 下降沿到 SDO 输出有效 2 12 (18) 18 (25) ns TOX SCK 下降沿到 SDO 输出改变 8 (12) 12 (18) ns TOZ SCS# 无效到 SDO 输出无效 18 (25) ns
CH374 中文手册 ( 一 ) 12 8 应用 8.1. 并口方式 ( 下图 ) 这是 CH374 的并口连接电路 图中 CH374 芯片的 VCC 电源是 5V 电压 电容 C3 用于 CH374 内部电源节点退耦,C3 是容量为 47pF 到.2μF 的独石或者高频瓷片电容 电容 C4 用于外部电源退耦,C4 是容量为.1μF 的独石或高频瓷片电容 晶体 X1 电容 C1 和 C2 用于 CH374 的时钟振荡电路 USB-HOST 主机方式要求时钟频率比较准确, X1 的频率是 24MHz±.4, 参考手册 ( 二 ) 中的设置,X1 的频率也可以选用 12MHz C1 和 C2 是容量约为 22pF 的独石或高频瓷片电容 电容 C5 是可选的, 仅用于延长电源上电时 CH374 芯片的复位时间, 一般的应用电路中可以省去 C5, 或者也可以由单片机的普通 I/O 引脚控制 CH374 复位 建议在设计印刷线路板 PCB 时, 退耦电容 C3 和 C4 尽量靠近 CH374 的相连引脚 ; 使 D+ 和 D- 信号线贴近平行布线, 尽量在两侧提供地线或者覆铜, 减少来自外界的信号干扰 ; 尽量缩短 XI 和 XO 引脚相关信号线的长度, 为了减少高频时钟对外界的干扰, 可以在相关元器件周边环绕地线或者覆铜 电阻 R2 和电容 C7 通常用于在 USB-HOST 应用中限制 USB 设备刚连接时的峰值电流, 电阻 R2 可以用限流电阻或者电感代替 UEN 引脚可以通过 2KΩ 电阻连接到 USB 电源, 用于在 USB 设备失去工作电源时关闭 USB 信号输出 发光管 L1 及限流电阻 R1 是可选的, 用于状态指示 CH374 还为单片机系统提供了以下辅助信号 :RST 和 RST# 引脚可以用于为单片机提供上电复位和看门狗复位信号 ;CKO 引脚可以用于为单片机提供频率可动态编程的时钟信号 ;SLP 引脚可以用于为单片机或者其它外设提供睡眠断电后的自动唤醒控制 如果不连接中断请求输出引脚 INT#, 那么单片机程序也可以通过查询中断标志寄存器代替 CH374 芯片具有通用的被动并行接口, 通过 D-D7 A -RD -WR -CS 和 -INT 信号, 可以直接连接多种单片机 DSP MCU CPU 等 8.2. SPI 串口方式 ( 下图 ) 如果 CH374 芯片的 RD# 引脚和 WR# 引脚为低电平 ( 接地 ) 并且 CS# 引脚为高电平 ( 接正电源 ), 那么 CH374 将工作于 SPI 串口方式 在 SPI 串口方式下,CH374 只需要与单片机 /DSP/MCU 连接 5 个信号线 :SCS# 引脚 SCK 引脚 SDI 引脚和 SDO 引脚以及 INT# 引脚, 其它引脚都可以悬空 为了节约引脚,INT# 引脚可以不连接, 而代之以查询中断标志寄存器, 但是查询效率较低 为了节约引脚,CH374 的 SDO 输出引脚可以在串接 33Ω 的电阻 R4 后并联到 SDI 引脚上, 再与单片机的 SDI 和 SDO 连接, 当然, 单片机的 SDO 引脚必须也是三态输出或者是可以关闭输出的 SPI 串口方式除了连接线比并口方式较少之外, 其它外围电路与并口方式基本相同 在软件编程方面, 除了硬件抽象层的接口子程序不同之外, 所有功能性的程序基本相同 CH374 的 SPI 串口方式为 I/O 引脚有限的单片机或者没有并口总线的单片机提供了进行 USB 通讯和控制 USB 设备的低成本接口方式
CH374 中文手册 ( 一 ) 13 8.3. 工作电压 3.3V( 下图 ) 图中 CH374 芯片的 VCC 是 3.3V 电压或者 3V, 所以 V3 引脚必须和 VCC 短接, 共同输入 3.3V 电压, 但是作为 USB 主机端的 USB 电源电压, 即提给 USB 端口 P3 的电压仍然必须是 5V 8.4. 内置 HUB 连接 3 个设备 ( 下图 ) CH374U 芯片内置了三端口根集线器 Root-HUB, 作为 USB-Host 主机使用时, 可以同时连接 3 个 USB 设备, 支持 USB 全速和低速设备混合应用 其中端口 P5 和 P6 只能用于 Host 方式连接外部 USB 设备, 端口 P4 既可以用于 Host 方式连接外部 USB 设备, 也能用于 Device 方式连接外部 Host 主机