CH347作为一款高性能国产USB转接芯片,其强大的多接口转换能力在嵌入式开发领域备受青睐。本文将聚焦CH347的JTAG/SWD调试功能,从硬件特性到软件配置,全方位解析如何利用该芯片实现对STM32等单片机的程序下载与在线调试,助你快速掌握这一高效开发工具。
一、CH347芯片JTAG/SWD功能概述
CH347是南京沁恒微电子推出的高速USB2.0总线转接芯片,通过单一USB接口可扩展出多种外设接口,其中JTAG/SWD调试接口是嵌入式开发者最常用的功能之一。
核心特性解析
- 高速传输:基于USB2.0高速模式(480Mbps),确保调试指令与数据传输的实时性
- 多模式支持:同时支持JTAG(Joint Test Action Group)和SWD(Serial Wire Debug)两种调试协议
- 兼容性强:可适配STM32、ARM Cortex-M系列等主流单片机的调试接口
- 并发能力:JTAG/SWD可与UART接口同时工作,满足调试过程中的串口打印需求
- 宽电压支持:通过CH347F型号可提供3.3V/2.5V/1.8V等多种IO电压,适配不同电压的目标板
典型应用场景
- 单片机程序下载与在线调试
- 固件升级与故障排查
- 嵌入式系统开发与验证
- 教学实验与原型验证
二、硬件准备与驱动安装
在使用CH347的JTAG/SWD功能前,需完成硬件连接与驱动配置,这是确保后续调试工作顺利进行的基础。
硬件连接指南
CH347与目标单片机的连接需遵循特定的引脚定义,以下为标准连接方式:
| CH347引脚 | 功能 | 目标板对应引脚 | 备注 |
|---|---|---|---|
| TCK | 时钟线 | JTAG_SWDCLK | 调试时钟信号 |
| TMS | 模式选择线 | JTAG_SWDIO | 调试数据输入输出 |
| TDI | 数据输入线 | JTAG_TDI | 仅JTAG模式需连接 |
| TDO | 数据输出线 | JTAG_TDO | 仅JTAG模式需连接 |
| GND | 地线 | GND | 必须共地,确保信号参考电平一致 |
| VCC | 电源输出 | - | 可根据目标板需求选择是否连接 |
注意:SWD模式仅需TCK和TMS两根线,相比JTAG模式的四线连接更简洁,在空间有限的情况下推荐使用
驱动安装步骤
CH347的JTAG/SWD功能需要专用驱动支持,安装过程如下:
-
下载驱动程序
- 访问沁恒官网下载页面:https://www.wch.cn/downloads/CH341PAR_EXE.html
- 该驱动包包含JTAG/SWD、SPI、I2C等功能的驱动支持
-
安装驱动
- 双击下载的CH341PAR_EXE.exe文件
- 按照向导完成安装,期间可能需要授权系统驱动安装
-
验证安装成功
- 将CH347设备连接到电脑USB端口
- 打开设备管理器(Win+X → 设备管理器)
- 在"通用串行总线设备"或"端口(COM和LPT)"中应能看到"USB-HID转JTAG/SWD"相关设备,表明驱动安装成功

三、STM32CubeIDE配置详解
STM32CubeIDE是ST官方推出的集成开发环境,结合CH347可实现对STM32系列单片机的完整调试流程,以下是详细配置步骤。
基础配置流程
-
打开工程配置
- 启动STM32CubeIDE并加载你的项目
- 点击菜单栏
Run→Run Configurations... - 在弹出窗口中,右键
STM32 C/C++ Application→New Configuration创建新配置
-
调试器基础设置
- 切换到
调试器标签页 - 勾选"使用外部加载器"(如需要)
- 设置"复位类型",通常选择"软件复位"或"硬件复位"
- 点击
Apply保存初步设置
- 切换到

OpenOCD替换与配置
OpenOCD(Open On-Chip Debugger)是开源的调试工具,需替换为支持CH347的版本才能正常工作:
-
定位原始OpenOCD
- 在调试配置页面点击
Show Command Line - 从命令行中找到原始
openocd.exe的路径,通常位于:C:\ST\STM32CubeIDE_xxxx\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.debug.openocd_xxxx\tools\bin\openocd.exe
- 在调试配置页面点击
-
替换OpenOCD程序
- 下载支持CH347的OpenOCD版本(可从附件链接获取:GitHub仓库)
- 关闭STM32CubeIDE,将下载的
openocd.exe替换原始文件 - 重新启动IDE使替换生效
-
配置脚本文件
- 在OpenOCD的
scripts\interface目录下创建或添加ch347.cfg文件 - 编辑
ch347.cfg添加以下内容(以SWD模式为例):interface ch347 ch347_vid_pid 0x1a86 0x55db transport select swd adapter speed 4000 - 其中
adapter speed可根据需要调整,范围建议1000-10000(kHz)
- 在OpenOCD的

