简介

CH32F103C8T6 和 STM32F103C8T6 基本上是完全兼容的国产版,CH32F103C8T6 开发板淘宝也是一样,就几块钱,于是我买了一块做 Arduino 开发板用。
相关资料不多而且比较古老,我搞了三四天才能用 Arduino IDE 下载。
CH32F103C8T6 规格书:https://www.wch.cn/products/CH32F103.html

其实 ST 原版相关资源更多,开源的支持也更好,毕竟国外用的多。如果没有特别需求还是建议买 ST 开发板。
CH32F103

下载 Bootloader

WCH 即沁恒提供了下载工具:https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html,直接下载安装。

CH32F103C8T6 Bootloader 下载地址:https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/binaries

这里有两个文件夹:bootloader_only_binariesbinaries,一定要下载 binaries 文件夹里的 generic_boot20_pc13.bin 文件(pc13 是指开发板上 LED 灯的控制 IO)。

bootloader

先把开发板上的跳线帽改成 10,即 boot0 连接 1,boot1 连接 0.USB线连接板背面的接口。
打开 WCHISPTool,先选择芯片系列,搜索 USB 设备,添加 Bootloader 文件,然后解除保护,最后点下载。
WCHISP
下载完成后,将跳线帽恢复到 00 位置,连接开发板上面的 USB 接口。

Arduino IDE 下载和驱动安装

打开 Arduino IDE 下载页:https://www.arduino.cc/en/software/,拉到下方下载 Arduino IDE 1.8.19。最好是安装版,绿色版有可能会出问题,并且 1.x 和 2.x 并不冲突。

再下载开发板硬件相关文件:https://github.com/rogerclarkmelbourne/Arduino_STM32,解压后复制到 Arduino IDE 安装目录下 C:\Program Files (x86)\Arduino\hardware\Arduino_STM32
boards

打开 drivers\win 文件夹,双击 install_drivers.bat 运行,不用管理员身份运行。
drivers

这个库介绍写的很清楚,所以我开始用 Arduino IDE 2.3.6 搞了一天是完全错误的:

Arduino STM32. Hardware files to support STM32 boards, on Arduino IDE 1.8.x including LeafLabs Maple and other generic STM32F103 boards

Arduino IDE 下载

开发板连接 USB 后:
MapleSerial

Arduino IDE 打开开发板会有 STM32F1 Boards,打开一个 Blink 示例,将 IO 改成 pc13,编译下载测试一下:
IDE

总结

WCH 还有一些 RISC-V 内核的 MCU,价格好像贵了一些,也有开源的项目支持:https://github.com/openwch/arduino_core_ch32

  • Arduino IDE 只支持 1.8.x,别用 2.x。
  • 我用 VS Code + PlatformIO 也没能搞定下载固件,platformio.ini 配置如下:

    [env:bluepill_f103c8]
    platform = ststm32
    board = bluepill_f103c8
    framework = arduino
    upload_protocol = dfu
  • 设备驱动 Maple drivers 安装会有一些建议使用 zadig:https://github.com/pbatard/libwdi,但我测试不行,会出现名叫 Maple 003 的通用串行设备,并不能被 Arduino IDE 识别。

  • CH32F103C8T6 开发板资料也不全,淘宝卖家提供的都是牛头不对马嘴,原厂芯片规格书也写的不清不楚,比如 boot0 和 boot1 到底各表示什么,我只能如下猜测:
    boot
  • 有说可以使用串口 1 下载程序的,boot 跳线选择 10,我测试是不成功的,无法下载。boot 改成 00 也不行,不知道是不是只有 STM32 才可以。
  • 开发板连个起码的尺寸图也没有,难道只插面包板用?我在国外网站搜到一个:
    size

参考文章:https://www.electroniclinic.com/stm32-bootloader-stm32f103c-programming-using-usb-cable/