1. 选型

型号

接口

功能

备注

电源

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

CH370

SPI/并口

USB_Host

支持 1.5Mbps 低速和 12Mbps 全速 USB 通讯,兼容 USB V2.0

支持 5V 电源电压和 3.3V 电源电压,内置电源上电复位。CH370V 只支持 3.3V 电源电压。

3.0-3.6

4.5-5.3

注释:CH37x电源有两个范围(除了CH378为两个电源供电),电源典型值分别为3.3V和5V。不同的供电电压,芯片的最小系统原理图是不一样的。最明显的区别在于V3脚的链接处理。在5V供电的时候,V3脚连接0.01uF的退耦电容到地即可;在3.3V供电的时候,V3脚需要连接到VCC。具体可以看下面两个原理图。红框部分很明显的区别。

2. CH37x系列的芯片很多,上面的表格分类也是只把一些基础的信息放在了上面。但是具体项目的时候该怎么选择。

  1. CH370

   这个芯片只有主机功能

  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上识别出存储设备,并进行读写操作。

3. 常见问题

  CH376/CH378

  1. 接口通讯不正常,无法对芯片进行操作

  答:遇到这个问题,首先需要判断硬件上是否正确。检查芯片的电源脚是否在手册需求范围之内,CH376的V3脚硬件设计区别(根据芯片供电电压有区别,在文章上面有详细说明)。看晶振是否起振,芯片的复位引脚电平是否正确,以及接口选择相关的引脚电平是否正确。其次看一下接口通讯的时序是否满足手册的需求。例如SPI时序,CS片选信号需要按照手册需求来。如下图:在一个CS拉低的边沿里面完成了命令,数据的发送,以及读取。

  2. 磁盘初始化过不去,U盘无法实现读写

  答:检查以下几点:(1)接口通讯是否正常,不正常就看上面第一条。(2)看一下U盘,U盘的文件格式是否满足FAT12/FAT16/FAT32;存储容量大小满足小于等于32GB的需求。如果是USB3.0的U盘,需要确认那个U盘可以插入2.0的接口。然后还有一个比较重要的是,如果用户使用的U盘是做过系统盘的,那么需要使用第三方的格式化工具把U盘格式化后,在把文件系统改为CH37x要求的配置。

  3. 有关于CH376/CH378串口通讯,波特率修改的相关问题。

  答:两颗芯片如果是使用串口接口进行通讯的话,会涉及到波特率的设置。设置有两种方式:

  (1)上电时,芯片部分引脚的高低电平设置。

    对于CH376,会在上电的时候检测SDI/D6,SCK/D5,以及BZ/D4三个引脚的电平状态,从而修改默认的串行通讯波特率。

    

       对于CH378,会在上电的时候检测SDI,SDO,以及SCK三个引脚的电平状态,从而修改默认的串行通讯波特率。

  (2)串口命令修改波特率

    两颗芯片都是支持以硬件默认波特率上电,通过CMD_SET_BAUDRATE命令去设置后续的串口通讯波特率,在设置完串口波特率之后,需要尽快在1ms以内将对应通讯主控芯片的串口波特率也设置到相同。

        以下为CH376设置的值

      CH378相对复杂一点,不过总体的流程都是类似的。

  

  在代码方面,以STM32的程序为例,大概流程如下:

  

  首先发送设置波特率的命令,然后发送对应的波特率的值,03 cc按照CH376的手册对应给的就是115200波特率。再修改完CH376的波特率之后,立刻修改STM32F103的串口波特率,最后读取返回值是否正确,正确则表示双方波特率修改成功。

  

  4. CH376/CH378初始化都没有问题,但是创建文件出错,或者创建文件,写入数据后,实际里面没有内容。

  答:这个问题,一般是使用者没有按照手册需求创建短文件名,或者创建函数写的有一些问题导致的。

    需求:路径名首字符必须是斜杠/或者\,所有字符必须是大写字母、数字或者中文汉字以及某些特殊字符,文件名长度不超过11个字符:8字符长度主文件名 . 扩展名不超过3字符。长文件名另外考虑。可以参考沁恒官方例程EXAM11。或者在个人Gitee上下载STM32F103创建长文件名的驱动代码(暂时还未上传)。

    下面是SPI时序下,控制CH378与STM32芯片通讯创建文件的时序,提供参考。

  

5. 相关测试工具

  答:在WCH官网下载CH376EVT。里面有一个检测CH376是否正常工作的软件

4. 眼图测试

USB的眼图测试是由一套详细的规范要求的。测试框图如下:

测试框图如上图。

  5. CH376磁盘容量获取U盘容量大小运算

  