调试脚本修改
为使调试器正确识别CH347,需修改目标芯片的调试脚本:
- 找到项目使用的调试脚本(通常位于
STM32CubeIDE安装目录\plugins\com.st.stm32cube.ide.mcu.debug.openocd_xxxx\tools\scripts\target) - 打开对应芯片的配置文件(如
stm32f1x.cfg) - 删除或注释掉原有的ST-Link相关配置
- 添加CH347接口引用:
source [find interface/ch347.cfg] # 保留原有的target配置 target create $_TARGETNAME cortex_m -chain-position $_TARGETNAME - 保存修改并重启调试配置
四、程序下载与调试操作
完成上述配置后,即可使用CH347进行程序下载与在线调试,体验高效的嵌入式开发流程。
程序下载步骤
- 确保CH347已正确连接到电脑和目标板
- 在STM32CubeIDE中点击
Build按钮编译项目,确保无错误 - 点击
Run按钮(或Ctrl+F11)开始下载程序 - 观察控制台输出,成功时会显示类似以下信息:
Info : CH347 SWD mode enabled Info : clock speed 4000 kHz Info : STM32F1xx.cpu: hardware has 6 breakpoints, 4 watchpoints Info : starting gdb server for STM32F1xx.cpu on 3333 Info : Listening on port 3333 for gdb connections - 程序下载完成后,单片机将自动运行新程序
在线调试功能使用
CH347配合STM32CubeIDE提供完整的调试功能:
-
断点调试
- 在代码行左侧点击设置断点(红色圆点)
- 点击
Debug按钮进入调试模式 - 程序将在断点处暂停,可查看变量值和寄存器状态
-
单步执行
- 使用调试工具栏的单步执行按钮:
- 单步跳过(F6):执行当前行,不进入函数内部
- 单步进入(F5):进入当前行调用的函数
- 单步返回(F7):从当前函数返回上一级
- 使用调试工具栏的单步执行按钮:
-
变量监控
- 在"Variables"窗口可实时查看当前作用域内的变量值
- 右键变量可添加到"Expressions"窗口进行持续监控
- 支持修改变量值进行调试验证
-
寄存器与内存查看
- 在"Registers"窗口可查看CPU寄存器状态
- 通过"Memory"窗口可直接查看和修改内存数据
五、常见问题与解决方案
在使用CH347进行JTAG/SWD调试过程中,可能会遇到各种问题,以下是常见问题及解决方法:
连接类问题
-
设备未识别
- 症状:设备管理器中无CH347相关设备,IDE提示"找不到调试器"
- 解决:
- 检查USB线缆是否完好,尝试更换USB端口
- 重新安装驱动程序,确保驱动版本与系统匹配
- 检查CH347硬件是否正常,可尝试连接另一台电脑验证
-
SWD/JTAG通信失败
- 症状:控制台显示"cannot connect to target"或"SWD/JTAG communication failure"
- 解决:
- 检查接线是否正确,特别是TCK、TMS和GND线
- 确认目标板电源正常供电
- 降低调试时钟速度(在ch347.cfg中减小
adapter speed值) - 尝试复位目标板后重新连接
配置类问题
-
OpenOCD版本不兼容
- 症状:启动调试时提示"openocd.exe已停止工作"或命令行错误
- 解决:
- 确认使用的是支持CH347的OpenOCD版本
- 检查OpenOCD与STM32CubeIDE版本兼容性
- 重新替换openocd.exe并确保文件权限正确
-
配置脚本错误
- 症状:提示"script file not found"或"invalid command"
- 解决:
- 检查ch347.cfg文件路径是否正确
- 验证脚本语法,确保无拼写错误
- 确认脚本中引用的目标芯片配置文件存在
功能类问题
-
无法设置断点
- 症状:设置断点后调试时不生效或提示"无法设置断点"
- 解决:
- 检查目标芯片是否支持硬件断点数量限制
- 尝试使用软件断点(在RAM中执行的代码)
- 确认调试模式下程序已正确加载
-
下载后程序不运行
- 症状:下载成功但程序无反应,复位后正常
- 解决:
- 在调试配置中修改复位类型为"硬件复位"
- 下载完成后手动复位目标板
- 检查程序中是否有不当的初始化代码
六、进阶应用与扩展
CH347的JTAG/SWD功能不仅限于基础调试,还可通过以下方式提升开发效率:
多平台支持
除STM32系列外,CH347还可支持多种处理器架构的调试:
- ARM Cortex-A系列:通过适当的配置脚本支持嵌入式Linux系统调试
- RISC-V芯片:配合最新版OpenOCD可实现对RISC-V架构的调试
- AVR单片机:支持部分AVR芯片的JTAG调试功能
自动化调试
通过脚本可实现自动化下载与测试流程:
- 创建OpenOCD批处理脚本(flash.bat):
openocd.exe -f interface/ch347.cfg -f target/stm32f1x.cfg -c "init; reset halt; program firmware.elf verify reset exit" - 在命令行运行该脚本即可自动完成程序下载
性能优化
为提升调试效率,可进行以下优化:
- 提高调试时钟速度(最高支持10MHz,视线路质量而定)
- 使用短距离、高质量的连接线减少信号干扰
- 为CH347和目标板提供稳定电源,避免电压波动影响调试
七、附件与资源
为方便开发者使用CH347的JTAG/SWD功能,以下提供相关资源链接:
-
驱动程序
- JTAG/SWD/SPI/I2C驱动:CH341PAR_EXE
- 串口驱动(如需同时使用):CH343SER_EXE
-
支持CH347的OpenOCD
-
配置脚本示例
- ch347_jtag.cfg(JTAG模式配置)
- ch347_swd.cfg(SWD模式配置)
- 各系列STM32芯片适配脚本
-
参考文档
- CH347数据手册:沁恒官网
- OpenOCD官方文档:https://openocd.org/documentation/
- STM32调试指南:ST官方应用笔记AN3155
通过本文的介绍,相信你已全面了解CH347的JTAG/SWD功能及应用方法。作为一款高性价比的国产芯片,CH347为嵌入式开发提供了灵活且可靠的调试解决方案,无论是个人开发者还是企业团队,都能从中获得高效的开发体验。在实际使用中,建议结合具体项目需求进行灵活配置,充分发挥其多接口协同工作的优势。
公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top
5649

被折叠的 条评论
为什么被折叠?



