本帖最后由 lmn2005 于 2023-4-25 20:13 编辑
国产单片机近年的发展可谓是如雨后春笋、百花齐放。第一次看到国产的MCU采用RISC-V的,那是在浏览沁恒官方网站(https://www.wch.cn/)的时候,那里真想跟风申请个沁恒开发板来玩一玩。 下面就从CH32V103评估板开始玩起吧。 这款板子的型号是CH32V103C-R1-1V1,相同系列的板子还有CH32V103C-R0、CH32V103R-R0、 CH32V103R-R1。我这是从《CH32V103SCH》文档中看到的。CH32V103C-R0/R1板载的芯片是CH32V103C8T6,R0集成WCH Link,R1没有。1V1应该是版本号吧。 一开始还认为那个USB typeC可以用来下载程序的,看了《CH32V103评估板说明书》,才知道这个接口只是用来USB主从设备接口的,它与USB_A是并联的,都是连接PA11(D-)PA12(D+),USB下载需要接PB6(D-)PB7(D+)。所以想用USB烧录,那不如用串口方式下载,串口方式还可以随时打印调试信息,当然,最方便的下载是用WCH Link下载器了。 编译环境MounRiver Studio V1.84(下载网址http://www.mounriver.com/download)是早就已经安装到电脑中的。21ic论坛中有一篇关于CH32V103C应用开发的专题文章《RISC-V MCU应用开发系列教程之CH32V103 file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif》 https://bbs.21ic.com/iclist-1070-1.html,这个正好随手拈来,于是选择了 硬件I2C读写EEPROM例程试试。把压缩解压后,用MounRiver Studio打开、编译,编译速度还不错的! 主程序很简单: int main(void)
{
u8 data[SIZE];
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
AT24CXX_Init();
printf("Start Write 24Cxx....\r\n");
AT24CXX_Write(100,(u8*)TEXT_Buffer,SIZE); //写入数据
printf("24Cxx Write Sucess!\r\n");
Delay_Ms(500);
printf("Start Read 24Cxx....\r\n");
AT24CXX_Read(100,data,SIZE); //读取数据
printf("The Data Readed Is: \r\n");
printf("%s\r\n", data); //打印输出数据
while(1);
}
WCH Link下载器还没有到手,暂时用串口下载吧。串口下载有点难,流程如下 : 1、BOOT0通过杜邦线接入3.3V电源。 2、打开WCHISPTool 工具,选择相应串口下载方式,选择下载固件,勾选芯片配置,点击下载。 3、BOOT0接地,重新上电,即可运行用户代码。 用串口查看打印信息,怎么只有前两行? 而正常应该打印: 后来通过查看电路原理图,才知道犯的是低级错误:板载24C的SDA 和SCL引脚还没有接入单片机的引脚。通过查看数据手册《CH32V103DS0》,将24C的SDA通过杜邦线接到PB11,24C的SCL接到PB10,结果完全正常。 在测试的过程,有几点想说一下: 1、沁恒单片机的下载机制独特,无论是串口下载还是USB下载,都得通过硬件方法让芯片从BOOT运行。以前玩CH552时,总想从软件方式来让芯片自动进入烧录模式,至今未果。自动下载模式有待以后再次研究。 2、烧录工具WCHISPTool如果能添加串口工具,会使用户调试更加方便些。 3、MounRiver Studio V1.84与Keil MDK使用方法基本相同,用户转型毫无障碍,一来支持中文显示,二来新建工程随即得到工程模板,方便快捷。也像VSCode一样支持函数跳转,阅读代码方便。沁恒的例程中有中文注解,咱不懂英文的中国人觉得蛮好的。 4、CH32V103与CH32F103,可以说是大同小异(具体见应用手册CH32xRM.pdf),代码也大同小异,所以从xx32F移植到CH32V,应该不会有大的难度。
|