一款高速USB转接多种协议芯片CH347
本文介绍了国产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
转接应用需求
- 480Mbps高速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
有四种工作模式,多接口可以同时使用:
接口模式 | 接口功能 |
---|---|
Mode-0 | 480Mbps高速USB转UART |
Mode-1 | 480Mbps高速USB转UART+SPI+IIC(厂商驱动模式) |
Mode-2 | 480Mbps高速USB转UART+SPI+IIC(系统HID驱动模式) |
Mode-3 | 480Mbps高速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. 标准的公共引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
21 | VCC | P | 电源调节器正电源输入端,需要外接退耦电容 |
0,20 | GND | P | 公共接地端,需要连接USB总线的地线 |
3 | RST# | I | 外部复位输入端,低电平有效,内置上拉电阻 |
28 | UD+ | USB | 直接连到USB总线的D+数据线,不能额外串接电阻 |
27 | UD- | USB | 直接连到USB总线的D-数据线,不能额外串接电阻 |
1 | XI | I | 晶体振荡输入端 |
2 | XO | O | 晶体振荡反相输出端 |
6 | VIO | P | I/O端口电源输入端,需要外接退耦电容 |
2. SPI接口相关引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
13 | SCS0 | O | 4线串口的片选输出0 |
7 | SCS1 | O | 4线串口的片选输出1 |
14 | SCK | O | 4线串口的时钟输出,别名DCK |
15 | MISO | I(FT) | 4线串口的数据输入,别名DIN或SDI,内置上拉电阻 |
16 | MOSI | O | 4线串口的数据输出,别名DOUT或SDO |
3. IIC接口相关引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
12 | SDA | I/O (FT) | 2线串口的数据输入输出 |
11 | SCL | O | 2线串口的时钟输出 |
4. GPIO相关引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
17 | GPIO0 | I/O (FT) | 通用GPIO0,用于IO口输入或输出 |
18 | GPIO1 | I/O (FT) | 通用GPIO1,用于IO口输入或输出 |
10 | GPIO2 | I/O | 通用GPIO2,用于IO口输入或输出 |
9 | GPIO3 | I/O | 通用GPIO3,用于IO口输入或输出 |
23 | GPIO4 | I/O (FT) | 通用GPIO4,用于IO口输入或输出 |
24 | GPIO5 | I/O (FT) | 通用GPIO5,用于IO口输入或输出 |
25 | GPIO6 | I/O (FT) | 通用GPIO6,用于IO口输入或输出 |
26 | GPIO7 | I/O (FT) | 通用GPIO7,用于IO口输入或输出 |
5. UART接口相关引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
19 | TXD0 | O | UART0的串行数据输出,空闲态为高电平 |
22 | RXD0 | I(FT) | UART0的串行数据输入,内置上拉电阻 |
4 | TXD1 | O | UART1的串行数据输出,空闲态为高电平 |
5 | RXD1 | I | UART1的串行数据输入,内置上拉电阻 |
17 | CTS0 | I(FT) | UART0的MODEM输入信号,清除发送,低有效 |
18 | RTS0 | O | UART0的MODEM输出信号,请求发送,低有效;上电期间,若RTS0引脚检测到外接下拉电阻则禁用内部EEPROM中配置参数,启用芯片自带默认参数 |
12 | CTS1 | I(FT) | UART1的MODEM输入信号,清除发送,低有效 |
10 | RTS1 | O | UART1的MODEM输出信号,请求发送,低有效 |
7 | DTR0/TNOW0 | O | UART0的MODEM输出信号,数据终端就绪,低有效;UART0的RS485发送和接收控制引脚;上电期间,若DTR0引脚检测到外接下拉电阻则DTR0和DTR1分别切换为TNOW0和TNOW1功能 |
8 | DTR1/TNOW1 | O | UART1的MODEM输出信号,数据终端就绪,低有效;UART1的RS485发送和接收控制引脚 |
6. JTAG接口相关引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
25 | TDI | O | JTAG接口的数据输出 |
24 | TDO | I(FT) | JTAG接口的数据输入,内置上拉电阻 |
23 | TCK | O | JTAG接口的时钟输出 |
26 | TMS | O | JTAG接口的模式选择 |
9 | TRST | O | JTAG接口的复位输出 |
8 | SRST | O | JTAG接口的系统复位输出 |
7. SWD接口相关引脚
引脚号 | 引脚名称 | 类型 | 引脚说明 |
---|---|---|---|
23 | SWDCLK | O | SWD接口的时钟引脚 |
26 | SWDIO | I/O (FT) | SWD接口的数据引脚 |
操作函数
如果想要设计操作芯片的部分,可以参考沁恒提供的应用软件源代码
源代码使用的是C++,如果有应用软件源代码讲解需求的话可B站私信
相关文章
合宙主流通信模组梳理
合宙作为我第一家实习公司,其在行业上是一位佼佼者,我们合宙推出多种产品,满足了几乎所有客户对通信模组的需求。 并且,合宙有一个特色`Luatos`,是一种基于`lua`的开发脚本。它是一种针对嵌入式的脚本运行框架。针对资源较少的嵌入式环境进行了优化,极大提升了运行效率。 >但是对于习惯C的嵌入式开发者,就需要拿出时间去学习、熟悉该脚本 我一直认为`一个公司的销售不了解产品那一定会让去问开...
嵌入式存储器(ROM/RAM/Flash)知识梳理
作为嵌入式开发者,存储器是我们开发过程中最频繁的硬件组件之一。从微小的8位单片机到复杂的嵌入式Linux系统,每个设备都用到了各种类型的存储器。 概念 **存储器主要分为ROM和RAM**,RAM和ROM的最大区别是`RAM在断电以后保存的数据会自动消失,ROM不会消失`。 当然我们可以把所有的存储器按两种方式分类,`易失性`和`功能用途`。 按易失性划分(最核心分类) - **非易失...
一文搞懂DTU、RTU的区别和应用场景
>DTU是作为串口数据与IP数据转换的传输通道 >RTU是集数据采集、现场设备控制、数据传输于一体的单元 >二者核心差异在于是否具备“现场数据采集与设备控制功能” >随着各样的无线网络传输技术的出现,网关应运而生。网关能够适配更多协议标准 我们从一个房间走到另一个房间,必须要经过一扇门。同样,从一个网络向另一个网络发送消息,也必须经过一个“关口”,而`DTU`、`RTU`就是这样的`关口`。...