搜索
查看: 2041|回复: 2

[分享] 能够替代STM32的国产产品介绍

[复制链接]

该用户从未签到

2586

主题

2613

帖子

0

蝴蝶豆

版主

最后登录
2021-3-16
发表于 2021-1-14 13:51:01 | 显示全部楼层 |阅读模式
今日带来能够完美替代STM32的产品是沁恒微电子的CH32F103以及RISC-V内核的CH32V103两款产品。
CH32F1系列是基于32位Cortex-M3内核设计的通用微控制器。片上集成了时钟安全机制、多级电源管理、 通用DMA控制器等。此系列具有 2 路 USB2.0接口、多通道 TouchKey、 12 位 DAC 转换模块,多通道 12 位 ADC、 多组定时器、 CAN 通讯控制器、 I2C/USART/SPI 等丰富的外设资源。
CH32V103则是其在去年上半年推出的RISC-V架构的32位通用MCU微控制器。CH32V103系列是以RISC-V3A处理器为核心的32位通用微控制器,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。
微信图片_20210114134626.jpg
多说无益,直接看几个21ic家网友关于这两款开发板的测评:
【CH32F103测评报告】+基于WCH沁恒CH32F103开发板点灯编程用户:yljon
试验目标:使用WCH沁恒CH32F103开发板点灯编程试验

一、搞点资料看看,电路图要搞到

从21ic论坛(bbs.21ic.com/iclist-900-1.html)里找些资料看看,强烈推荐下载那个CH32F103评估板说明及参考应用例程:CH32F103EVT.ZIP

微信图片_20210114134631.png

之所以推荐下载这个压缩档,是因为里面有一个非常好的说明文件:

微信图片_20210114134636.png

这个说明文件非常棒,介绍了每个目录的内容,为制作这个说明文件的小哥哥点赞!!!

电路图在这个压缩档有:

微信图片_20210114134640.png

1. LED没有直接连到MCU引脚,需要准备连接导线;
2. 烧录调试接口貌似ST-LINK,准备一个高仿ST-LINK烧录器即可;

微信图片_20210114134644.jpg

二、搭建环境,芯片的PACK安装

上面下载的压缩包里就有PACK,Keil.WCH32F1xx_DFP.1.0.0.pack,直接点击安装即可,打开KEIL,在KEIL里看见如下就意味着PACK搞好了。

先选择一下芯片,如下图:

微信图片_20210114134647.png

由于我的烧录器是ST-LINK,在配置中选择即可:

微信图片_20210114134653.png

选择一下芯片算法,64K滴:

微信图片_20210114134657.png

三、搞定代码,点亮屏幕

上述压缩包里就有现成的例子,点灯LED代码直接拿过用,哎呀,这代码风格就是ST的标准啊,无需额外学习,直接上手,哈哈


void GPIO_Toggle_INIT(void){  GPIO_InitTypeDef  GPIO_InitStructure;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;  GPIO_Init(GPIOA, &GPIO_InitStructure);}int main(void){        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  Delay_Init();        GPIO_Toggle_INIT();while(1)  {                Delay_Ms(500);                PAout(0) ^= (1<<0);        }}
由于我使用PA0点灯,记得将LED连接到PA0即可。

四、学习将视频转GIF,看着方便

将上述代码编译烧录,看看效果,还可以啊,哈哈哈哈
微信图片_20210114134700.gif

五、上传这块开发板点灯源代码:
为了方便和朋友们交流,将源代码上传上来,下载请点击阅读原文。

六、开发板评价
1. WCH沁恒CH32F103开发板总体制作精良,用心了
2. 代码风格和ST一样一样滴,上手也快
3. 外设功能和ST有细微差异,看过手册也都能明白
4. 这块开发板的其它功能,待后续慢慢搞,后面准备搞个U盘自动更新功能,哈哈

【沁恒WCH32F103测评报告】WCH32F103C8T6串口下载方法及串口打印用户:catnull
1.CH32F103FC8T6的芯片准备知识
习惯了STC和Arduino的串口下载,对于arm32-M3指令集的国产芯片CH32F103C8T6,也在摸索着使用串口下载。在开发板的包里,干货满满,但是手头上没有SWD接口的编程器。找了资料,STM32F103是可以用串口下载的。前提是,你要连接好PA9(UART1_TX),以及PA10(UART1_RX)到USB-TLL转接板,比如CH340G的小板。