使用函数CH376DiskCapacity();实现读取U盘容量,读出的数值为扇区的数量,例如读取一个28.8GB的U盘,读出的扇区数为60620799

  

60620799*扇区字节512/10241024/1024=28.8GB

WCH沁恒 CH37系列芯片选型以及常见问题的处理(CH376/CH378)的更多相关文章

  1. 沁恒CH32F103C8T6的开发和烧录配置说明

    概述 CH32F1系列是沁恒生产的32位Cortex-M3 MCU, 片上集成了时钟安全机制.多级电源管理. 通用DMA控制器等. 此系列具有 2 路 USB2.0接口.多通道 TouchKey. 1 ...

  2. 沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置

    目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 沁恒CH32F103C ...

  3. 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置

    CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...

  4. 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录

    目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...

  5. 沁恒CH32V103C8T6开发环境笔记

    CH32V103C8T6 CH32V103C8T6是沁恒的RISC-V内核MCU, 基于RISC-V3A处理器, 内核采用2级流水线处理,设置了静态分支预测.指令预取机制,支持DMA. 主要参数如下 ...

  6. 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置

    目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...

  7. NFC芯片选型及基本电路框架

    RFID作为一项专业度较高的技术,在一些公司,可能还会专门招聘专业的RFID工程师.本篇阐述的涉及到的只是基本选型设计.电路框架,关于RFID天线调试.低功耗检卡调试等,后续再其他篇章会继续更新! N ...

  8. 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置

    目录 沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置 硬件准备 CH32V103 开发板 ...

  9. 爱特梅尔ATMEL全系列芯片解密单片机破解

    爱特梅尔ATMEL全系列芯片解密单片机破解 ATMEL芯片介绍: ATMEL公司为全球性的业界领先企业,致力于设计和制造各类微控制器.电容式触摸解决方案.先进逻辑.混合信号.非易失性存储器和射频 (R ...

  10. 在keil 4中添加stc系列芯片的方法--【sky原创】

    在keil 4中添加stc系列芯片的方法: 1.从官网下载uv3.cdb的文件网址是:http://www.stcmcu.com/ 2.下载好后把uv3.cdb文件改成STC.cdb:3. 然后将[S ...

随机推荐

  1. ifram父页面、子页面元素及方法的获取调用

    page1 父页面 <div id="ifram" class="parent1"> <iframe frameborder="0& ...

  2. Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化

    参考书籍<mysql是怎样运行的> 非常推荐这本书,通俗易懂,但是没有讲mysql主从等内容 书中还讲解了本文没有提到的子查询优化内容, 本文只总结了常见的子查询是如何优化的 系列文章目录 ...

  3. FJOI2007轮状病毒 行列式递推详细证明

    题目链接 题目给了你一个奇怪的图,让你求它的生成树个数. 开始写了一个矩阵树: #include<cstdio> #include<cstdlib> #include<c ...

  4. [Mysql] 两段提交

    事务提交 Mysql 默认开启自动提交事务 两段提交 把一个事务分成两个阶段来提交,就是把redolog拆分成了prepare和commit两段 MySQL想要准备事务的时候会先写redolog.bi ...

  5. 齐博x1头部底部菜单高亮设置

    下面这段是默认模板头部的导航菜单: {php}$menu_choose=config('system_dirname')?config('system_dirname'):'index';{/php} ...

  6. LabVantage仪器数据采集方案

    LabVantage的仪器数据采集组件为LIMS CI,是一个独立的应用程序/服务,实现仪器数据的采集(GC.LC等带有工作站的仪器). 将仪器输出数据转换为LIMS所需数据并传输,使用Talend这 ...

  7. 一、什么是Kubernetes

    一.什么是Kubernetes ​它是一个全新的基于容器技术的分布式架构领先方案,确切地说,Kubernetes是谷歌严格保密十几年的秘密武器Borg的一个开源版本.Borg是谷歌内部使用的大规模集群 ...

  8. 真正“搞”懂HTTP协议03之时间穿梭

    上一篇我们简单的介绍了一下DoD模型和OSI模型,还着重的讲解了TCP的三次握手和四次挥手,让我们在空间层面,稍稍宏观的了解了HTTP所依赖的底层模型,那么这一篇,我们来追溯一下HTTP的历史,看一看 ...

  9. 配置jmeter环境变量

    好记性不如烂笔头. 本文采用jmeter5.4.1版本.  1. Linux系统 1.1 将jmeter上传到安装目录并解压 jmeter5.4.1链接: https://pan.baidu.com/ ...

  10. devexpress中dockManager保存布局后恢复不正常

    在使用dockManager保存布局后进行恢复发现不正常,与中间的gridcontorl接触的都不行.gridcontorl设置的填充是fill 所以在在界面上再添加一个PanelControl控件并 ...