WCH调试神器——上手必看:4步确认完,调试基本不会翻车
字数 2118,阅读大约需 11 分钟
上一篇简单看了 CH32M007E8U6-BLDC 评估板,里面提到程序下载和调试可以配合 WCH-Link 使用。
这一篇就把旁边这支 WCH-LinkE 单独拿出来看一下。
它看起来只是一个透明壳 USB 小工具,但实际承担的事情不少:给沁恒 RISC-V 芯片下载和调试,切到 ARM 模式后也能用于带 SWD/JTAG 接口的 ARM 芯片,同时还带一路串口,调试时可以直接拿来做日志输出。
这支实物丝印为
WCH-LinkE-R0-1v3。正面能看到 USB-A 接口、主控区域、IAP和ModeS两个按键,以及底部JP1排针。
第一印象
WCH-LinkE 的外壳是透明的,里面的 PCB 和丝印基本都能直接看到。
这点对开发工具来说挺实用。因为调试器不像普通 U 盘,日常经常要看排针方向、确认信号名、判断当前接线有没有插反。透明壳虽然不算高级设计,但对工程使用来说,信息露出来比包得严严实实更方便。
背面可以看到二维码、QC 标记,以及底部排针旁边的功能丝印。调试和供电相关信号被直接标在板上,接线时不用反复查资料。
从产品线看,WCH-Link 这一类模块主要有三种形态:WCH-LinkE、WCH-DAPLink 和 WCH-LinkW。实际选型里,原厂也推荐优先使用 WCH-LinkE。
对于这次 CH32M007 评估板来说,WCH-LinkE 的定位很明确:它不是评估板的一部分,但它是把评估板真正跑起来的那只手。
两种模式
WCH-LinkE 最需要先搞清楚的是模式。
它支持 RISC-V 和 ARM 两类使用场景。RISC-V 模式面向沁恒自家的 RISC-V 内核芯片,例如前面那块 CH32M007;ARM 模式则面向支持 SWD/JTAG 接口的 ARM 内核芯片,可以配合 Keil 或 MounRiver Studio 使用。
状态灯也能辅助判断当前模式:RISC-V 模式空闲时蓝灯常灭,ARM 模式空闲时蓝灯常亮;下载和调试过程中,蓝灯会闪烁。
板上可以看到
ModeS和IAP两个按键。ModeS用来辅助切换 Link 模式,IAP更偏固件维护和升级场景。
模式切换有几种方式。
在 MounRiver Studio 里,可以通过下载配置窗口查询和切换 Target Mode;在 WCH-LinkUtility 工具里,可以通过Active WCH-Link Mode的 Get/Set 来读取和设置当前模式;对于支持的硬件版本,也可以长按ModeS键后再上电进行切换。
这里有一个小细节:切换完成后,Link 会保持当前模式。也就是说,不是每次插上电脑都要重新选一次。
如果你前一天下午拿它调了 ARM 板,第二天又回来调 CH32M007,就要先看一下当前模式。否则线接得没问题,IDE 也能打开,但下载就是不顺,这种问题很容易把人带偏。
接口丝印
从背面排针看,WCH-LinkE 把几组常用信号都标出来了。
SWCLK/TCK和SWDIO/TMS这两个丝印很关键。它们同时对应 SWD 和 JTAG 场景:在 SWD 里主要看 SWCLK、SWDIO;在 JTAG 里则对应 TCK、TMS 这样的信号命名。
这一侧排针标出了
SWCLK/TCK、SWDIO/TMS、GND、3V3和5V。对 RISC-V 小板调试来说,最常用的是 SWDIO/SWCLK/GND 这一组。
结合 CH32M007 来看,它的调试引脚连接关系也比较明确。CH32M007 对应的 SWDIO 是PD1,SWCLK 是PB3,并且支持单线SWDIO和两线SWDIO-SWCLK调试接口。
这也是前面 BLDC 小板上能看到SWIO调试口的原因。对小尺寸评估板来说,单线调试能少占一个引脚,布线和排针都更省。
不过实际下载不稳定时,也别只怀疑软件。Link 线材不建议拉得太长,30 cm 以内更稳一些;如果下载过程不稳定,可以尝试缩短线长,或者把下载速度调低。
串口功能
WCH-LinkE 还有一个容易被忽略的点:它带串口。
这个功能对评估板调试很有用。因为很多时候我们不只是要把程序烧进去,还要看程序跑起来之后的状态,比如初始化走到哪一步、电机有没有进入启动流程、保护标志有没有被触发。
JP1旁边能看到RST、TDI、TDO、TX、RX丝印。TX和RX可以作为串口收发引脚使用,接目标板时注意交叉连接并共地。
WCH-LinkE 的串口波特率范围比较完整,从 1200、2400、4800、9600 一直到 115200、230400、460800、921600 都有覆盖。普通 printf 日志用 115200 足够,数据量稍大时也可以往上调。
使用时要注意两点。
第一,目标板和 WCH-LinkE 之间要共地。第二,串口线要交叉接:WCH-LinkE 的TX接目标板RX,WCH-LinkE 的RX接目标板TX。
如果系统里重新插拔了 Link,串口调试助手也要重新打开一次。这个细节不大,但实际调试时很常见。
SDI 打印
除了普通TX/RX串口,WCH-LinkE 还有一个更适合沁恒芯片生态的功能:SDI 虚拟串口打印。
这个功能通过 SDI 接口实现芯片打印输出,需要修改打印函数,并参考 EVT 里的SDI_Printf例程。使用时要在工具里勾选Enable SDI Printf,同时打开 WCH-LinkE 的 COM 口。
主控、晶振、按键和周边阻容都集中在这一区域。WCH-LinkE 本身并不大,但把下载调试和串口相关功能都集成在这块小板上。
这个功能的价值在于:当目标板引脚很紧张,或者不想额外占用普通 UART 引脚时,可以通过调试接口把日志带出来。
对 CH32M007 这种小封装、小板面积的电机控制板来说,这个点尤其有意义。因为 BLDC 调试本来就会占用不少定时器、采样和控制引脚,如果还能少拉一组 UART 线,整体验证会更轻一点。
不过它不是无条件自动生效。要用 SDI 打印,工程里的打印函数、工具选项和 COM 口都要配合起来。把它理解成“沁恒生态里的一种调试打印通道”,会比简单理解成普通 USB 转串口更准确。
供电注意
WCH-LinkE 的排针上能看到3V3和5V,WCH-LinkUtility 也可以控制 Link 的 3.3 V/5 V 电源输出。
这对小板验证很方便。比如手边目标板只是一个低功耗 MCU 小系统,临时用 Link 提供电源,可以少接一根外部电源线。
但用在电机板上就要谨慎。
像上一篇那块 CH32M007 BLDC 评估板,真正驱动电机时涉及母线电压和功率级,不能简单指望 WCH-LinkE 的 3.3 V 或 5 V 供完整系统工作。Link 的电源输出更适合给小功耗目标板、逻辑侧或调试场景使用。
如果目标板本身已经外部供电,也要确认是否还需要从 Link 输出电源,避免两个供电路径互相顶着。
工具配合
WCH-LinkE 的配套工具主要是 MounRiver Studio 和 WCH-LinkUtility。
在 RISC-V 场景下,MounRiver Studio 承担工程编译、下载、调试配置;WCH-LinkUtility 更像是一个 Link 管理工具,可以切换模式、查看连接设备、做下载相关配置、控制电源输出、处理读保护或全擦等功能。
在 ARM 场景下,常见的是 Keil 配合 CMSIS-DAP 调试器使用。这里有一个容易踩到的小点:WCH-LinkUtility 工具开启时会占用 Link 设备,可能导致 Keil 无法识别到 Link。
所以如果 Keil 里突然找不到调试器,别急着拔线重装驱动,先看一下 WCH-LinkUtility 有没有开着。
简单总结
对 CH32M007 BLDC 评估板来说,它的价值也很直接。前一篇我们看的是电机控制板本身,这一篇看的则是开发链路的一端。
真正上手时,建议先确认四件事:当前是 RISC-V 还是 ARM 模式,调试线有没有接对,目标板到底由谁供电,串口或 SDI 打印是否已经打开。
这几个点确认完,再去看代码、波形和电机运行状态,调试会顺很多。
