Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >国产RISCV MCU 沁恒CH32V103上手体验

国产RISCV MCU 沁恒CH32V103上手体验

作者头像
bigmagic
发布于 2021-09-15 07:28:58
发布于 2021-09-15 07:28:58
3.4K00
代码可运行
举报
文章被收录于专栏:嵌入式iot嵌入式iot
运行总次数:0
代码可运行

国产RISCV MCU 沁恒CH32V103上手体验

  • 1.概述
  • 2.上手体验
  • 3.深度探究
    • 3.1 编程模型
    • 3.2 riscv寄存器分析
    • 3.3 代码尺寸
  • 4.小结

1.概述

最近由于stm32的价格疯涨以及stm32 mcu芯片的缺货,导致很多电子产品的方案慢慢会考虑一些国产替代方案,比如兆易创新的GD系列芯片等等。随着riscv在国内的发展壮大,许多riscv架构的mcu芯片也逐渐的成为可以供选择的方案。那么这款MCU的性能、体验、开发上手难度、实用性等等角度上,究竟体验如何,下面文章将做一个简单的概述,同时利用目前对RISCV的知识层面的理解,去分析这个芯片的使用。

从官网上购得一块评估板,价格55元,这个价格买一块mcu开发板,还带调试器,感觉还是合理的。

发货配置上,有一块开发板,一个调试器,还有两颗芯片。

这看起来还是有一些特点,开发板还有一个产品质保卡,这个也算是有心了。

那么这块开发板一些特性如何,根据芯片手册可以查阅到:

  • 内核

首先内核部分采用riscv架构,指令集为RV32IMAC,这些基本上都是标准的MCU的配置,当然没有支持F(单精度浮点),D(双精度浮点),更不用考虑DSP扩展,或者一些加密指令扩展,或者向量V扩展了。

对于基本的单片机功能,RV32IMAC的指令集架构完全是足够的,可以类似于stm32f103系列。

在主频上,是80MHz系统的主频。

  • 外设存储

作为MCU选型方案中,SRAM和FLASH也是非常重要的评估参数,CH32V103配置了20KB的SRAM以及64KB的Flash,封装引脚为48pin或者64pin。这样对标stm32的产品线系列如下所示。

可以和STM32F103C8或者STM32F103R8做一个横向对比。

另外可以看一下外设接口部分

这些都是比较常用的功能,作为一款MCU来说,没有什么可以评价的。

下面来看一下上手体验。

2.上手体验

用MCU做产品,很重要的是开发调试方便,而目前riscv这一块和arm还是有一些差距的。在用户体验方面,也需要不断的积累经验。但是有了IDE,就不用命令行了,这样开发难度就会少许多。

硬件连接

CH32V103需要使用WCH-Link进行开发连接,不同于传统的FT232H等,WCH-Link采用的是自研的CH549G。应该也是集成了JTAG和串口等协议。

整体的硬件连接如下所示:

连接上调试器采用的是两线JTAG。

下载软件

首先需要下载WCH-Link的驱动,可以从下面的地址下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://www.wch.cn/downloads/WCHISPTool_Setup_exe.html

下载安装完成后,可以在电脑的设备管理器中找到安装的设备。最好安装设备后,重新插拔一下。

下载编程的IDE,这里采用的是MounRiver Studio

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://mounriver.com/

下载完成后,打开可以看到是通过eclipse改进的。

在功能和插件上做了一些定制,对于现有的IDE来说,用eclipse进行改进是最高效也是最简单的方式。如果重新写一个IDE,那么工作量也是非常大的。

下载调试,都可以通过eclipse上的图标进行,整体上和其他的riscv ide的使用上差别不大。

下载demo

作为一款mcu,其功能很重要,开发体验很重要,提供的库函数和示例代码也非常的重要。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://www.wch.cn/downloads/CH32V103EVT_ZIP.html

在官方的例程中,提供了下面一些示例代码。

