<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[RISCVnet的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/RISCVnet</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; RISCVnet]]></copyright><item><title><![CDATA[20脚的RSIC-V MCU，竟然可以基于FOC开发PMSM电机]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/126870463</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/126870463</guid><author>RISCVnet</author><pubDate>Thu, 15 Sep 2022 14:20:55 +0800</pubDate><description><![CDATA[通常小体积封装的MCU有着成本较低的优势，被广泛用于BLDC电机的六步方波控制中，此类应用对MCU的各类资源要求较低，小体积封装的MCU往往能够胜任。而基于FOC的PMSM电机开发中，对MCU的运算能力和ADC速度等各类资源有着较高的要求，大部分现有的小体积封装MCU无法满足此类需求。]]></description><category></category></item><item><title><![CDATA[RISC-V MCU 应用教程之RCC（1）]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125756979</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125756979</guid><author>RISCVnet</author><pubDate>Wed, 13 Jul 2022 09:33:49 +0800</pubDate><description><![CDATA[CH32V307提供了3钟复位形式：

电源复位

系统复位

后备区域复位



1. 电源复位
产生电源复位的条件为：

上电/掉电复位（POR/PDR复位）

从待机模式下唤醒

电源复位发生时，将复位除了备份区域的所有寄存器。PC指针固定到0x00000000。

:::tip

此时的后备寄存器需由VBAT供电，如果同VDD供电，后备区域寄存器将同步复位。

:::...]]></description><category></category></item><item><title><![CDATA[RISC-V MCU 应用教程之RTC自动唤醒]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125736252</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125736252</guid><author>RISCVnet</author><pubDate>Tue, 12 Jul 2022 09:29:47 +0800</pubDate><description><![CDATA[以RISC-V MCU CH32V307为例。 RTC，Real Time Clock，实时时钟，可以在不需要外部中断的情况下唤醒低功耗模式下的MCU。

RTC提供的定时闹钟事件，可以周期性的唤醒MCU。

1. RTC唤醒配置
RTC唤醒配置步骤如下：

配置RTC时钟

配置外部中断线17为上升沿触发

开启RTC闹钟事件中断...]]></description><category></category></item><item><title><![CDATA[RISC-V MCU应用教程之低功耗待机模式]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125676958</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125676958</guid><author>RISCVnet</author><pubDate>Fri, 08 Jul 2022 14:05:22 +0800</pubDate><description><![CDATA[以RISC-V MCU CH32V307为例。

1. 待机模式简介
待机模式（Standby），芯片的运行功耗最低。

该模式下，内核处于深睡眠模式（Sleep Deep）, 电压调节器进入停机模式。

待机模式唤醒后，MCU将执行电源复位。...]]></description><category></category></item><item><title><![CDATA[低功耗之停止模式]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125560044</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125560044</guid><author>RISCVnet</author><pubDate>Fri, 01 Jul 2022 15:42:52 +0800</pubDate><description><![CDATA[停止模式是在内核深睡眠模式（SLEEPDEEP）基础上结合了外设的时钟控制机制，并可以让电压调节器运行在低功耗模式。

此模式下，高频时钟（HSE/HSI/PLL）被关闭，SRAM和寄存器内容保持，IO引脚状态保持。

该模式唤醒后，系统可继续运行，特别注意的是，此时默认系统时钟为内部 8MHz HSI，如有需要，可调用 SystemInit() 重新初始化时钟。...]]></description><category></category></item><item><title><![CDATA[低功耗之睡眠模式]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125545240</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125545240</guid><author>RISCVnet</author><pubDate>Thu, 30 Jun 2022 17:39:21 +0800</pubDate><description><![CDATA[以RISC-V MCU CH32V307为例

1. 睡眠模式简介
睡眠模式下，所有的IO引脚都保持它们在运行模式时的状态。

所有的外设时钟都正常工作。进入睡眠前，尽量关闭无用的外设时钟，以降低功耗。

该模式唤醒所需的时间最短，几乎不耗时间，约 2~3 us。...]]></description><category></category></item><item><title><![CDATA[后备数据寄存器]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125411199</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125411199</guid><author>RISCVnet</author><pubDate>Wed, 22 Jun 2022 15:57:44 +0800</pubDate><description><![CDATA[CH32V307后备寄存器（BKP）提供了10个16位的通用数据寄存器（BKP_DATARx），可以用来存储20个字节的用户数据。]]></description><category></category></item><item><title><![CDATA[RISC-V MCU 电源系统概述]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125336689</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125336689</guid><author>RISCVnet</author><pubDate>Fri, 17 Jun 2022 16:55:04 +0800</pubDate><description><![CDATA[为了提高AD等模拟部分的精度，可以使用独立的电源为VDDA和VSSA供电。

CH32V307VCT6 LQFP100封装的VREF+和VREF-引脚引出，用户可连接一个独立的参考电压用于ADC测量，参考电压范围：2.4V ≤ VREF+≤ VDDA。

其他封装的CH32V307的VREF+和VREF-引脚未引出，在芯片内部与VDDA和VSSA相连。......]]></description><category></category></item><item><title><![CDATA[RISC-V MCU 应用教程之ADC(一)]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125296320</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125296320</guid><author>RISCVnet</author><pubDate>Wed, 15 Jun 2022 14:19:14 +0800</pubDate><description><![CDATA[ADC，Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。

ADC是MCU的重要外设，主要用于传感器的数据采集，常见的ADC类型一般为逐次逼近型。

以沁恒RISC-V MCU CH32V307VCT6为例，内嵌2个12位的ADC模块，共有多达16和外部通道和2个内部通道。...]]></description><category></category></item><item><title><![CDATA[RISC-V MCU启动文件分析]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125271737</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125271737</guid><author>RISCVnet</author><pubDate>Tue, 14 Jun 2022 09:18:21 +0800</pubDate><description><![CDATA[启动文件由汇编语言编写，是MCU上电复位后第一个执行的程序。主要执行以下内容：

初始化gp(globalpointer)全局指针寄存器、sp(stackpointer)栈指针寄存器
将data数据从flash中加载至RAM中
清空bss段数据
初始化中断向量表
配置系统时钟
从Machine模式切换到User模式，进入main函数运行
CH32V103启动文件如下：...]]></description><category></category></item><item><title><![CDATA[RISC-V MCU将常量定义到指定的Flash地址]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125197627</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125197627</guid><author>RISCVnet</author><pubDate>Thu, 09 Jun 2022 09:59:38 +0800</pubDate><description><![CDATA[Keil MDK开发ARM 内核的MCU时，将常量定义到指定的Flash地址中，使用_attribute_( at(绝对地址) )即可，如：]]></description><category></category></item><item><title><![CDATA[指定变量复位时保持(除掉电复位)]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125178151</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125178151</guid><author>RISCVnet</author><pubDate>Wed, 08 Jun 2022 09:26:27 +0800</pubDate><description><![CDATA[RISC-V MCU开发过程中，需要指定一些变量在MCU复位时能够保持当前变量的值，

以CH32V307为例，具体方法如下：

不更改ld文件，将变量添加((section(".noinit")))属性描述]]></description><category></category></item><item><title><![CDATA[RISC-V MCU 外部晶振引脚配置为普通io]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125150490</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125150490</guid><author>RISCVnet</author><pubDate>Mon, 06 Jun 2022 17:08:56 +0800</pubDate><description><![CDATA[以沁恒RISC-V MCU CH32V203C8T6为例，

当使用内部8MHz高频晶振时，其外接高频晶振的引脚可以配置为普通io。]]></description><category></category></item><item><title><![CDATA[RISC-V MCU 调试接口配置为普通io]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125086776</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125086776</guid><author>RISCVnet</author><pubDate>Wed, 01 Jun 2022 17:02:05 +0800</pubDate><description><![CDATA[以沁恒RISC-V MCU CH32V203C8T6为例，其配备了两线仿真调试接口， 用于在线下载和仿真调试。]]></description><category></category></item><item><title><![CDATA[最易变的关键词 - volatile]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/125001037</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/125001037</guid><author>RISCVnet</author><pubDate>Fri, 27 May 2022 11:41:26 +0800</pubDate><description><![CDATA[1、volatile关键字

volatile 是易变的、不稳定的意思。和const一样是一种类型修饰符，volatile关键字修饰的变量，编译器对访问该变量的代码不再进行优化，从而可以提供对特殊地址的稳定访问。
以前只是听过这个关键词，知道它的存在，但从来没用过。用此文记录下在开发RISC-V MCU过程中，未用volatile修饰标志位变量，编译器进行优化，导致程序运行异常。

2、Demo

开发中，常见的需求，主循环中根据中断中修改的标志位，运行不同的功能，


#include "debug.h"]]></description><category></category></item><item><title><![CDATA[RISC-V MCU低功耗场景的应用分析]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/124987719</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/124987719</guid><author>RISCVnet</author><pubDate>Thu, 26 May 2022 16:46:31 +0800</pubDate><description><![CDATA[CH32V203系列是基于32位RISC-V内核设计的工业级增强型低功耗通用微控制器，高性能，最高支持144MHz系统主频，低功耗，运行功耗低至45uA/MHz。
本文已CH32V203为例，聊聊MCU的低功耗及应用场景。



一、低功耗产品
低功耗产品一般可配置为两类运行状态：1.平时低功耗，使用时唤醒；2.平常断电，使用时上电。处在第2类运行状态的产品，其实现低功耗的原理是减小电源供电时间，这类产品主控MCU唤醒的方法可由外挂低功耗协处理单元（LPCU）控制的供电电路来实现。高性能MCU产品通常功..]]></description><category></category></item><item><title><![CDATA[高速USB2.0(480Mbps)JTAG调试器单芯片方案]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/124949496</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/124949496</guid><author>RISCVnet</author><pubDate>Tue, 24 May 2022 16:30:29 +0800</pubDate><description><![CDATA[基于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..]]></description><category></category></item><item><title><![CDATA[RISC-V MCU ld链接脚本说明]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/124886536</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/124886536</guid><author>RISCVnet</author><pubDate>Fri, 20 May 2022 16:56:16 +0800</pubDate><description><![CDATA[1、什么是ld链接脚本？

通常，程序编译的最后一步就是链接，此过程根据“*.ld”链接文件将多个目标文件(.o)和库文件(.a)输入文件链接成一个可执行输出文件(.elf)。涉及到对空间和地址的分配以及符号解析与重定位。

而ld链接脚本控制这整个链接过程，主要用于规定各输入文件中的程序、数据等内容段在输出文件中的空间和地址如何分配。通俗的讲，链接脚本用于描述输入文件中的段，将其映射到输出文件中，并指定输出文件中的内存分配。



2、ld链接脚本的主要内容

2.1 链接配置(可选)

常见的配置有入口]]></description><category></category></item><item><title><![CDATA[RISC-V MCU gp全局指针说明]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/124885381</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/124885381</guid><author>RISCVnet</author><pubDate>Fri, 20 May 2022 16:10:53 +0800</pubDate><description><![CDATA[gp，globalpointer，全局指针寄存器，RISC-V 32个寄存器之一，为了优化±2KB内全局变量的访问。

gp寄存器在启动代码中加载为__global_pointer$的地址，并且之后不能被改变。

linker时使用__global_pointer$来比较全局变量的地址，如果在范围内，就替换掉lui或puipc指令的 absolute/pc-relative寻址，变为gp-relative寻址，使得代码效率更高。该过程被称为linker relaxation(链接器松弛)，也可以使用-Wl.]]></description><category></category></item><item><title><![CDATA[RISC-V MCU应用教程之DMA(存储器到外设)]]></title><link>https://blog.youkuaiyun.com/RISCVnet/article/details/124386443</link><guid>https://blog.youkuaiyun.com/RISCVnet/article/details/124386443</guid><author>RISCVnet</author><pubDate>Sun, 24 Apr 2022 16:43:28 +0800</pubDate><description><![CDATA[简介

CH32V103系列是以青稞V3A处理器为核心的32位通用MCU，该处理器是基于RISC-V开源指令集设计。片上集成了时钟安全机制、多级电源管理、通用DMA控制器。此系列具有1路USB2.0主机/设备接口、多通道12位ADC转换模块、多通道TouchKey、多组定时器、多路IIC/USART/SPI接口等丰富的外设资源。

关于DMA，具有三种数据传输方式：存储器到存储器、存储器到外设、外设到存储器。前面已讲解过关于存储器到存储器数据传输方式，本章将讲解存储器到外设的传输方式以及在下一章将会讲解外设]]></description><category></category></item></channel></rss>