自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 20脚的RSIC-V MCU,竟然可以基于FOC开发PMSM电机

通常小体积封装的MCU有着成本较低的优势,被广泛用于BLDC电机的六步方波控制中,此类应用对MCU的各类资源要求较低,小体积封装的MCU往往能够胜任。而基于FOC的PMSM电机开发中,对MCU的运算能力和ADC速度等各类资源有着较高的要求,大部分现有的小体积封装MCU无法满足此类需求。

2022-09-15 14:20:55 584 1

原创 RISC-V MCU 应用教程之RCC(1)

CH32V307提供了3钟复位形式:电源复位系统复位后备区域复位1. 电源复位产生电源复位的条件为:上电/掉电复位(POR/PDR复位)从待机模式下唤醒电源复位发生时,将复位除了备份区域的所有寄存器。PC指针固定到0x00000000。:::tip此时的后备寄存器需由VBAT供电,如果同VDD供电,后备区域寄存器将同步复位。:::...

2022-07-13 09:33:49 395

原创 RISC-V MCU 应用教程之RTC自动唤醒

以RISC-V MCU CH32V307为例。 RTC,Real Time Clock,实时时钟,可以在不需要外部中断的情况下唤醒低功耗模式下的MCU。RTC提供的定时闹钟事件,可以周期性的唤醒MCU。1. RTC唤醒配置RTC唤醒配置步骤如下:配置RTC时钟配置外部中断线17为上升沿触发开启RTC闹钟事件中断...

2022-07-12 09:29:47 1150

原创 RISC-V MCU应用教程之低功耗待机模式

以RISC-V MCU CH32V307为例。1. 待机模式简介待机模式(Standby),芯片的运行功耗最低。该模式下,内核处于深睡眠模式(Sleep Deep), 电压调节器进入停机模式。待机模式唤醒后,MCU将执行电源复位。...

2022-07-08 14:05:22 489

原创 低功耗之停止模式

停止模式是在内核深睡眠模式(SLEEPDEEP)基础上结合了外设的时钟控制机制,并可以让电压调节器运行在低功耗模式。此模式下,高频时钟(HSE/HSI/PLL)被关闭,SRAM和寄存器内容保持,IO引脚状态保持。该模式唤醒后,系统可继续运行,特别注意的是,此时默认系统时钟为内部 8MHz HSI,如有需要,可调用 SystemInit() 重新初始化时钟。...

2022-07-01 15:42:52 441

原创 低功耗之睡眠模式

以RISC-V MCU CH32V307为例1. 睡眠模式简介睡眠模式下,所有的IO引脚都保持它们在运行模式时的状态。所有的外设时钟都正常工作。进入睡眠前,尽量关闭无用的外设时钟,以降低功耗。该模式唤醒所需的时间最短,几乎不耗时间,约 2~3 us。...

2022-06-30 17:39:21 213

原创 后备数据寄存器

CH32V307后备寄存器(BKP)提供了10个16位的通用数据寄存器(BKP_DATARx),可以用来存储20个字节的用户数据。

2022-06-22 15:57:44 362

原创 RISC-V MCU 电源系统概述

为了提高AD等模拟部分的精度,可以使用独立的电源为VDDA和VSSA供电。CH32V307VCT6 LQFP100封装的VREF+和VREF-引脚引出,用户可连接一个独立的参考电压用于ADC测量,参考电压范围:2.4V ≤ VREF+≤ VDDA。其他封装的CH32V307的VREF+和VREF-引脚未引出,在芯片内部与VDDA和VSSA相连。......

2022-06-17 16:55:04 565

原创 RISC-V MCU 应用教程之ADC(一)

ADC,Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。ADC是MCU的重要外设,主要用于传感器的数据采集,常见的ADC类型一般为逐次逼近型。以沁恒RISC-V MCU CH32V307VCT6为例,内嵌2个12位的ADC模块,共有多达16和外部通道和2个内部通道。...

2022-06-15 14:19:14 929

原创 RISC-V MCU启动文件分析

启动文件由汇编语言编写,是MCU上电复位后第一个执行的程序。主要执行以下内容:初始化gp(globalpointer)全局指针寄存器、sp(stackpointer)栈指针寄存器将data数据从flash中加载至RAM中清空bss段数据初始化中断向量表配置系统时钟从Machine模式切换到User模式,进入main函数运行CH32V103启动文件如下:...

2022-06-14 09:18:21 1063

原创 RISC-V MCU将常量定义到指定的Flash地址

Keil MDK开发ARM 内核的MCU时,将常量定义到指定的Flash地址中,使用_attribute_( at(绝对地址) )即可,如:

2022-06-09 09:59:38 990 1

原创 指定变量复位时保持(除掉电复位)

