一款高速USB转接多种协议芯片CH347

flushbonading

本文介绍了国产CH347芯片的多种工作模式,包括USB转UART、IIC、SPI和JTAG等功能。

目前正在设计合宙PC模拟器通过CH347实现控制SPI、IIC、GPIO的功能,所以给大家分享一下这个非常给力的国产芯片。

CH347介绍

CH347是一款高速USB总线转接芯片,通过USB总线提供异步串口I2C同步串行接口SPI同步串行接口JTAG接口等。 在异步串口方式下,CH347提供了2个高速串口,主要用于为计算机扩展异步串口。

  • 在同步串行接口方式下,CH347提供了1个2线I2C接口(SCL线、SDA线)和1个4线SPI接口(SCS线、SCK/CLK线、MISO/SDI/DIN线、MOSI/SDO/DOUT线),用于为计算机扩展2线或4线同步串行接口,操作EEPROM、FLASH和传感器等器件。
  • 在SWD接口方式下,CH347提供了1个SWD接口(SWDCLK线,SWDIO线)

特点

  • 概述
    • 480Mbps高速USB设备接口,外围元器件只需晶振和电容
    • 单一3.3V供电
    • 多种工作模式,适应高速USB转接应用需求
  • 异步串口
    • 内置固件,仿真标准串口,用于升级原串口外围设备,或者通过USB增加额外串口。
    • 计算机端Windows操作系统下的串口应用程序完全兼容,无需修改。
    • 硬件全双工串口,内置独立的收发缓冲区,通讯波特率支持1200bps~9Mbps。
    • 串口支持8个数据位,支持奇校验、偶校验以及无校验,支持1或2停止位。
    • 每个串口内置12K字节的接收FIFO,4K字节的发送FIFO。
    • 支持常用的MODEM联络信号RTS、DTR、DCD、RI、DSR、CTS。
    • 支持CTS和RTS硬件自动流控。
    • 支持半双工,提供串口正在发送状态指示TNOW,可用于控制RS485收发切换。
    • 支持最多8路GPIO输入输出功能。
    • 通过外加电平转换器件,支持RS232、RS485、RS422等接口。
  • I2C同步串行接口
    • 作为Host/Master主机模式。
    • 提供SCL和SDA两根信号线,支持5种传输速度,传输频率可达1MHz。
    • 通过计算机API配合,可灵活操作2线接口的A/D、D/A、EEPROM和传感器等器件。
  • SPI同步串行接口
    • 作为Host/Master主机模式。
    • 提供SCS线、SCK/CLK线、MISO/SDI/DIN线、MOSI/SDO/DOUT四根信号线。
    • 支持2根片选信号线,可分时操作2个SPI接口设备。
    • 支持8位/16位数据结构,支持MSB和LSB传输。
    • 支持SPI模式0/1/2/3,支持传输频率配置,传输频率可达60MHz。
    • 支持硬件DMA发送和接收。
    • 通过计算机API配合,可灵活操作4线接口的FLASH、MCU、传感器等器件。
  • JTAG接口
    • 作为Host/Master主机模式。
    • JTAG接口提供TMS线、TCK线、TDI线、TDO线、TRST线(可选)和SRST线(可选)。
    • 支持高速USB数据传输。
    • 通过计算机API配合,可灵活操作CPU、DSP、FPGA、CPLD、MCU等器件。
  • SWD接口
    • 作为Host/Master主机模式。
    • SWD接口提供SWDCLK线、SWDIO线。
    • 通过计算机API配合,可灵活操作ARM MCU和CPU等器件。

封装

:CH347的USB收发器按USB2.0全内置设计,UD+和UD-引脚不能串接电阻,否则影响信号质量。 CH347F的底板是0#引脚GND,是可选但建议的连接;其它GND是必要连接。

沁恒官网CH347信息

模块功能

模式

CH347有四种工作模式,多接口可以同时使用:

接口模式接口功能
Mode-0480Mbps高速USB转UART
Mode-1480Mbps高速USB转UART+SPI+IIC(厂商驱动模式)
Mode-2480Mbps高速USB转UART+SPI+IIC(系统HID驱动模式)
Mode-3480Mbps高速USB转UART+JTAG(厂商驱动模式)