这些例子基本可以满足工程师开发的需求。从这一点来说,还是可以的。

3.深度探究

前面文章只是介绍了可见的东西,下面来分析一些比较关键的问题。

3.1 编程模型

作为使用芯片的评估者来说,代码写的好不好用,API写的稳不稳定,是否规范,这些都是非常关键的,好的底层代码直接拿来用,非常的放心,只用关注业务逻辑的好坏即可。因为直接操作寄存器也是有一定的门槛的。

就拿常用的UART的API来分析,可以看到如下API列表

采用的是结构体对象定义设备的方式,这种与STM32的编程模型类似,基本上是为了满足习惯了使用STM32的客户群体。

而拿出一个函数分析编程的风格,注释还是比较的清晰,整体的编程模型,和STM32类似。

这一块,外设编程模型算是比较简单,那么中断的编程模型呢?

在riscv定义中,一般有两种中断模型,一种是向量中断,一般常用的MCU都会是这样,一种是非向量中断模型,非向量中断模型只有一个中断入口,在一个入口中判断中断的类型。很显然,CH32V103采用的是向量中断。

向量中断的实时性稍微好一些。

在其中断的判决上,也是采用了一个NVIC的中断控制器,这个中断控制器与Cortex相比有什么区别,不得而知,个人认为应该是一样的,通过编程模型可以看到。

首先设置中断线,再设置NVIC,这一点与STM32很像。

3.2 riscv寄存器分析

虽然硬件调试器采用的是WH-Link,但是还是可以看到调试用的是openocd协议。

此时会列出所有的寄存器的信息。大概看了一下,基本没有自定义寄存器,所有的寄存器都是官方定义好的,而且只实现了m-mode下的寄存器。

这就意味着,不用修改编译器,不用修改openocd等等,直接用标准的即可。

然后再进一步分析编译工具链

上述图片可以得出如下结论:

  • 编译器版本为8.2.0
  • 从xPack获取的编译器的源代码
  • 编译器只使能了abi=ilp32,arch=rv32imac的选项
  • 该编译器是沁恒自己编译出来的,并未直接采用编译好的网上可以下载好的二进制文件

3.3 代码尺寸

在这种小容量的MCU上,代码尺寸也是需要关注的问题,在这个方面,一般是通过编译器库函数做优化。先看一个EXTI0的例子,编译出来后,效果如下:

文本段7.2KB,hex的大小为2.5K,所以整体上来看,占用的尺寸还算可以,但是在库函数的优化上,也应该没有做特殊的优化处理。

4.小结

