USB-TO-UART-I2C-SPI-JTAG教程

资料

程序及资料

示例程序

软件与驱动

说明

产品参数

参数名称参数
产品类型工业级USB转UART/I2C/SPI/JTAG转换器
供电电压USB口,5V
工作电流55mA~65mA
工作电平3.3V/5V(通过开关切换)
工作温度-40℃~85℃
操作系统Linux、Windows 11 / 10 / 8.1 / 8 / 7
USB 接口接口形式USB-B 型接口
接口保护自恢复保险丝、ESD 静电保护
UART 接口支持通道2路(红色双开关须设置成 M0 模式)
接口形式6PIN 防反接接口
通信速率1200bps ~ 9Mbps(M0 模式)
1200bps ~ 7.5Mbps(M1/M2/M3 模式)
硬件流控CTS和RTS
I2C 接口支持通道1路(红色双开关须设置成 M1/M2 模式)
接口形式12PIN 防反接接口 (前4个引脚为I2C)
SPI 接口支持通道1路(红色双开关须设置成 M1/M2 模式)
接口形式12PIN 防反接接口 (后8个引脚为SPI)
JTAG 接口支持通道1路(红色双开关须设置成 M3 模式)
接口形式12PIN 防反接接口 (后8个引脚为JTAG)

功能说明

  • USB TO UART/I2C/SPI/JTAG 是一款高速 USB 总线转接设备,支持USB 转 2路UART,USB 转 1路UART+1路I2C+1路SPI,USB 转 1路UART+1路JTAG
  • 处于模式0时,产品提供了 2 个高速串口
  • 处于模式1或模式2时,产品提供了1个高速串口、 1 个 2 线 I2C 接口(SCL 线、SDA 线)和 1 个 4 线 SPI 接口(CS 线、SCK线、SDI(MISO) 线、SDO(MOSI) 线)
  • 处于模式3时,产品提供了 1 个 JTAG 接口,支持 4 线或 5 线接口(TMS 线、TCK 线、TDI线、TDO 线和 TRST 线)
  • 处于模式2时为 HID 免驱模式(设备管理器中为人机接口设备),故在设备管理器中的端口看不到新增设备

模式说明

请在调整完模式后再上电


接口说明




Windows下使用

环境搭建

驱动安装

安装提供驱动CH341PAR与CH343SER(驱动程序),安装后可通过设备管理器查看串口对应端口

Windows下端口识别1.png
  • 另一种查看方式:进入设备管理器->点击上方”查看“->”按连接列出设备“-> 选择”基于ACPI x64 的电脑“->”PCI Express 根复合体“->”Intel(R) USB 3.20可扩展主机控制器- 1.20 (Microsoft)“(不同计算机存在不一样的可能)->”USB根集线器(USB 3.0)“->在多个”通用USB集线器“中的”USB Composite Device“可找到CH347相关设备
  • 说明:除模式0外,其余模式存在一个串口端口

Python IDLE 环境搭建

  • 安装Python IDLE(安装网址:Python IDLE),请注意安装时选中添加到 PATH
  • 点击“WIN + R”,输入 cmd 回车,在窗口输入pip install pyserial,确保已经安装了 pyserial 库
pip install pyserial

UART接口使用演示

若想使用2个串口,请将模式切换开关拨至模式0后再连接电脑



SSCOM下,串口自收发通信

以下为演示使用产品的两个串口进行自收发,请将模式切换为模式0

硬件连接

USB TO UART/I2C/SPI/JTAG(UART0)USB TO UART/I2C/SPI/JTAG(UART1)
UART0.TXDUART1.RXD
UART0.RXDUART1.TXD



软件操作

  • 开启两个SSCOM程序(SSCOM),分别选中产品的两个端口号


  • 设置为相同波特率,输入要发送的字符,选择“加时间戳和分包显示”,设定“50ms/次,定时发送”


  • 点击“打开串口”即可接收到数据,现象如下


Python IDLE下,串口自收发通信

