芯课堂 | 如何配置SWM系列系统时钟?

2024-01-09 13:28

本文主要是介绍芯课堂 | 如何配置SWM系列系统时钟?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如何配置SWM系列

系统时钟?

      华芯微特科技有限公司SWM系列芯片可通过软件配置改变时钟的速度,可以让我们的设计更加灵活,频率可选空间也更加广泛,用户可以根据自己的实际需求配置需要的系统时钟。为了让用户能够更简单的使用这一功能,下面小编将以SWM190为例,给大家展示如何配置SWM系列产品的系统时钟。

S W M 1 9 0

最大时钟频率可达

60MHz

图片

有5个时钟源可供使用:

01.内部高频振荡器(RCHF):内部高频振荡器为片内时钟源,无需连接任何外部器件。频率为24MHz或48MHz,通过HRCCR寄存器进行切换,精度为百分之一,可提供较精确的固定频率时钟.

02.内部低频振荡器(RCLF):内部低频振荡器为片内时钟源,无需连接任何外部器件。频率为32KHz。

03.外部振荡器(XTAH):外部振荡器可接4~32MHz频率.

04.外部低频振荡器(XTAL):外部低频振荡器,支持32.768KHz时钟接入

05.PLL:支持RCHF或XTAH作为输入源

我们来看一下时钟系统框图

如图所示:

图片

 SWM190时钟框图

S W M 1 9 0

时钟配置方法

      在SWM190固件库中对时钟频率的选择进行了简化,原先的很多操作都在后台进行。系统给出的函数为SystemInit(void),可直接调用配置系统时钟,但在调用前还需要进行一些宏定义的设置,具体的设置在system_SWM190.c文件中。

如下:

/* 系统时钟设定 */

#define SYS_CLK_24MHz  0   //0 内部高频24MHz RC振荡器

#define SYS_CLK_3MHz  1  //1 内部高频 3MHz RC振荡器

#define SYS_CLK_48MHz  2  //2 内部高频48MHz RC振荡器

#define SYS_CLK_6MHz  3  //3 内部高频 6MHz RC振荡器

#define SYS_CLK_XTAL  4  //4 外部晶体振荡器(2-30MHz)

#define SYS_CLK_XTAL_DIV8 5  //5 外部晶体振荡器(2-30MHz) 8分频

#define SYS_CLK_PLL   6  //6 锁相环输出

#define SYS_CLK_PLL_DIV8 7  //7 锁相环输出 8分频

#define SYS_CLK_32KHz  8  //8 内部低频32KHz RC  振荡器

#define SYS_CLK_XTAL_32K 9  //9 外部低频32KHz 晶体振荡器

#define SYS_CLK   SYS_CLK_48MHz

//您只需要修改此处SYSCLK宏定义来修改系统时钟。

S W M 1 9 0

PLL 设定

      PLL的输入参考时钟源可设置为内部高频时钟或外部高频晶振输入,最大输出时钟可设置为60MHz。

      当系统时钟配置为PLL时钟时,可通过配置以下几处寄存器来配置PLL时钟,其配置公式为:VCO输出频率=PLL输入时钟/INDIV*4*FBDIV

PLL输出频率=PLL输入时钟/INDIV*4*FBDIV/OUTDIV=VCO输出频率/OUTDIV

具体宏定义如下:

#define SYS_PLL_SR

SYS_CLK_24MHz

//可取值SYS_CLK_24MHz、SYS_CLK_48MHz、SYS_CLK_XTAL

#define PLL_IN_DIV 6

//SYS_PLL_SRC = SYS_CLK_24MHz 时用6,SYS_PLL_SRC= SYS_CLK_48MHz 时用 12

#define PLL_FB_DIV 30

#define PLL_OUT_DIV8 0

#define PLL_OUT_DIV4 1

#define PLL_OUT_DIV2 2

#define PLL_OUT_DIV  PLL_OUT_DIV8

//此外,在system_SWM190.c文件中还定义了运行过程中更改时钟函数

SystemCoreClockUpdate()

switchTo24MHz()

switchTo3MHz()

switchTo48MHz()

switchTo6MHz()

switchToXTAL()

switchToPLL()

switchTo32KHz()

switchToXTAL_32K()

等一系列的函数方便用户在系统运行过程中修改系统时钟时使用。

这篇关于芯课堂 | 如何配置SWM系列系统时钟?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/587266

相关文章

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个