以上就是沁恒CH32V103芯片相关的信息,本次探究基本上是简单的上手体验,加入一些自己的思考。在目前的情况下来看,沁恒的这个芯片总体上来说,从开发体验上,资料提供的完整度上来看,我都还是比较认可,抛开国产芯片的角度上来看,新的riscv架构做的芯片,在生态建设上确实还需要加强。如果后期生态完善,那将是更加的有利的事情。总体上手并不复杂,做产品方案评估感觉也比较简单,后续还要再看看性能方面的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式IoT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
沁恒RISC-V开发板CH32V103-EVT评测
从2014年起,中国的互联网圈把10月24日定为程序员节,到今年2021年已经是第1000个程序员节了。祝各位开发者节日快乐!
单片机点灯小能手
2021/10/26
2.6K0
沁恒RISC-V开发板CH32V103-EVT评测
芯昇科技CM32M433R-START开箱评测
中国移动芯昇科技发布CM32M4xxR,该芯片基于RISC-V内核的MCU,性能主要对标Cortex-M4。如今RISC-V架构的通用MCU在市场上也并不少见,但是该芯片也有其自己的特点,在探索应用领域方面也有自己独特的设计。
bigmagic
2022/04/15
1K0
芯昇科技CM32M433R-START开箱评测
CH32V307V-EVT-R1 简单上手入门
运气不错,前几天在电子发烧友社区参加每日打卡活动搞到了第一块 RISC-V 的板子。虽然我不是特别熟悉 RISC-V 的相关知识,但既然板子到手了,总不能放着吃灰;所以,接下来会有一段时间,我会更新 RISC-V 的相关内容,以此促进自己来学习 RISC-V 的相关内容。
繁依Fanyi
2023/05/07
4250
CH32V307V-EVT-R1 简单上手入门
002-CH32V307(WCH单片机)学习开发-CH32V307VCT6开发板硬件使用说明,下载和运行第一个程序
实物图(以实物为准) 开发板原理图: https://mnifdv.cn/resource/cnblogs/LearnCH32V307VCT6/ZLIOTE.pdf 开发板购置链接: ht
杨奉武
2022/04/29
1.8K0
002-CH32V307(WCH单片机)学习开发-CH32V307VCT6开发板硬件使用说明,下载和运行第一个程序
CH32V307V-EVT-R1 简单上手入门
运气不错,前几天在电子发烧友社区参加每日打卡活动搞到了第一块 RISC-V 的板子。虽然我不是特别熟悉 RISC-V 的相关知识,但既然板子到手了,总不能放着吃灰;所以,接下来会有一段时间,我会更新 RISC-V 的相关内容,以此促进自己来学习 RISC-V 的相关内容。
繁依Fanyi
2023/05/02
5770
从riscv底层原理分析gd32vf103的中断行为
对于向量中断,其中断发生后,pc指针会根据中断的类型跳转到基地址+中断号*4的地址处去执行中断处理程序,做过stm32的,应该比较清楚向量中断的大概样子。当然,riscv也是支持这种向量中断,这样每个地址处会安排一个特定的中断处理函数,当中断发生后,跳转到特定的函数去执行即可。
bigmagic
2021/04/16
2.5K0
001-CH32V307(WCH单片机)学习开发-CH32V307VCT6核心板硬件使用说明,下载和运行第一个程序
核心板实物图(以实物为准) CH32V307VCT6概述 1,CH32V307VCT6的引脚原理图和PCB完全兼容STM32F103VCT6 2,MCU主频为144MHz; Flash 256KB; RAM 64KB 3,CH32程序基本下载方式和STM32完全一样; 串口下载使用PA9,PA10; SWD下载使用PA13,PA14(CH32使用的下载器为WCH-Link); 4,CH32的两路USB接口也支持下载(PA11,PA12; PB6,PB7) 5,CH32V307VCT6内部集成了以太网
杨奉武
2022/04/29
5.5K0
001-CH32V307(WCH单片机)学习开发-CH32V307VCT6核心板硬件使用说明,下载和运行第一个程序
对于GD32VF103一些想法
GD32VF103是兆易创新推出的基于Nuclei Bumblebee处理器的32位控制器。
bigmagic
2021/03/27
1.1K0
瞎眼选了国产精品,CH32爱你不容易啊!
因为疫情我一直被关在我姐家,书看多了,难免想写点东西,但是没啥开发板,就跑去拼多多买了个片子回来。结果卖家没焊接引脚,就一直没有用,现在因为修眼镜买了个电烙铁回来,那必须要给电烙铁开个光啊。
云深无际
2022/04/15
1.8K0
瞎眼选了国产精品,CH32爱你不容易啊!
【技术干货】GD32VF103C-START 入门
近期从创易栈中很荣幸获得了一块GD32VF103C-START 开发板,是基于RISC-V内核的32位通用微控制器,从这个网站我初步了解了这个芯片的特性,大家可以上网看看,内核是使用芯来科技Bumblebee内核(RV32IMAC),指令集是开源的,不用许可,这个和arm是有区别的,因此,我认为可以降低成本了,毕竟没有了arm的许可费用。
用户4645519
2021/12/30
1.1K0
【技术干货】GD32VF103C-START 入门
开发者成长激励计划-基于TencentOS Tiny的芒果分拣机Demo
此作品使基于CH32V_EVB RISC-V开发套件以及TencentOS Tiny进行的开发。相对于传统手动分拣芒果,芒果分拣机可以快速高效的将成熟芒果和未成熟芒果进行分类,极大的减少了人力成本,农户或企业可以将资金重心转移至包装或销售上,从而提高利润。
JGMMS
2022/08/01
6780
基于RISC-V MCU CH32V307水感控制系统
很高兴能参与这次的“RISC-V MCU创新应用大赛”,这次我带来的作品是基于RISC-V MCU CH32V307 的水感控制系统。大的方面一直以来城市因为存在内涝导致一下雨就很多地方出现水漫金山的情况,有些地方因为比较偏远所以不易发现带来潜在的危险;小的方面有些家庭有储水池(水箱),当缺水或满水时没即时发现和提醒。因此我就通过RISC-V MCU CH32V307结合水感传感器,做了一个水感应控制系统的初代产品;算抛砖引玉也体验出RISC-V MCU CH32V307的强大功能和易操作性更体现其能适应不同的Iot物联网应用场景。
谭广健
2022/12/17
9.6K0
基于RISC-V MCU CH32V307水感控制系统
基于CH32V103的多功能推杆设计
“创意源于生活,工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关,结构中采用阻尼器/滚珠轴承等器件,使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一个功能,于是内部采用CH32V103、霍尔编码器,振动马达驱动等外设构建了一个具有开关/线性控制,力感反馈推杆,通过自定义USB TYPE-C接口和HID协议,实现了对电脑的开关机、音量控制、鼠标/键盘/摇杆模拟、甚至可以针对不同应用实现快捷键等功能。
芯动大师
2024/04/26
1260
基于CH32V103的多功能推杆设计
STM32F103系列开发_点亮LED灯
STM32目前市面上使用比较广泛,资料多,接下来就介绍如何快速入门STM32,进行基础开发。
DS小龙哥
2024/05/24
2640
STM32F103系列开发_点亮LED灯
STM32F103笔记(一)[通俗易懂]
stm32F1系列是来自ARM公司具有突破性的以ARM Cortex-M3为内核的32为微处理器,内核为ARM公司为要求高性能,低功耗,低成本,性价比高的嵌入式应用专门设计的Cortex-M内核。
全栈程序员站长
2022/11/07
2.8K0
STM32F103笔记(一)[通俗易懂]
【STM32】硬件资源及芯片介绍
以精英板STM32F103为例。STM32是Cortex M3架构,拥有更强劲的性能、更高的代码密度、位带操作、可嵌套中断、低成 本、低功耗等众多优势。
DevFrank
2024/07/24
2310
STM32F103C8T6单片机简介「建议收藏」
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:
全栈程序员站长
2022/08/10
11.3K0
STM32F103C8T6单片机简介「建议收藏」
如何开发嵌入式中断控制系统?
在嵌入式开发过程中,中断处理是一个不可或缺的环节。本篇博文将以STM32微控制器为核心案例,深入解析中断处理在MCU开发中的关键步骤和策略。主要有以下几个关键点:
不脱发的程序猿
2023/12/18
4160
如何开发嵌入式中断控制系统?
STM32 学习笔记之中断应用概览--以f103为例
  F103 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。其中系统异常有8 个(如果把Reset 和HardFault 也算上的话就是10 个),外部中断有60个。除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。有关具体的系统异常和外部中断可在标准库文件stm32f10x.h 这个头文件查询到,在IRQn_Type 这个结构体里面包含了F103 系列全部的异常声明。
用户6754675
2019/12/24
1.1K0
STM32Cube-05 | 使用EXIT检测按键
因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为KEY1和KEY2,接下来是最重要的一步:
Mculover666
2020/07/16
9800
STM32Cube-05 | 使用EXIT检测按键
相关推荐
沁恒RISC-V开发板CH32V103-EVT评测
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验