这里的厂商驱动指的是驱动接口,需要安装沁恒提供的驱动

工作模式功能接口说明驱动接口API
模式 0接口 0:USB 转高速串口 0
接口 1:USB 转高速串口 1
CH343SER(VCP)系统内原生串口 API 或 CH347DLL 内 CH347UART_xxx
模式 1接口 0:USB2.0 转高速串口 1
接口 1:USB2.0 转 SPI+I2C
CH343SER(VCP)
CH347PAR
系统内原生串口 API 或 CH347DLL 内 CH347UART_xxx
CH347DLL 内 CH347SPI_xxx、CH347I2C_xxx
模式 2接口 0:USB2.0 HID 转高速串口 1
接口 1:USB2.0 HID 转 SPI+I2C
系统自带 HID 驱动CH347UART_xxx
CH347DLL 内 CH347SPI_xxx、CH347I2C_xxx
模式 3接口 0:USB2.0 转高速串口 1
接口 1:USB2.0 转 JTAG+I2C
CH343SER(VCP)
CH347PAR
系统内原生串口 API 或 CH347DLL 内 CH347UART_xxx
CH347DLL 内 CH347JTAG_xxx、CH347I2C_xxx

我们现在拆分上面的表格,让大家更好的去使用。

  • 工作模式:提供了4种模式,模式之间的区别是“提供哪些接口”
  • 功能接口说明:每个模式提供两个接口,相当于芯片同时提供两个独立的功能通道
  • 驱动接口:不同的接口需要不同的驱动
    • CH343SER:专门用作串口驱动
    • CH347PAR:对SPI IIC JTAG这些接口驱动
    • 系统自带HID驱动,电脑自带不需要装
  • API:控制芯片的函数,分为两种
    • 系统原生接口API:电脑自带,适合简单控制串口
    • CH343DLL里的函数:由沁恒提供,能控制SPI IIC JTAG这些接口驱动

如果你用 CH347 的模式 1,实际使用场景是这样的: 硬件连接:把芯片插电脑 USB,芯片的 “串口” 接一个传感器,“SPI” 接一个显示屏; 装驱动:给串口装 “CH343SER (VCP)” 驱动,给 SPI 装 “CH347PAR” 驱动,电脑就能识别这两个接口; 写代码控制: 想读传感器数据:用 “系统原生串口 API” 或 “CH347UART_xxx” 函数控制串口; 想让显示屏显示内容:用 “CH347SPI_xxx” 函数控制 SPI 接口。

引脚定义

说明