另外,需要设置BOOT启动的方式。跳线接法:BOOT1 -->GND, BOOT0-->VCC,这样才会从芯片内的出厂固件内存引导启动,这里相当于Arduino的BootLoader的功能。平常的接法是BOOT0-->GND,这是从Flash区运行启动代码,跳过了厂家代码区。

2.硬件准备好后,需要软件。下载WCH_ISP_tool(2.8)下载链接.

安装好后,界面如图。

微信图片_20210114134704.png

注意要选择CH32F1系列标签,Keil MDK编译器生成的Hex文件,需要再用户程序文件框内选择。

注意可以多试几次,比如插拔USB转串口小板。还有当出现“解除写保护”,需要先点击“解除保护”按钮。之后再点击下载。

4.测试UART_Printf串口打印功能

开发板的串口调试功能可以方便的输出一些具体的信息,作为程序运行的重要参考。这里我测试了math.h的正弦函数计算功能。算是发挥一下32位CPU的优势。想起来计算氢弹的理论的501机,每秒不过几十万次加法运算。这个机子已经远远超过了当年的庞然大物。

测试的源码:

main.c


int main(void){        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    Delay_Init();        USART_Printf_Init(115200);                             /* printf using USART1 */printf("SystemClk:%d\r\n",SystemCoreClock);printf("This is printf example\r\n");printf("sin(pi/3)=%f",sin(PI/3));while(1)  {                }}

使用串口助手来接收信息。
微信图片_20210114134708.png

附阅读材料:中国计算机60年国产计算机前史

微信图片_20210114134714.jpg
【RISC-V MCU CH32V103测评】01:LED Demo用户:740071911
第一次体验risc-v的板子,真的是不错,快递也很迅速。而且cortex m系列挺像的,这样上手就很容易了,体验一下点灯操作。

点灯需要注意的是,led小灯没有连接到mcu的引脚上,需要自己用杜邦线连接一下
微信图片_20210114134717.png

代码也很简单,有stm32经验的很容易


/********************************** (C) COPYRIGHT ******************************** File Name          : main.c* Author             : WCH* Version            : V1.0.0* Date               : 2020/04/30* Description        : Main program body.*******************************************************************************/#include "debug.h"void LED_Init(void){    GPIO_InitTypeDef  GPIO_InitStructure;    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;    GPIO_Init(GPIOA, &GPIO_InitStructure);}void GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin){    GPIOx->OUTDR ^= GPIO_Pin;}int main(void){    Delay_Init();    //USART_Printf_Init(115200);    //printf("SystemClk:%d\r\n",SystemCoreClock);    LED_Init();        while(1)        {            Delay_Ms(1000);            GPIO_TogglePin(GPIOA, GPIO_Pin_0);        }}
【RISC-V MCU CH32V103测评】02:USART Demo用户:740071911
注意,WCH-Link的串口只能发送,不能接收!直接在上一个LED Demo基础上添加。
微信图片_20210114134721.png

添加串口1,通过串口接收中断来接收数据,接收到回车键,一帧数据结束。
主程序里处理串口数据(或丢弃或返回)

微信图片_20210114134725.png

用其他usb转ttl工具,看看显示

微信图片_20210114134728.png

串口调试助手显示结果

微信图片_20210114134732.png
你认为这款开发板如何?之后嵌入式ARM还会继续登载国产替代者的更多测评信息。

附:沁恒微电子MCU选型表 微信图片_20210114134736.jpg
回复

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2021-1-14 18:48:25 | 显示全部楼层
    沁恒的东西还是不错的,下个项目争取用上
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    307

    帖子

    2

    蝴蝶豆

    金牌会员

    最后登录
    2021-6-4
    发表于 2021-1-18 17:02:04 | 显示全部楼层
    能把资料完善好,最好了,资料 很头疼
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-25 21:17 , Processed in 1.197519 second(s), 35 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表