WCH调试神器——上手必看:4步确认完,调试基本不会翻车

WCH调试神器——上手必看:4步确认完,调试基本不会翻车 字数 2118阅读大约需 11 分钟上一篇简单看了 CH32M007E8U6-BLDC 评估板里面提到程序下载和调试可以配合 WCH-Link 使用。这一篇就把旁边这支 WCH-LinkE 单独拿出来看一下。它看起来只是一个透明壳 USB 小工具但实际承担的事情不少给沁恒 RISC-V 芯片下载和调试切到 ARM 模式后也能用于带 SWD/JTAG 接口的 ARM 芯片同时还带一路串口调试时可以直接拿来做日志输出。WCH-LinkE 正面总览这支实物丝印为WCH-LinkE-R0-1v3。正面能看到 USB-A 接口、主控区域、IAP和ModeS两个按键以及底部JP1排针。第一印象WCH-LinkE 的外壳是透明的里面的 PCB 和丝印基本都能直接看到。这点对开发工具来说挺实用。因为调试器不像普通 U 盘日常经常要看排针方向、确认信号名、判断当前接线有没有插反。透明壳虽然不算高级设计但对工程使用来说信息露出来比包得严严实实更方便。WCH-LinkE 背面总览背面可以看到二维码、QC 标记以及底部排针旁边的功能丝印。调试和供电相关信号被直接标在板上接线时不用反复查资料。从产品线看WCH-Link 这一类模块主要有三种形态WCH-LinkE、WCH-DAPLink 和 WCH-LinkW。实际选型里原厂也推荐优先使用 WCH-LinkE。对于这次 CH32M007 评估板来说WCH-LinkE 的定位很明确它不是评估板的一部分但它是把评估板真正跑起来的那只手。两种模式WCH-LinkE 最需要先搞清楚的是模式。它支持 RISC-V 和 ARM 两类使用场景。RISC-V 模式面向沁恒自家的 RISC-V 内核芯片例如前面那块 CH32M007ARM 模式则面向支持 SWD/JTAG 接口的 ARM 内核芯片可以配合 Keil 或 MounRiver Studio 使用。状态灯也能辅助判断当前模式RISC-V 模式空闲时蓝灯常灭ARM 模式空闲时蓝灯常亮下载和调试过程中蓝灯会闪烁。ModeS 和 IAP 按键区域板上可以看到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 这样的信号命名。SWD/JTAG 和供电排针这一侧排针标出了SWCLK/TCK、SWDIO/TMS、GND、3V3和5V。对 RISC-V 小板调试来说最常用的是 SWDIO/SWCLK/GND 这一组。结合 CH32M007 来看它的调试引脚连接关系也比较明确。CH32M007 对应的 SWDIO 是PD1SWCLK 是PB3并且支持单线SWDIO和两线SWDIO-SWCLK调试接口。这也是前面 BLDC 小板上能看到SWIO调试口的原因。对小尺寸评估板来说单线调试能少占一个引脚布线和排针都更省。不过实际下载不稳定时也别只怀疑软件。Link 线材不建议拉得太长30 cm 以内更稳一些如果下载过程不稳定可以尝试缩短线长或者把下载速度调低。串口功能WCH-LinkE 还有一个容易被忽略的点它带串口。这个功能对评估板调试很有用。因为很多时候我们不只是要把程序烧进去还要看程序跑起来之后的状态比如初始化走到哪一步、电机有没有进入启动流程、保护标志有没有被触发。JP1 排针上的串口和扩展信号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接目标板RXWCH-LinkE 的RX接目标板TX。如果系统里重新插拔了 Link串口调试助手也要重新打开一次。这个细节不大但实际调试时很常见。SDI 打印除了普通TX/RX串口WCH-LinkE 还有一个更适合沁恒芯片生态的功能SDI 虚拟串口打印。这个功能通过 SDI 接口实现芯片打印输出需要修改打印函数并参考 EVT 里的SDI_Printf例程。使用时要在工具里勾选Enable SDI Printf同时打开 WCH-LinkE 的 COM 口。WCH-LinkE 主控区域细节主控、晶振、按键和周边阻容都集中在这一区域。WCH-LinkE 本身并不大但把下载调试和串口相关功能都集成在这块小板上。这个功能的价值在于当目标板引脚很紧张或者不想额外占用普通 UART 引脚时可以通过调试接口把日志带出来。对 CH32M007 这种小封装、小板面积的电机控制板来说这个点尤其有意义。因为 BLDC 调试本来就会占用不少定时器、采样和控制引脚如果还能少拉一组 UART 线整体验证会更轻一点。不过它不是无条件自动生效。要用 SDI 打印工程里的打印函数、工具选项和 COM 口都要配合起来。把它理解成“沁恒生态里的一种调试打印通道”会比简单理解成普通 USB 转串口更准确。供电注意WCH-LinkE 的排针上能看到3V3和5VWCH-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 打印是否已经打开。这几个点确认完再去看代码、波形和电机运行状态调试会顺很多。