CH347芯片具有多种工作模式,同一引脚在不同工作模式下的功能和定义可能不同。CH347芯片在上电复位或者外部复位时候,会检查引脚状态自动配置工作模式 只介绍347F的引脚,关于347T`可查阅下方的官方PDF CH347技术手册

:引脚类型缩写解释: USB = USB信号引脚; I = 信号输入; O = 信号输出; P = 电源或地; NC = 空脚; FT = 耐受5V电压。

1. 标准的公共引脚

引脚号引脚名称类型引脚说明
21VCCP电源调节器正电源输入端,需要外接退耦电容
0,20GNDP公共接地端,需要连接USB总线的地线
3RST#I外部复位输入端,低电平有效,内置上拉电阻
28UD+USB直接连到USB总线的D+数据线,不能额外串接电阻
27UD-USB直接连到USB总线的D-数据线,不能额外串接电阻
1XII晶体振荡输入端
2XOO晶体振荡反相输出端
6VIOPI/O端口电源输入端,需要外接退耦电容

2. SPI接口相关引脚

引脚号引脚名称类型引脚说明
13SCS0O4线串口的片选输出0
7SCS1O4线串口的片选输出1
14SCKO4线串口的时钟输出,别名DCK
15MISOI(FT)4线串口的数据输入,别名DIN或SDI,内置上拉电阻
16MOSIO4线串口的数据输出,别名DOUT或SDO

3. IIC接口相关引脚

引脚号引脚名称类型引脚说明
12SDAI/O (FT)2线串口的数据输入输出
11SCLO2线串口的时钟输出

4. GPIO相关引脚

引脚号引脚名称类型引脚说明
17GPIO0I/O (FT)通用GPIO0,用于IO口输入或输出
18GPIO1I/O (FT)通用GPIO1,用于IO口输入或输出
10GPIO2I/O通用GPIO2,用于IO口输入或输出
9GPIO3I/O通用GPIO3,用于IO口输入或输出
23GPIO4I/O (FT)通用GPIO4,用于IO口输入或输出
24GPIO5I/O (FT)通用GPIO5,用于IO口输入或输出
25GPIO6I/O (FT)通用GPIO6,用于IO口输入或输出
26GPIO7I/O (FT)通用GPIO7,用于IO口输入或输出

5. UART接口相关引脚

引脚号引脚名称类型引脚说明
19TXD0OUART0的串行数据输出,空闲态为高电平
22RXD0I(FT)UART0的串行数据输入,内置上拉电阻
4TXD1OUART1的串行数据输出,空闲态为高电平
5RXD1IUART1的串行数据输入,内置上拉电阻
17CTS0I(FT)UART0的MODEM输入信号,清除发送,低有效
18RTS0OUART0的MODEM输出信号,请求发送,低有效;上电期间,若RTS0引脚检测到外接下拉电阻则禁用内部EEPROM中配置参数,启用芯片自带默认参数
12CTS1I(FT)UART1的MODEM输入信号,清除发送,低有效
10RTS1OUART1的MODEM输出信号,请求发送,低有效
7DTR0/TNOW0OUART0的MODEM输出信号,数据终端就绪,低有效;UART0的RS485发送和接收控制引脚;上电期间,若DTR0引脚检测到外接下拉电阻则DTR0和DTR1分别切换为TNOW0和TNOW1功能
8DTR1/TNOW1OUART1的MODEM输出信号,数据终端就绪,低有效;UART1的RS485发送和接收控制引脚

6. JTAG接口相关引脚

引脚号引脚名称类型引脚说明
25TDIOJTAG接口的数据输出
24TDOI(FT)JTAG接口的数据输入,内置上拉电阻
23TCKOJTAG接口的时钟输出
26TMSOJTAG接口的模式选择
9TRSTOJTAG接口的复位输出
8SRSTOJTAG接口的系统复位输出

7. SWD接口相关引脚

引脚号引脚名称类型引脚说明
23SWDCLKOSWD接口的时钟引脚
26SWDIOI/O (FT)SWD接口的数据引脚

操作函数

如果想要设计操作芯片的部分,可以参考沁恒提供的应用软件源代码

源代码使用的是C++,如果有应用软件源代码讲解需求的话可B站私信

CH347EVT.ZIP

相关文章

合宙主流通信模组梳理

合宙作为我第一家实习公司,其在行业上是一位佼佼者,我们合宙推出多种产品,满足了几乎所有客户对通信模组的需求。 并且,合宙有一个特色`Luatos`,是一种基于`lua`的开发脚本。它是一种针对嵌入式的脚本运行框架。针对资源较少的嵌入式环境进行了优化,极大提升了运行效率。 >但是对于习惯C的嵌入式开发者,就需要拿出时间去学习、熟悉该脚本 我一直认为`一个公司的销售不了解产品那一定会让去问开...

flushbonading

嵌入式存储器(ROM/RAM/Flash)知识梳理

作为嵌入式开发者,存储器是我们开发过程中最频繁的硬件组件之一。从微小的8位单片机到复杂的嵌入式Linux系统,每个设备都用到了各种类型的存储器。 概念 **存储器主要分为ROM和RAM**,RAM和ROM的最大区别是`RAM在断电以后保存的数据会自动消失,ROM不会消失`。 当然我们可以把所有的存储器按两种方式分类,`易失性`和`功能用途`。 按易失性划分(最核心分类) - **非易失...

flushbonading

一文搞懂DTU、RTU的区别和应用场景

>DTU是作为串口数据与IP数据转换的传输通道 >RTU是集数据采集、现场设备控制、数据传输于一体的单元 >二者核心差异在于是否具备“现场数据采集与设备控制功能” >随着各样的无线网络传输技术的出现,网关应运而生。网关能够适配更多协议标准 我们从一个房间走到另一个房间,必须要经过一扇门。同样,从一个网络向另一个网络发送消息,也必须经过一个“关口”,而`DTU`、`RTU`就是这样的`关口`。...

flushbonading