
沁恒CH37X芯片选型参考和常见问题处理
3.1-3.64.2-5.4CH3743.0-3.64.4-5.33.1-3.64.2-5.43.0-3.64.3-5.3CH37x电源有两个范围(除了CH378为两个电源供电),电源典型值分别为3.3V和5V。不同的供电电压,芯片的最小系统原理图是不一样的。最明显的区别在于V3脚的链接处理。在5V供电的时候,V3脚连接0.01uF的退耦电容到地即可;在3.3V供电的时候,V3脚需要连接到VCC。
一、基础信息
型号 | 接口 | 功能 | 备注 | 电源 |
CH370 | SPI/并口 | USB_HOST | 支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯,兼容 USB V2.0 | 支持 5V 电源电压和 3.3V 电源电压,内置电源上电复位。CH370V 只支持 3.3V 电源电压。 |
CH372 | 并口 | USB_Device | 全速 USB 设备接口,兼容 USB V2.0 |
3.1-3.6 4.2-5.4 |
CH374 |
SPI/并口 | Host/Device都可以,F/U封装可以扩3个USB口 | 支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯,兼容 USB V2.0 |
3.0-3.6 4.4-5.3 |
CH375 | 并口/串口(只能在USB_HOST下使用) | Host/Device | 支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯,兼容 USB V2.0。作为设备兼容CH372 |
3.1-3.6 4.2-5.4 |
CH376 | SPI/串口/并口 | 主要做U盘、SD卡读写。USB为低速/全速 | 支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯,兼容 USB V2.0 |
3.0-3.6 4.3-5.3 |
CH378 | SPI/串口/并口 | 主要做U盘、SD卡读写。USB为全速/高速 | 支持USB2.0全速以及USB2.0高速。 |
V33:2.7-3.6 V18:1.65-1.95 |
CH37x电源有两个范围(除了CH378为两个电源供电),电源典型值分别为3.3V和5V。不同的供电电压,芯片的最小系统原理图是不一样的。最明显的区别在于V3脚的链接处理。在5V供电的时候,V3脚连接0.01uF的退耦电容到地即可;在3.3V供电的时候,V3脚需要连接到VCC。
二、具体应用选型
1.CH370
这款芯片目前只有USB HOST功能,作主机来获取设备的一些信息。
2.CH372
这个是WCH一颗比较经典的芯片,主要功能就是作为一个USB_Device与电脑或者USB_Host链接实现USB数据的传输的,因为接口是使用的并口,所以占用的IO数量比较多,可以使用STM32的FSMC去控制。使用CH372作为USB_Device拓展,电脑装上CH372驱动后,可再PC端识别为CH372设备,简单实现数据上下传。
3.CH374
CH374这个芯片有两个版本,一个是普通的CH374T等封装,这个就是一个SPI、串口、并口去扩展一个USB2.0全速Host/Device的USB接口芯片。而CH374F,CH374U是有Hub根集线器的一个USB扩展芯片。即实现SPI/并口去扩展出3个USB口,类似于HUB扩展的功能,不过是接口扩展USB。可以实现单片机通过374扩展出USB_Host,然后去识别键鼠、打印机、CDC设备、游戏手柄等等。这边从枚举到数据传输,都需要用户根据电脑枚举这些设备的步骤去模拟。CH374也可以作为Device使用,芯片作为设备有两个模式选择,一个是内置固件模式,再USB_Mode设置这边选择这个内置固件模式后,芯片即可自动完成CH372设备的枚举过程。如果需要做其它的设备,则需要用户选择外置固件模式,自己去做设备的枚举以及后续数据的传输。
4.CH376/CH378
目前CH376的版本号为:0x45;
目前CH378的版本号为:0x42;
这两个芯片主要是被用作U盘或者SD卡的读写。对于不想在自己MCU代码里面加入FATFS以及USB开发的工程师而言,是一个不错的选择。
两颗芯片的主要功能基本都是一样的。区别就在于速度以及模式上的区别。CH376的USB为低、全速,而CH378的USB接口为高速。与主控芯片连接的接口方面CH378的接口速度大于CH376,所以实际文件传输方面,速度会略快于CH376。
USB模式方面,两颗芯片都可以做USB_Device以及USB_Host。USB_Device也拥有内置固件模式(及无需用户做USB设备枚举阶段的代码,PC安装372驱动),PC端的设备管理器就能识别出一个372设备没用于USB数据的批量上下传。外置固件模式,就是使用者自己做好枚举的过程(使用者自己将CH37x系列的USB在电脑端识别为HID、CDC、大容量设备等)。主机模式都是一样的,实现对U盘或者SD卡的读写(比较简单)。也可以实现对对键鼠的识别等。最大的区别在于,0x43固件版本的CH378加入了读卡器模式(08H),设置完模式之后,就可以实现读卡器功能,在PC上识别出存储设备,并进行读写操作。
三、常见问题
1.CH370/CH372/CH374
一般CH370、CH372、CH374,做USB主机或者设备的大部分情况都是在USB部分的代码编写有问题,一些描述符上传的有问题或者在不该端点上传的时候上传了数据导致主机不识别。还有就是一些接口通讯上的问题,可能是时序上没有按照手册的要求去上传数据,一般这个时候需要用示波器或者逻辑分析仪去抓一下波形,看看是哪个地方出了问题,以便去在代码中做修改。还遇到一些客户在使用时会出现给芯片发命令,芯片没有给回应,这个时候就需要看看供电有没有问题,最重要的时看看晶振有没有起振,有没有选用手册里推荐的晶振值。
2.CH376/CH378
接口时序的问题
遇到这个问题,首先需要判断硬件上是否正确。检查芯片的电源脚是否在手册需求范围之内,CH376的V3脚硬件设计区别(根据芯片供电电压有区别,在文章上面有详细说明)。看晶振是否起振,芯片的复位引脚电平是否正确,以及接口选择相关的引脚电平是否正确。其次看一下接口通讯的时序是否满足手册的需求。例如SPI时序,CS片选信号需要按照手册需求来。
磁盘初始化过不去,U盘无法实现读写
检查以下几点:(1)接口通讯是否正常,不正常就看上面第一条。(2)看一下U盘,U盘的文件格式是否满足FAT12/FAT16/FAT32;存储容量大小满足小于等于32GB的需求。如果是USB3.0的U盘,需要确认那个U盘可以插入2.0的接口。然后还有一个比较重要的是,如果用户使用的U盘是做过系统盘的,那么需要使用第三方的格式化工具把U盘格式化后,在把文件系统改为CH37x要求的配置。
串口通讯,波特率修改的问题
两颗芯片如果是使用串口接口进行通讯的话,会涉及到波特率的设置。设置有两种方式:
(1)上电时,芯片部分引脚的高低电平设置。
对于CH376,会在上电的时候检测SDI/D6,SCK/D5,以及BZ/D4三个引脚的电平状态,从而修改默认的串行通讯波特率。
对于CH378,会在上电的时候检测SDI,SDO,以及SCK三个引脚的电平状态,从而修改默认的串行通讯波特率。
(2)串口命令修改波特率
两颗芯片都是支持以硬件默认波特率上电,通过CMD_SET_BAUDRATE命令去设置后续的串口通讯波特率,在设置完串口波特率之后,需要尽快在1ms以内将对应通讯主控芯片的串口波特率也设置到相同。
以下为CH376设置的值
CH378相对复杂一点,不过总体的流程都是类似的。
首先发送设置波特率的命令,然后发送对应的波特率的值,03 cc按照CH376的手册对应给的就是115200波特率。再修改完CH376的波特率之后,立刻修改STM32F103的串口波特率,最后读取返回值是否正确,正确则表示双方波特率修改成功。
初始化正常,但是创建文件出错,或者创建文件,写入数据后,实际里面没有内容。
这个问题,一般是使用者没有按照手册需求创建短文件名,或者创建函数写的有一些问题导致的。
需求:路径名首字符必须是斜杠/或者\,所有字符必须是大写字母、数字或者中文汉字以及某些特殊字符,文件名长度不超过11个字符:8字符长度主文件名 . 扩展名不超过3字符。长文件名另外考虑。可以参考沁恒官方例程EXAM11。
相关测试工具
在WCH官网下载CH376EVT。里面有一个检测CH376是否正常工作的软件CH376DBG.exe
以上则是本篇文章的所有内容,如有疑问,欢迎来沟通。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)