作者用 ESP32-S3 替代专用 WCH-Link,通过 SWIO 协议为 CH32V003 实现完整烧录流程,并开源了全部代码。
项目链路为 PC → ESP32-S3 → SWIO → CH32V003,由 ESP32-S3 直接处理时序敏感的 SWIO 通信与 DMI 调试接口,实现了目标检测、内存访问、flash 解锁、页擦除、编程、回读校验及复位运行。硬件方面使用 ESP32-S3 N8R2、CH32V003A4M6(SOP-16)、4.7kΩ–10kΩ SWIO 上拉电阻及 CP6208 电机驱动。
早期版本 SWIO 同步失败(DMCFGR = 0xFFFFFFFF),作者排查启动时序、接收行为与物理接线后,成功输出 SWIO sync: OK、DMI communication: OK、CH32 ID = 0x0713BB91。flash 操作中观察到 FLASH_CTLR 解锁前后从 0x00008080 变为 0x00000200,随后用确定性数据测试编程与回读,零失配。
首个实际应用为驱动 PC4 的裸机固件,配合 CP6208 与直流电机。首次上电失败,排查发现固件已正确烧录且 PC4 输出约 3.3V,问题出在 CP6208 第二输入为 HIGH 而非 LOW,接地后电机正常运转。作者总结:烧录链路完全正确时,最终硬件应用仍可能出错。
主机端提供 Python 命令行工具,示例:python tools/flash_tool.py --port COM10 --bin firmware/ch32_blink/blink.bin --addr 0x08000000 --reset。真机最终测试全部通过:目标检测、编程、校验、复位运行均 OK。
代码仓库包含 ESP32-S3 固件、CH32V003 示例、Python 烧录器、硬件与 SWIO/DMI 文档。作者下一步计划探索该方案向其他 WCH RISC-V 器件的扩展性。
GitHub
#开发者 #工具 #ESP32S3 #CH32V003 #SWIO #RISCV #嵌入式 #烧录器
@DevToolboxHub