RISC-V MCU开发过程中,需要指定一些变量在MCU复位时能够保持当前变量的值,以CH32V307为例,具体方法如下:不更改ld文件,将变量添加((section(".noinit")))属性描述

2022-06-08 09:26:27 333

原创 RISC-V MCU 外部晶振引脚配置为普通io

以沁恒RISC-V MCU CH32V203C8T6为例,当使用内部8MHz高频晶振时,其外接高频晶振的引脚可以配置为普通io。

2022-06-06 17:08:56 1411

原创 RISC-V MCU 调试接口配置为普通io

以沁恒RISC-V MCU CH32V203C8T6为例,其配备了两线仿真调试接口, 用于在线下载和仿真调试。

2022-06-01 17:02:05 1082

原创 最易变的关键词 - volatile

1、volatile关键字volatile 是易变的、不稳定的意思。和const一样是一种类型修饰符,volatile关键字修饰的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。以前只是听过这个关键词,知道它的存在,但从来没用过。用此文记录下在开发RISC-V MCU过程中,未用volatile修饰标志位变量,编译器进行优化,导致程序运行异常。2、Demo开发中,常见的需求,主循环中根据中断中修改的标志位,运行不同的功能,#include "debug.h"

2022-05-27 11:41:26 136

原创 RISC-V MCU低功耗场景的应用分析

CH32V203系列是基于32位RISC-V内核设计的工业级增强型低功耗通用微控制器,高性能,最高支持144MHz系统主频,低功耗,运行功耗低至45uA/MHz。本文已CH32V203为例,聊聊MCU的低功耗及应用场景。一、低功耗产品低功耗产品一般可配置为两类运行状态:1.平时低功耗,使用时唤醒;2.平常断电,使用时上电。处在第2类运行状态的产品,其实现低功耗的原理是减小电源供电时间,这类产品主控MCU唤醒的方法可由外挂低功耗协处理单元(LPCU)控制的供电电路来实现。高性能MCU产品通常功..

2022-05-26 16:46:31 1027

原创 高速USB2.0(480Mbps)JTAG调试器单芯片方案

基于RISC-V MCUCH32V305/CH32V307系列MCU实现的USB2.0(480Mbps)转JTAG接口方案,可用于调试或下载CPU、DSP、FPGA和CPLD等器件。方案构成上只需一颗CH32V305/307芯片,无需CPLD和USB PHY辅助芯片。方案结构框图如下所示:与市面上的下载调试器进行下载对比:本方案为开源项目,提供源码及驱动,详细资料参考:GitHub - openwch/usb-jtag-spi: Single-chip solutio..

2022-05-24 16:30:29 903

原创 RISC-V MCU ld链接脚本说明

1、什么是ld链接脚本?通常,程序编译的最后一步就是链接,此过程根据“*.ld”链接文件将多个目标文件(.o)和库文件(.a)输入文件链接成一个可执行输出文件(.elf)。涉及到对空间和地址的分配以及符号解析与重定位。而ld链接脚本控制这整个链接过程,主要用于规定各输入文件中的程序、数据等内容段在输出文件中的空间和地址如何分配。通俗的讲,链接脚本用于描述输入文件中的段,将其映射到输出文件中,并指定输出文件中的内存分配。2、ld链接脚本的主要内容2.1 链接配置(可选)常见的配置有入口

2022-05-20 16:56:16 1753

原创 RISC-V MCU gp全局指针说明

gp,globalpointer,全局指针寄存器,RISC-V 32个寄存器之一,为了优化±2KB内全局变量的访问。gp寄存器在启动代码中加载为__global_pointer$的地址,并且之后不能被改变。linker时使用__global_pointer$来比较全局变量的地址,如果在范围内,就替换掉lui或puipc指令的 absolute/pc-relative寻址,变为gp-relative寻址,使得代码效率更高。该过程被称为linker relaxation(链接器松弛),也可以使用-Wl.

2022-05-20 16:10:53 1031

原创 RISC-V MCU应用教程之DMA(存储器到外设)

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。关于DMA,具有三种数据传输方式:存储器到存储器、存储器到外设、外设到存储器。前面已讲解过关于存储器到存储器数据传输方式,本章将讲解存储器到外设的传输方式以及在下一章将会讲解外设

2022-04-24 16:43:28 611

原创 基于RISC-V MCU CH32V307单片机的触摸与显示方案

CH32V307系列MCU内置全速USB、Ethernet和多达8个UART/USART串口等外设模块,在工业控制及民用消费领域有非常大的应用前景。CH32V307内置FSMC功能,使用FSMC可快速操作基于8080协议端口的TFT-LCD显示屏。基于显示屏的可视化产品丰富了人机交互的方式,可以方便地了解设备的运行状况、舒适安全地操纵设备。LVGL图形库是一种显示库,其官网提供了详细的介绍以及丰富的移植例程。在网络上有许多基于ARM内核单片机产品的LVGL移植教程,读者可参照相关教程深入学习。CH3

