跳转到主要内容

如何配置SWM系列系统时钟?

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

<strong><font color="#004a85">SWM190最大时钟频率可达 60MHz</font> </strong>

<center><img src="http://mcu.eetrend.com/files/2022-04/wen_zhang_/100559135-248344-1.gif&…; alt=“如何配置SWM系列系统时钟?"></center>

有5个时钟源可供使用:

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

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

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

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

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

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

如图所示:

<center><img src="http://mcu.eetrend.com/files/2022-04/wen_zhang_/100559135-248345-2.png&…; alt=“ SWM190时钟框图"></center><center><i> SWM190时钟框图</i></center>

<strong><font color="#004a85">SWM190时钟配置方法</font> </strong>

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

如下:

<strong>/* 系统时钟设定 */</strong>

<pre style="overflow-x:auto; background-color:#e9e9e9;">#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</pre>

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

<strong><font color="#004a85">SWM190PLL 设定</font> </strong>

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

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

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

具体宏定义如下:

<pre style="overflow-x:auto; background-color:#e9e9e9;">#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</pre>

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

SystemCoreClockUpdate()

switchTo24MHz()

switchTo3MHz()

switchTo48MHz()

switchTo6MHz()

switchToXTAL()

switchToPLL()

switchTo32KHz()

switchToXTAL_32K()

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

来源:<a href="https://mp.weixin.qq.com/s/T43USRwPi7MddYvOhBOwiA"&gt; 华芯微特32位MCU</a>
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。