以下为演示使用产品的两个串口进行自收发(示例程序

硬件连接

USB TO UART/I2C/SPI/JTAG(UART0)USB TO UART/I2C/SPI/JTAG(UART1)
UART0.TXDUART1.RXD
UART0.RXDUART1.TXD



软件操作

  • 开启Python IDLE,点击上方”File -> Open...“,进入示例程序中“../USB-TO-UART-I2C-SPI-JTAG-Demo/Windows/Code”
  • 进入UART文件夹,选择打开 UART.py 文件(请注意查看是否为对应端口


  • 点击上方“Run”->“Run Module”或直接点击 F5 运行程序


  • 效果如下


I2C接口使用演示

若想在使用 I2C 或 SPI 时使用串口调试助手进行 UART 的收发,请将模式切换成 模式1(模式2 为HID免驱模式,不会显示在端口中)

Python IDLE下,I2C获取测距模块数据

以下为演示使用产品的 I2C 功能获取I2C模式下的TF-Luna的数据(TF-Luna相关资料引脚说明) 的数据(示例程序)

硬件连接

请将模式切换开关拨至模式1或模式2,并在接好连线后再连接电脑

Peripheral(TF-Luna)USB TO UART/I2C/SPI/JTAG
1脚VCC
2脚I2C.SDA
3脚I2C.SCL
4脚GND
5脚GND(最先连接,配置TF-Luna为I2C模式(TF-Luna所需))
6脚悬空



软件操作

  • 开启Python IDLE,点击上方”File -> Open...“,进入示例程序中“../USB-TO-UART-I2C-SPI-JTAG-Demo/Windows/Code”(示例程序)
  • 进入I2C文件夹,选择打开 I2C.py 文件
①如果同时使用多个 USB TO UART/I2C/SPI/JTAG 设备,请在①处进行设备选择(类似设备序号,0、1、2...等等)
②根据实际需要操作的I2C设备地址进行修改

  • 点击上方“Run”->“Run Module”或直接点击 F5 运行程序


  • 效果如下


使用上位机,I2C调试测距模块

以下为演示使用产品的 I2C 功能 打开与关闭 I2C模式下的TF-Luna的数据输出(TF-Luna相关资料)
下载 I2C调试软件(USB TO UART_I2C_SPI_JTAG Demo软件程序),无需安装,直接打开即可使用。

硬件连接

请将模式切换开关拨至模式1或模式2,并在接好连线后再连接电脑

Peripheral(TF-Luna)USB TO UART/I2C/SPI/JTAG
1脚VCC
2脚I2C.SDA
3脚I2C.SCL
4脚GND
5脚GND(最先连接,配置TF-Luna为I2C模式(TF-Luna所需))
6脚悬空



软件操作

  • 开启 USB TO UART_I2C_SPI_JTAG Demo软件进入I2C调试界面,开启设备


  • 点击初始化SPI(因为该软件与SPI共用界面),不用管初始化按键前的那些参数
  • 在I2C输入框中输入需要发送的数据(输入为十六进制数据),点击 写/读
20 5A 05 07 00 66

1.其中 0x20 为TF-Luna的I2C写入地址
2.0x5A 0x05 0x07 0x00 0x66 为关闭TF-Luna数据输出的指令(TF-Luna的红灯将会熄灭) 


  • 输入 20 5A 05 07 01 67 点击 写/读,将打开TF-Luna的数据输出(TF-Luna的红灯重新被点亮)
20 5A 05 07 01 67


  • 现象如下(拍摄效果对比人眼观察更显眼,使用人眼观察请转动TF-Luna,防止角度原因未观察到)


SPI接口使用演示

若想在使用 I2C 或 SPI 时使用串口调试助手进行 UART 的收发,请将模式切换成 模式1(模式2 为HID免驱模式,不会显示在端口中)

Python IDLE下,SPI驱动OLED屏

以下为演示使用产品的 SPI 功能点亮SPI模式下的OLED(OLED相关资料) (示例程序)

环境配置说明

当前示例已搭建好环境,无需进行下方操作

  • DLL文件要放到demo程序所处目录下,示例文件中存放有两个DLL文件(分别对应64位系统与32位系统),请根据系统进行调整

  • 或者可修改程序中的文件路径为DLL文件存放位置



硬件连接

请将模式切换开关拨至模式1或模式2,并在接好连线后再连接电脑

PeripheralUSB TO UART/I2C/SPI/JTAG
RESUART1.RTS(用于控制OLED进行复位(OLED所需))
D/CUART1.CTS(用于指示发送的为命令还是数据(OLED所需))
CSSPI.CS0
CLKSPI.SCK
DINSPI.SDO
GNDSPI.GND
VCCSPI.VCC



软件操作

  • 开启Python IDLE,点击上方”File -> Open...“,进入示例程序中“../USB-TO-UART-I2C-SPI-JTAG-Demo/Windows/Code”(示例程序)
  • 进入SPI文件夹,选择打开 example.py 文件
①如果同时使用多个 USB TO UART/I2C/SPI/JTAG 设备,请在CH347T_Config.py文件中的①处进行设备选择(类似设备序号,0、1、2...等等)

  • 点击上方“Run”->“Run Module”或直接点击 F5 运行程序


  • 效果如下


使用上位机,SPI调试OLED屏

以下为演示使用产品的 SPI 功能点亮SPI模式下的OLED(OLED相关资料) 下载 SPI调试软件(USB TO UART_I2C_SPI_JTAG Demo软件程序),无需安装,直接打开即可使用。

硬件连接

请将模式切换开关拨至模式1或模式2,并在接好连线后再连接电脑

PeripheralUSB TO UART/I2C/SPI/JTAG
RESI2C.VCC(使OLED处于工作(OLED所需))
D/CURAT0.GND(用于指示发送的为命令还是数据(OLED所需))
CSSPI.CS0
CLKSPI.SCK
DINSPI.SDO
GNDSPI.GND
VCCSPI.VCC



软件操作

  • 开启 USB TO UART_I2C_SPI_JTAG Demo软件进入SPI调试界面,开启设备


  • 根据使用环境初始化SPI参数,选择完参数点击初始化SPI(多点击几下初始化SPI,防止初始化失败)


  • 在SPI输入框中输入需要发送的数据,根据所需操作选择SPI读、SPI写或SPI读写


1.下方数据为OLED初始化指令(使用鼠标右键进行数据粘贴,不能使用键盘快捷键)

AE D5 80 A8 3F D3 00 40 8D 14 20 00 A1 C8 DA 12 81 CF D9 F1 DB 40 A4 A6 AF 21 00 7F 22 00 07


  • 初始化效果如下(本来屏幕是不亮的)


  • 将OLED的D/C脚连接到VCC(接到GND为发送命令,接到VCC为发送数据)


  • 发送清屏数据(使用鼠标右键进行数据粘贴,不能使用键盘快捷键),点击一次SPI写将清除一部分
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  • 发送点亮数据(使用鼠标右键进行数据粘贴,不能使用键盘快捷键),点击一次SPI写将点亮一部分
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF



JTAG接口使用演示

OpenOCD下,STM32单片机调试和烧录

以下为演示使用产品的JTAG接口向 STM32F429IGT6开发板 中烧录程序
请注意:保证设备处于3V3状态而非5V(要与需要烧录的设备保持同一电位)

硬件连接

外部JTAG接口USB TO UART/I2C/SPI/JTAG
TDITDI
TDOTDO
TMSTMS
TCLKTCK
TRST(不接)TRST(不接)
GNDGND

前置操作

  • 开启Telnet功能


  • 点击win+R键,输入"cmd"进入命令窗口
  • 进入资料包路径中的“USB-TO-UART-I2C-SPI-JTAG-Demo\Windows\Software\OpenOCD-CH347\bin”目录下(演示为存放于桌面的情况)
cd Desktop\USB-TO-UART-I2C-SPI-JTAG-Demo\Windows\Software\OpenOCD-CH347\bin


  • 连接CH347与STM32F4(openocd.exe -f ch347.cfg -f + 参数 :此处参数为所连接芯片的配置文件,可将文件复制到第2点的bin文件夹下,否则需要加上配置文件的路径)
说明:常见芯片的配置文件存放于“USB-TO-UART-I2C-SPI-JTAG-Demo\Windows\Software\OpenOCD-CH347\scripts\target”中,可将其复制到当前文件夹
openocd.exe -f ch347.cfg -f stm32f4x.cfg


  • 点击“win+R”开启新的命令窗口
  • telnet.exe Localhost 4444(根据上方返回结果)
telnet.exe Localhost 4444


  • 出现以下文字,则为连接成功

  • 使用openocd向STM32F4中烧入程序

程序下载

  • 拷贝hex文件到“USB-TO-UART-I2C-SPI-JTAG-Demo\Windows\Software\OpenOCD-CH347\bin”目录下

说明:示例文件中,bin文件下存放有Test文件夹,文件夹下有两个文件分别对应 Open429I-C (套餐A) 下按键对灯源的顺时针与逆时针控制

  • 在Telnet窗口中输入“halt”回车执行,暂停正在运行的程序
halt
  • 执行“program STM32F429_439xx.hex”进行程序下载(program + 参数 :此处参数为需要下载的hex文件,可以将其复制到前置操作中提到的bin文件夹中或者您需要将参数改为 路径+需要下载的hex文件或者elf文件)
请注意:文件命名时不要有空格
program STM32F429_439xx.hex



程序调试

  • 在程序下载中已经有用到调试相关命令“halt”,暂停正在运行的程序
  • 使用“flash probe 0”进行扫描Flash
  • 执行各种调试指令进行功能调试(例:reset 重启、halt 暂停、resume 恢复等)


移植说明

移植参考

环境配置说明

  • DLL文件要放到demo程序所处目录下,示例文件中存放有两个DLL文件(分别对应64位系统与32位系统),请根据系统进行调整

  • 或者可修改程序中的文件路径为DLL文件存放位置

示例参考

说明: 程序基于 Rapberry Pi 驱动 OLED 的程序进行修改
参考链接:OLED相关资料, 参考的示例为”../OLED_Module_Code /RaspberryPi/python“下的文件(参考的示例程序))

  • 文件”../USB-TO-UART-I2C-SPI-JTAG-Demo/Windows/Code“中的I2C与SPI两个应用示例
    • 应用1:使用本产品的I2C接口点亮OLED(使用设备:0.96inch OLED (A))
    • 应用2:使用本产品的SPI接口点亮OLED(使用设备:0.96inch OLED (A))

文件说明

  • CH347T_Config.py对应参考示例中”../OLED_Module_Code/RaspberryPi/python/lib/waveshare_OLED/config.py“,定义CH347T的设备初始化等操作
  • OLED_Library_Function.py对应参考示例中”../OLED_Module_Code/RaspberryPi/python/lib/waveshare_OLED/OLED_0in96.py“,定义OLED的设备初始化等操作
  • example.py对应参考示例中”../OLED_Module_Code/RaspberryPi/python/lib/waveshare_OLED/OLED_0in96_test.py“,为程序主流程
  • pic文件夹中存放图片与字体文件
更多关于函数说明,详见:应用开发手册

Linux(Raspberry Pi)下使用

环境搭建

驱动安装

下载文件包到树莓派,并解压文件

wget https://www.waveshare.net/w/upload/2/2b/USB-TO-UART-I2C-SPI-JTAG-Demo.zip
unzip USB-TO-UART-I2C-SPI-JTAG-Demo.zip -d ./USB-TO-UART-I2C-SPI-JTAG-Demo

执行示例:


进入驱动文件所处目录

cd USB-TO-UART-I2C-SPI-JTAG-Demo/Raspberry/Driver/driver/

(使用过make指令可跳过这点)安装执行环境

sudo apt-get install raspberrypi-kernel-headers


执行编译并加载驱动

make
sudo insmod ch34x_pis.ko

使驱动程序永久工作

sudo make install


  • 安装 serial 库
pip install pyserial
  • 将模式切换至模式1再连接树莓派,查询设备可看到设备"ch34x_pis*"
ls /dev/


  • 各模式识别到的设备
模式设备号
模式0tty* and tty*((常为ttyACM*)
模式1ch34x_pis* and tty*
模式2hidraw*
模式3ch34x_pis* and tty*

前置操作

  • 查看系统信息
uname -a

如果返回值为 armv61 或 armv71 ,则代表是32位ARM架构(为树莓派)。如果返回值为aarch64 ,则代表是64位ARM架构(为树莓派)。如果返回值是x86_64,则不是树莓派。

当前使用的是树莓派64位的库,如果你的查询结果为 aarch64 ,则无需进行下方的操作

  • 进入下载的文件,“../USB-TO-UART-I2C-SPI-JTAG-Demo/Raspberry/Code/lib/XXX”(XXX:根据上方查询结果选择文件夹)
cd 
cd USB-TO-UART-I2C-SPI-JTAG-Demo/Raspberry/Lib/aarch64


  • 将so为后缀的文件拷贝至程序文件夹中(文件夹中原本存在一个.so文件为aarch64上使用的,用你当前系统适配的.so文件将其替换)

例:将其拷贝到I2C示例中

sudo cp libch347.so ../../Code/I2C/


  • 或拷贝到SPI示例中
sudo cp libch347.so ../../Code/SPI/
  • 使用UART时与使用普通UART设备一致(Raspberry 识别到的设备号一般为 ttyACM*,可通过插拔设备查询新增设备)

1.先不连接 USB TO UART/I2C/SPI/JTAG ,使用指令查询当前设备

ls /dev/tty*

2.连接 树莓派 与 USB TO UART/I2C/SPI/JTAG,再次查询 “ls /dev/tty*”,新增设备即为本产品的设备号

ls /dev/tty*



UART接口使用演示

以下为演示使用产品的两个串口进行自收发,请将模式切换至模式0(为两个 tty* 设备)

Python 环境下,串口自收发通信

硬件连接

USB TO UART/I2C/SPI/JTAG(UART0)USB TO UART/I2C/SPI/JTAG(UART1)
UART0.TXDUART1.RXD
UART0.RXDUART1.TXD



软件操作

  • 查询当前识别到的设备号

1.先不连接 USB TO UART/I2C/SPI/JTAG ,使用指令查询当前设备

ls /dev/tty*

2.连接 树莓派 与 USB TO UART/I2C/SPI/JTAG,再次查询 “ls /dev/tty*”,新增设备即为本产品的设备号

ls /dev/tty*


  • 进入UART示例目录,编辑程序 UART.py
cd USB-TO-UART-I2C-SPI-JTAG-Demo/Raspberry/Code/UART/
vi UART.py

 

  • 光标移动到位置①处,修改为识别到的设备号(移动光标使用'上下左右键' -> 点击'i'然后进行修改 -> 修改完点击'Esc' -> 输入’:wq‘保存退出)

  • 执行程序
sudo python3 UART.py 



I2C接口使用演示

若想在使用 I2C 或 SPI 时使用 UART 进行数据收发,请将模式切换成 模式1或 模式2(模式1为ch34x_pis* 与 tty* 设备,模式2为 hidraw* 设备)

Python 环境下,I2C获取测距模块数据

硬件连接

请将模式切换开关拨至模式1或模式2,并在接好连线后再连接电脑

Peripheral(TF-Luna)USB TO UART/I2C/SPI/JTAG
1脚VCC
2脚I2C.SDA
3脚I2C.SCL
4脚GND
5脚GND(最先连接,配置TF-Luna为I2C模式(TF-Luna所需))
6脚悬空



软件操作

  • 查询当前识别到的设备号(连接 树莓派 与 USB TO UART/I2C/SPI/JTAG,查询设备)

模式1 查询'ch34x_pis*'与'tty*',可在连接本设备与未连接本设备各查一次

ls /dev/ch34x_pis*

 

模式2 查询'hidraw*',可在连接本设备与未连接本设备各查一次

ls /dev/hidraw*


  • 进入I2C示例目录,编辑程序 I2C.py
cd USB-TO-UART-I2C-SPI-JTAG-Demo/Raspberry/Code/I2C/
vi I2C.py 


  • 光标移动到位置①处,修改为识别到的设备号(移动光标使用'上下左右键' -> 点击'i'然后进行修改 -> 修改完点击'Esc' -> 输入’:wq‘保存退出)

  • 执行程序
sudo python3 I2C.py



SPI接口使用演示

若想在使用 I2C 或 SPI 时使用 UART 进行数据收发,请将模式切换成 模式1或 模式2

Python 环境下,SPI驱动OLED屏

硬件连接

请将模式切换开关拨至模式1或模式2,并在接好连线后再连接电脑

PeripheralUSB TO UART/I2C/SPI/JTAG
RESUART1.RTS(用于控制OLED进行复位(OLED所需))
D/CUART1.CTS(用于指示发送的为命令还是数据(OLED所需))
CSSPI.CS0
CLKSPI.SCK
DINSPI.SDO
GNDSPI.GND
VCCSPI.VCC



软件操作

  • 查询当前识别到的设备号(连接 树莓派 与 USB TO UART/I2C/SPI/JTAG,查询设备)

模式1 查询'ch34x_pis*'与'tty*',可在连接本设备与未连接本设备各查一次

ls /dev/ch34x_pis*

 

模式2 查询'hidraw*',可在连接本设备与未连接本设备各查一次

ls /dev/hidraw*


  • 进入SPI示例目录,编辑程序 CH347T_Config.py
cd USB-TO-UART-I2C-SPI-JTAG-Demo/Raspberry/Code/SPI/
vi CH347T_Config.py 


  • 光标移动到位置①处,修改为识别到的设备号(移动光标使用'上下左右键' -> 点击'i'然后进行修改 -> 修改完点击'Esc' -> 输入’:wq‘保存退出)

  • 执行程序
sudo python3 example.py


  • 效果如下