2022-04-22 09:48:17 1789

原创 RISC-V MCU应用方案之Little VGL(LVGL)移植(二)

一、下载需要的移植库及开发环境1.下载LVGL主代码+Demo代码,防止GitHub地址更换,请直接访问LVGL官网地址:LVGL官网直通GitHub。我们需要下载LVGL移植库与demo例程两个文件。点击GitHub小黑猫图标来到右上方页面,点击master选择release/v7版本。点击左上方蓝色lvgl,进入到左下方页面,下拉找到lv_demos,进入下载release/v7版本。(暂没有试过其他版本,读者可自行尝试,两个文件版本号要保持一致)2.LVGL为了保持移植的通用性,仅通过一个快

2022-04-14 15:42:55 727

原创 RISC-V MCU应用教程之读写内部Flash

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程将通过程序代码进行内部FLASH读写操作。1、CH32V103内部FLASH简介及相关函数介绍CH32V103芯片含有一个内部FLASH,其存储数据在掉电后不

2022-04-13 14:47:08 772

转载 RISC-V MCU应用方案之Little VGL(LVGL)移植(一)

一、Little VGL(LVGL)图形库简介1.LVGL是一个开源图形库,提供完善的GUI开发组件,具有易于使用的图形元素,绚丽的界面和占用内存低等特点。LVGL官网2.几乎所有的MCU都能够支持LVGL的运行,显然您的MCU至少要满足以下参数:1.16, 32 或 64 位微控制器或处理器 Clock: >=16MHz主频 Flash/ROM:至少> 64 kB (> 180 kB 可运行大部分显示库组件) Stack: 至少> 2kB (推荐> 8 kB

2022-04-08 17:07:00 430

原创 RISC-V MCU应用教程之触摸按键

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程使用CH32V103开发板的触摸按键TK1进行触摸按键检测,并将检测信息通过串口调试助手打印显示。1、TKEY简介及相关函数介绍1、TKEY_V 开启TK

2022-04-02 16:52:48 498

原创 RISC-V MCU应用教程之PWR停止模式

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程主要讲述如何控制CH32V103进入停止模式以及对其进行唤醒操作。1、PWR-停止模式简介及相关函数介绍停止模式是在内核的深睡眠模式(SLEEPDEEP)基础

2022-04-02 14:01:30 380

原创 RISC-V MCU应用教程之PWR待机模式

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程主要讲述如何控制CH32V103进入待机模式以及对其进行唤醒操作。1、PWR-待机模式简介及相关函数介绍待机模式在某些指定的唤醒条件下退出后,微控制器将被复位

2022-03-30 15:46:23 553

原创 RISC-V MCU应用教程之PWR睡眠模式

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程主要讲述如何控制CH32V103进入睡眠模式以及对其进行中断唤醒操作。1、PWR-睡眠模式简介及相关函数介绍在系统复位后,微控制器处于正常工作状态(运行模式)

2022-03-25 16:02:02 5837

原创 RISC-V MCU应用教程之RCC

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程为MCO时钟输出,主要通过CH32V103 PA8引脚对外提供时钟,相当于一个有源晶振。1、RCC简介及相关函数介绍RCC:复位与时钟控制器(Reset Cl

2022-03-24 17:29:49 403

原创 RISC-V MCU应用教程之PWM输出

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程使用定时器1通道1(PA8),通过PA8引脚产生PWM控制LED。灯LED1的亮度。1、PWM简介及相关函数介绍脉冲宽度调制(PWM)是一种模拟控制方式,

2022-03-23 15:51:24 5578

原创 RISC-V MCU应用教程之定时器中断

RISC-V MCU应用教程之定时器中断简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程通过CH32V103开发板板载两个LED灯显示程序运行状态,具体情况如下:(1)串口调式助手大约每隔500ms打印

2022-03-22 11:32:20 930

转载 RISC-V MCU应用教程之赤菟V307多UART通信

RISC-VMCU应用教程之赤菟V307多UART通信本文章介绍使用CH32V307单片机实现主机轮回接收从机传输的数据,并在串口软件显示。您需要的资料:CH32V307单片机数据手册及例程一、单片机串口部分简介由上图可知,CH32V307有8个串口(USART+UART)。由数据手册可知,USART有3个,USART1挂接在APB2总线上,USART2和USART2以及7个UART挂接在APB1总线上。为了方便插拔引脚转接线,将数据手册中有关串口引脚陈列如下表格中。防止原...

2022-03-21 14:13:07 803

原创 RISC-V MCU应用教程之ADC

简介CH32V103系列是以青稞V3A处理器为核心的32位通用RISC-VMCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章教程使用CH32V103开发板的ADC1通道1对开发板的VCC引脚和GND引脚进行采样,并将采样结果通过串口调试助手打印显示。1、ADC及相关函数介.

2022-03-17 14:43:39 748

原创 RISC-V MCU应用教程之GPIO操作

简介CH32V103系列是以青稞V3A处理器为核心的32位通用MCU,该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。本章通过点亮LED作为CH32V103系列MCU应用开发的第一个教程,其LED灯控制使用到GPIO外设的基本输出功能,本章将通过点亮LED对CH32V103的GPIO进行基本的学

2022-03-16 14:26:30 557

原创 RISC-V MCU开发教程之低功耗蓝牙MCU用户程序跳转进boot

的卢CH582M,其采用沁恒自研RISC-V微处理器“青稞V4”,片上集成2Mbps低功耗蓝牙,兼容Bluetooth® low energy 5.3,另外配备SPI、I²C、RTC等丰富外设。使用的卢CH582完成的APP代码很有可能需要进行升级,借助BOOT进行升级的话,可以通过APP跳转进入BOOT,借助芯片自带的BOOT和ISP工具,进行升级(支持串口1和USB下载)跳转实现的代码,BOOT中有一段功能,如果APP起始的至少4字节是默认(无main跳转地址),则认为此芯片无app代码

2022-03-11 15:08:15 354

原创 RISC-V MCU应用之单片赤菟V307实现八串口服务器

简介串口服务器,提供串口转网络的功能,将串口转换成TCP/IP协议网络接口,实现串口和网络接口的数据双向透明传输,扩展串口设备的通讯距离。赤菟V307是搭载沁恒自研RISC-V内核青稞V4F的高性能互联型MCU,主频支持144MHz,支持硬件浮点运算(FPU),提供八个UART接口、USB2.0高速接口(480Mbps)并内置了PHY收发器、千兆以太网MAC并集成10MPHY、2个CAN接口等丰富的外设资源。基于八个UART接口、10M以太网的强大外设,通过单片赤菟V307即可实现八串口服务器.

2022-03-09 15:25:20 3605

原创 RISC-V MCU开发教程之低功耗蓝牙MCU看门狗使用

的卢CH582M,其采用沁恒自研RISC-V微处理器“青稞V4”,片上集成2Mbps低功耗蓝牙,兼容Bluetooth® low energy 5.3,另外配备SPI、I²C、RTC等丰富外设。的卢CH573、的卢CH582的看门狗计数器是8位的(计数最大255),计数周期131072/Fsys以卢CH573、的卢CH582为例,evt中主频都是60M,看门狗最大时间 (131072/60000000)*255=0.557056s看门狗接口函数在StdPeriphDri...

2022-03-08 10:42:53 855 1

原创 RISC-V MCU应用之智能手环

的卢CH582M,其采用沁恒自研RISC-V微处理器“青稞V4”,片上集成2Mbps低功耗蓝牙,兼容Bluetooth® low energy 5.3,另外配备SPI、I²C、RTC等丰富外设。WCH Wristband的主控芯片为RISC-V专用低功耗蓝牙MCU:的卢CH582M。WCH Wristband配有血氧心率模块、九轴传感器、电机驱动模块、低功耗触摸检测模块以及0.96寸高清IPS显示屏,满足一般手环的应用需求。项目仓库:WCH Wristband: 基于CH582M开发的智能手

2022-03-05 10:14:07 583

原创 RISC-V MCU移植RTOS系列教程(四)

接着以WCH沁恒微电子的赤菟V103(CH32V103)和赤菟V307(CH32V307)两款RISC-V内核单片机来详细说下针对RISC-V平台,移植实时操作系统的注意点。今天聊下移植RTOS时RISC-V内核时单片机任务之间的切换。了解了如何切换至第一个任务,如何实现不同任务之间的切换呢。在这之前想必对“任务优先级”,“时间片轮转”等概念有一定的了解。rt-thread正常运行也需要个定时器为其提供时钟,且任务初始化时设置了任务优先级。调度器在就绪的任务列表中寻找优先级较高的任务切换执行,当优先

2022-03-03 14:29:10 366

原创 RISC-V MCU移植RTOS系列教程(三)

接着以WCH沁恒微电子的赤菟V103(CH32V103)和赤菟V307(CH32V307)两款RISC-V内核单片机来详细说下针对RISC-V平台,移植实时操作系统的注意点。今天聊下移植RTOS时RISC-V内核时单片机切换至第一个任务。以RT-Thread为例,rt-thread和其他RTOS有点区别的是其gcc下的入口函数定义为entry,而main函数则可以被初始化为线程之一,图1为rt-thread的详细的启动流程。rt-thread定义一个rt_thread类型的全局指针rt_cu

2022-03-02 14:39:10 385

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除