沁恒CH32V307EVT-R1开发板使用说明
首先下载官方的资料:CH32V307EVT.ZIP - 南京沁恒微电子股份有限公司
解压后CH32V307EVT\EVT\EXAM里的就是官方的示例代码,CH32V307EVT\EVT\PUB下面的是文档
CH32V307EVT/EVT/PUB/CH32V30x评估板说明书.pdf:是各个开发板的介绍
CH32V307EVT/EVT/PUB/CH32V30xSCH.pdf:是开发板的原理图
里面有很多板子的原理图,CH32V307EVT-R1的看这个原理图就行
WCH-LinkE:
板子上已经自带了CH32V305的芯片,可以当成WCH-LinkE烧录工具,只需要将USB线连接在CH32V305那端,安装IDE后会自动安装驱动,然后就会识别出WCH-LinkE
LinkE的左上角那排双排排针,左边的RX1,TX1,DIO,CLK连接的是CH32V307,而右边的TX0,RX0,DIO0,CLK0连接的是CH32V305。
板子默认上面有4个跳帽,连接RX1-TX0,TX1-RX0,DIO-DIO0,CLK-CLK0,也就是说LinkE连电脑后,就可以对CH32V307编程了,当然,也可以把跳帽去掉,把它当成一个独立的WCH-LinkE来用。
官方开发工具:
下载官方IDE最新版即可:MounRiver Studio
下载完安装,会自当安装驱动,烧录工具等
打开IDE,打开工程,选择刚刚下载的文档里的例子,CH32V307EVT\EVT\EXAM,这里以GPIO为例
然后点编译,下载即可
按Shift+F8可以打开烧录配置界面,修改具体的烧录细节,例如修改Flash+Ram的分配比例,烧录的目标文件等
下载完开始运行,会发现板子上的LED并不会闪烁,没错,看原理图,板子上的两颗用户LED并没有连接到任何GPIO引脚,而是悬空着的,需要我们手动连接下
这个GPIO例子里是切换开关PA0,那只需要用一个线连接PA0跟板子上的LED1,然后就会看到LED闪烁了
Arduino:
官方有在github上维护一个Arduino版本:openwch/arduino_core_ch32: Core library for CH32duino
只需要在Arduino的首选项里添加开发板路径:https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json
然后在开发板里搜WCH,就能看到,下载,网络不好可能会下很久
安装完后,选CH32V30X的开发板
然后写个例子,编译后烧录就可以开始运行了。
Aruduino没有地方可以修改Flash+Ram分配比例的,可以通过WCH-LinkUtility修改,修改完会保存到芯片里,下次就不用在修改了,在Arduino烧录的时候也会自动识别。
注意,同样需要先装WCH-Link驱动,点烧录的时候才能识别到板子
#define LED_BUILTIN PA0 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); Serial.begin(115200); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) Serial.println("ON"); delay(100); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW Serial.println("OFF"); delay(1000); // wait for a second }
Arduino有一点需要注意,现在的版本不是所有引脚都能识别的,测试了下,官方貌似只增加了板子上的Arduino兼容引脚支持(红框部分),可能需要自己去拓展其他引脚
比如PB8就行,PB7就不行
RT-Thread:
没啥好说的,就是这个默认的烧录工具不知道为何总是烧录失败,编译后用WCH-LinkUtility烧录即可。
D:\RT-ThreadStudio\workspace\CH32V307\Debug\rtthread.bin
MicroPython:
CH32V307有4种Flash+Ram分配模式,要运行mpy,至少需要96K RAM
要使用mpy有两种方法
一种是用网友移植的(完成度较低)
另一种是用RT-Thread里带的(需要Flash大于256K,RAM大于96K。调整上面的4中分配模式,要么Flash空间不足无法烧录,要么RAM太低无法正常运行)
这里说下网友移植的,参考:【沁恒微CH32V307评估板试用体验】C语言开发太南了?那就试试micropython@CH32V307吧 - RISC-V MCU技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛!
github地址:r4d10n/micropython-wch-ch32v307: MicroPython for WCH CH32V307
这里推荐直接在github的CodeSpace里编译就行,不用拉到本地,省事点。
1.下载WCH的开发工具:MRS_Toolchain_Linux_x64_V1.92.1.tar.xz
➜ /opt/wch $ wget http://file-oss.mounriver.com/tools/MRS_Toolchain_Linux_x64_V1.92.1.tar.xz ➜ /opt/wch $ tar -xvf MRS_Toolchain_Linux_x64_V1.92.1.tar.xz
2.在Makefile里修改工具的地址为上面解压后的目录:
$ nano /workspaces/micropython-wch-ch32v307/ports/wch/Makefile # 把下面这2个地址修改为上面解压后的地址 TOOLCHAIN_ROOT = /opt/wch/MRS_Toolchain_Linux_x64_V1.92.1/RISC-V_Embedded_GCC/bin/ OPENOCD_ROOT = /opt/wch/MRS_Toolchain_Linux_x64_V1.92.1/OpenOCD/bin/
3.编译:
$ cd ports/wch $ make -j`nproc`
编译完成后,会在build目录下生成一个elf文件
➜ .../micropython-wch-ch32v307/ports/wch/build (master) $ ls CH32V307EVT.elf
这个文件我们还无法直接烧录到开发板,因为开发工具的烧录目标都是.hex或.bin的,这里还需要用riscv-none-embed-objcopy转换一下:
➜ .../micropython-wch-ch32v307/ports/wch/build (master) $ /opt/wch/MRS_Toolchain_Linux_x64_V1.92.1/RISC-V_Embedded_GCC/bin/riscv-n one-embed-objcopy -O ihex CH32V307EVT.elf CH32V307EVT.hex
4.烧录:
将上面生成的CH32V307EVT.hex下载下来,并用WCH-LinkUtility烧录
5.随便打开一个串口工具或mpy开发工具,这里以VSCode里的RT-Thread MicroPython插件为例,写入以下代码并运行:
import time from machine import Pin pa0 = Pin(Pin.board.PA0, Pin.OUT) while True: pa0.on() # 关灯 time.sleep(1) pa0.off() # 开灯 time.sleep(1)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!