0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AT32F435/437时钟配置指南

0739hhbb 来源:AT32 MCU 雅特力科技 作者:AT32 MCU 雅特力科技 2022-11-01 10:19 次阅读

简介

时钟芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文档就着重针对各系列的情况来详细介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。

以下介绍时钟配置的方法主要分两种:

1.以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配置。 2.采用时钟工具来配置并生成相应的源码文件。

时钟树

在进行时钟配置之前,应充分了解对应芯片的时钟树结构,这样在进行时钟配置时才会游刃有余。对于系统时钟频率及路径的配置我们需要关注时钟源、倍频及系统时钟部分。类似如下图:

图1. 时钟框图
fb219bbe-5922-11ed-a3b6-dac502259ad0.png

可由图中得到以下几个关键信息

1) SCLKSEL:系统时钟可以由HEXT、PLLCLK、HICK三大时钟源提供。
2) HEXT:HEXT是外部高速时钟,其可以外接范围是4~25 MHz的晶振或时钟源。
3) HICK:HICK RC是内部高速振荡器,频率为48 MHz。HICK时钟由内部振荡器给出,但在初始情况下由HICKDIV控制并默认6分频后为8 MHz,亦可配置为不分频,保持48MHz的频率。
4) PLLCLK:PLL时钟=PLL输入时钟/PLL_MS*PLL_NS/PLL_FR。
5) PLL输入时钟:PLL的输入时钟由PLLRCS决定,有两个来源:HICK 8 MHz和HEXT。

代码配置解析

以下将以库函数接口为核心来对时钟配置流程和方法进行说明。

函数接口

各系列产品对应提供的BSP中对硬件的时钟设置部分已封装好接口函数以供调用,以下罗列出时钟配置常用的函数接口,各函数的具体参数及返回值类型等请参考at32f435_437_crm.c/.h文件。 fb56458a-5922-11ed-a3b6-dac502259ad0.png

时钟配置流程

按常规应用来讲解时钟配置流程,其内容可大致分为如下步骤:

图2. 时钟配置流程图

fc052758-5922-11ed-a3b6-dac502259ad0.png    

Flash时钟分频(Set Flash Clock Division

Flash时钟分频系数与系统时钟频率相对应,系统时钟频率与Flash分频系数对应关系如下:


fc1aa51a-5922-11ed-a3b6-dac502259ad0.png  

代码实现如下:

fc520d5c-5922-11ed-a3b6-dac502259ad0.png    

复位(CRM Reset


首先按规范流程应复位CRM配置参数,其主要是将系统时钟切换到HICK,其余的系统时钟配置寄存器写入默认值,待后续进行新配置参数的写入。函数调用的代码实现如下:

fc6a0d9e-5922-11ed-a3b6-dac502259ad0.png  


时钟源配置(Clock Source Configuration

与系统时钟相关的高速时钟源主要包括HEXT和HICK,PLL也是使用以上时钟源来进行倍频。需要在配置使能PLL前将所使用的PLL参考时钟源开启并等待其稳定。

HEXT

外部高速时钟如采用外接有源时钟的方式时,可开启旁路模式来进行使用,采用晶振时,不能开启旁路模式,旁路模式应在外部高速时钟源使能前进行设定,其默认情况为关闭。旁路模式使能代码实现如下: fc7cfa8a-5922-11ed-a3b6-dac502259ad0.png  

使能HEXT时钟源并等待HEXT时钟稳定,代码实现如下:

fc8a6292-5922-11ed-a3b6-dac502259ad0.png

HICK

内部高速时钟是由芯片内部振荡器提供,使能HICK时钟源并等待HICK时钟稳定,代码实现如下:

fcb23f60-5922-11ed-a3b6-dac502259ad0.png  

PLL配置(PLL Configuration

PLL配置主要包括:PLL时钟源、PLL倍频系数、PLL倍频频率范围等的设置。倍频时钟公式为:PLLCLK=(PLL输入时钟*PLL_NS)/(PLL_MS*PLL_FR)。

PLL时钟源

PLL时钟源细分有如下来源:1、HICK(8 MHz),2、HEXT。PLL时钟源应在PLL配置使能前开启并等待稳定。以上PLL时钟源在crm_pll_config函数中对应的参数定义如下:

fccc9676-5922-11ed-a3b6-dac502259ad0.png

PLL倍频系数

PLL_MS:PLL预分频系数,范围值1~15。其功能是对PLL输入时钟进行预分频。

PLL_NS:PLL倍频参数,范围值31~500。其功能是对PLL_MS进行预分频处理后的时钟进行倍频。 PLL_FR:PLL后分频系数,范围(1、2、4、8、16、32)。其功能是对PLL_NS倍频后的时钟进行后除频,除频后的时钟才是PLL时钟。 以上参数在搭配使用时有如下限制条件,详情可参考RM的4.1.1时钟源章节:

fce0ee64-5922-11ed-a3b6-dac502259ad0.png  

当PLL参数设置完成后,即可开启PLL并等待PLL稳定。示例:外部时钟晶振8 MHz,采用HEXT时钟作为PLL时钟源,PLLCLK倍频到288 MHz的代码实现如下:

fd573e66-5922-11ed-a3b6-dac502259ad0.png    
总线分频(Set Bus Frequency Division

总线分频包含SCLK到AHBCLK分频、AHBCLK到APB1CLK分频、AHBCLK到APB2CLK分频。AHB总线1分频、APB1/APB2总线2分频的代码实现如下: fd858438-5922-11ed-a3b6-dac502259ad0.png    
切换系统时钟(Switch System Clock

系统时钟来源主要有三个:HICK、HEXT、PLLCLK。在切换系统时钟到如上时钟源时应提前确保对应时钟源已稳定。

顺滑模式

时钟顺滑模式是为了确保整个系统时钟切换过程的稳定而设计,当即将切换为系统时钟的目标时钟频率大于108 MHz时应开启时钟顺滑模式,所以其主要应用对象为PLLCLK用作系统时钟时的场景。通常使用方法是在系统时钟切换前开始,切换成功后关闭。代码实现如下:

fdcae08c-5922-11ed-a3b6-dac502259ad0.png

HICK系统时钟

内部高速时钟在系统复位重新运行时默认作为系统时钟,后期代码进行设定时,可有两种频率值来进行设定(8 MHz和48 MHz)。如图1所述HICK默认情况下用的是8 MHz,可配置为48 MHz。 HICK 8 MHz用作系统时钟的代码实现如下: fde0557a-5922-11ed-a3b6-dac502259ad0.png  
HICK 48 MHz用作系统时钟的代码实现如下:
fe114d74-5922-11ed-a3b6-dac502259ad0.png

HEXT系统时钟

外部高速时钟用作系统时钟时,其系统时钟频率以实际使用的外部时钟频率为准,范围为4~25 MHz。HEXT用作系统时钟的代码实现如下: fe316140-5922-11ed-a3b6-dac502259ad0.png

PLLCLK系统时钟

PLLCLK用作系统时钟时,其系统时钟频率以实际的PLL倍频结果为准。其最高频率应满足芯片规格为基础。PLLCLK用作系统时钟的代码实现如下: fe5c0648-5922-11ed-a3b6-dac502259ad0.png    
更新核心频率(Update Core Frequency
提供的BSP中,其代码框架内保留了一个表示系统核心频率的参数值system_core_clock,其保存的是CPU核心的运行频率值,应该在每次系统时钟配置完成后来进行更新。为的是在整个代码框架下,各外设驱动的频率配置能很快获取到当前核心运行频率值并使用。代码实现如下:
fe93f3fa-5922-11ed-a3b6-dac502259ad0.png    

时钟配置示例

以下将以完整的时钟配置流程来进行说明,示例:由8 MHz外部时钟晶振作为时钟源,经PLL倍频到288 MHz并用做系统时钟,AHB不分频,APB1/APB2采用2分频。函数system_clock_config代码实现如下: feb42ecc-5922-11ed-a3b6-dac502259ad0.png    

时钟工具

时钟配置工具是雅特力科技为方便对AT32系列MCU进行时钟配置而开发的一个图形化配置工具,其主旨是使用户清晰了解时钟路径和配置出期望的时钟频率并生成源码文件。

环境要求

软件要求

需要Windows7及以上操作系统支持。

安装

软件安装

本软件不需要安装,只需直接运行可执行程序AT32_New_Clock_Configuration.exe。

功能介绍

本章节将介绍此工具的基本操作,其主要的启动界面和配置界面如下所示。

图3. 启动界面
fed9f21a-5922-11ed-a3b6-dac502259ad0.png  
图4. 配置界面
fee96f9c-5922-11ed-a3b6-dac502259ad0.png    

菜单栏

菜单栏内容如图所示:

图5. 菜单栏
ff2d3d6c-5922-11ed-a3b6-dac502259ad0.png

“项目”(Project)菜单:

新建:新建时钟配置项目

打开:打开已存在的配置项目

保存:保存已打开的配置项目

“语言”(Language)菜单:

English:选择English作为显示语言

简体中文:选择简体中文作为显示语言

“生成代码”(General code)菜单:

当在对应型号的操作配置界面将所期望的时钟路径和时钟频率配置完成之后,可点击“生成代码”菜单来选择源码文件的存储路径并生成相应的源码文件。

“帮助”(Help)菜单:

新版本下载:联网进行新版本下载

版本:查看当前版本

新建配置项目

双击打开时钟配置工具,可看到图示的启动界面,可点击“项目”菜单-->“新建”,进行配置项目的新建,在新建配置项目的过程中需要对芯片的系列所属进行选择,操作方法如下图所示 。

图6. MCU选择界面
ff5016de-5922-11ed-a3b6-dac502259ad0.png  
MCU系列的选择,可点击下拉框来进行选择,当选择好MCU后点击“确定”可进入到时钟配置界面。

配置界面的使用

配置界面主要用来进行时钟路径及参数的配置并对部分外设当前运行的时钟频率进行显示,以下的介绍将以AT32F435系列作为示例来展开进行,其余系列的配置方法与此类似。 整个配置界面主要可以分为四个大块,如下图所示 。

图7. 配置界面框架

ff724e02-5922-11ed-a3b6-dac502259ad0.png

1. 标题部分:用于展示当前配置项目所选择的MCU系列。
2. 配置部分:用于对时钟路径和时钟参数进行选择和配置,以达到期望的应用需求。
3. 输出部分:用于时钟输出(CLKOUT)的配置。
4. 在SCLK栏也可在选中PLL为系统时钟时作为输入框,可输入期望的系统时钟频率来反向自动配置出倍频参数。
5. 结果部分:用于显示当前外设所使用的时钟频率及总线上的外设。 接下来就着重介绍一下配置部分的使用。配置部分的流程界面是对应着 MCU 时钟树来进行的,各系列MCU的此部分可能存在着差异,但使用方式大同小异。时钟路径的配置可按流程对各开关进行点选来进行选择,配置部分如下图所示,将逐个流程点的功能及其注意事项进行介绍。
图8. 时钟配置框
ff967a20-5922-11ed-a3b6-dac502259ad0.png  
1. ertc使能:ertc时钟代码配置的使能下拉框。
2. ertcsel:点选框,ertc时钟源选择。当ertc使能开启后,此点选框可配置。
3. ertcdiv:下拉框,当ertc选择hext外部高速时钟作为时钟来源时,此下拉框选择分频系数。
4. lext bypass:外部低速时钟的旁路使能。
5. hext:此为输入框,8 MHz为所采用外部时钟源的默认频率,用户可根据实际使用的外部时钟源频率进行修改。(注:此8 MHz被修改为其他频率值时,对应的BSP中demo目录下的inc/at32f435_437_conf.h文件内的HEXT_VALUE宏定义也应该一致修改,也可以采用工具生成的at32f435_437_conf.h文件来进行使用)。
6. hext bypass:高速外部时钟的旁路使能。
7. pllrcs:点选框,可配置PLL时钟源为HEXT或HICK。
8. pll_ms:输入框,PLL预分频系数,范围值1~15。其功能是对PLL输入时钟进行预分频。
9. pll_ns:输入框,PLL 倍频参数,范围值31~500。其功能是对PLL_MS进行预分频处理后的时钟进行倍频。
10. pll_fr:下拉框,PLL后分频系数,范围(1、2、4、8、16、32)。其功能是对PLL_NS倍频后的时钟进行后除频,除频后的时钟才是PLL时钟。
11. sclk select:点选框,可配置HEXT、PLL或HICK作为系统时钟。
12. sclk频率:当采用正向配置时,此作为系统时钟频率的配置结果显示,当将其用作输入框时,输入期望的频率后点击回车键,会根据此输入值反向计算一组合适的或最接近期望值的PLL配置参数。
13. hick to sclk:点选框,当sclk select选择HICK作为系统时钟时,可配置HICK的8 MHz或48MHz到系统时钟(注:当选择48 MHz HICK到系统时钟后,CLKOUT输出HICK时的频率也为48 MHz)。
14. usbdiv:下拉框。当PLL时钟被选作为USB的时钟来源时,此处配置PLL时钟到USB时钟的分频系数。
15. hick to usb:点选框,可配置USB时钟由PLL时钟或HICK 48 MHz提供,USB时钟配置代码由下拉框to usb来进行选择控制。因USB时钟需要的是固定48 MHz,所以在usbdiv可分频参数为前提下,PLL倍频出来的频率可能不满足USB 48 MHz的时钟需求。
16. USB使能:USB时钟代码配置的使能下拉框。
17. USB时钟频率的显示。此显示栏会实时计算USB时钟的频率并显示,如果配置出来的USB时钟不等于48 MHz时,显示出来的USB时钟频率会标注为红色,而实际应用中没有用到USB时选择disable则不会显示。(注:此部分只针对USB时钟频率的配置,USB外设时钟使能需自行额外打开)。

生成代码

当时钟配置完成后,可点击生成代码,然后选择代码生成的路径并确认,最后会在所选目录下生成两个文件夹inc和src,源文件存放在src文件夹下,头文件存放在inc文件夹下。这些文件可结合到BSP_V2.x.x内的工程来进行使用。可以采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)将原BSP demo中的对应文件替换,在main函数中进行system_clock_config函数调用即可。

注意事项

外部时钟源(HEXT)修改

因本文档所示例的demo和配置工具都默认采用的8 MHz外部时钟频率,当实际硬件使用的外部时钟源是非8 MHz频率时需注意以下几点。

代码修改

1、 以实际的外部时钟频率按文中时钟配置流程章节所描述的时钟配置流程及方法来编写相应的代码,配置出期望的时钟配置及时钟路径。

2、 修改对应demo工程中at32f4xx_conf.h文件的HEXT_VALUE值,以实际使用的外部时钟源频率值来进行修改。如实际外部高速时钟使用12.288 MHz的晶振或时钟源时,at32f4xx_conf.h文件应修改如下:

ffc0d63a-5922-11ed-a3b6-dac502259ad0.png

工具修改

1、在时钟配置工具中的 HEXT 输入框内填入外部时钟源实际频率值并按“Enter”键确认。

2、配置好所需的时钟路径及时钟频率,生成代码。采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)将原BSP demo中的对应文件替换或取其中函数内容进行替换,在main函数中进行system_clock_config函数调用即可。

工具使用

在使用本时钟配置工具时需注意: 1. 此工具生成的时钟配置源码文件需结合雅特力科技提供的BSP_V2.x.x进行使用。 2. 不同系列所生成的时钟配置源码文件不能型号混用,只能在相对应的工程项目中进行调用。 3. 配置工具中各输入框参数修改后,请以“Enter”键结束。

案例 系统时钟切换

功能简介

在系统运行过程中来进行系统时钟切换。

资源准备

1) 硬件环境 对应产品型号的AT-START BOARD 2) 软件环境 projectat_start_f435examplescrmsysclk_switch

软件设计

1) 配置流程

初始化按键。

配置clkout时钟输出pll 4分频。

编写从hick经pll倍频64 MHz到系统时钟的配置代码。

编写从hext 2分频经pll倍频96 MHz到系统时钟的配置代码。

2) 代码介绍 main函数代码描述
00002c86-5923-11ed-a3b6-dac502259ad0.png
hick经pll倍频64 MHz到系统时钟的代码描述
0065633a-5923-11ed-a3b6-dac502259ad0.png  
hext经pll倍频96 MHz到系统时钟的代码描述
01347d3c-5923-11ed-a3b6-dac502259ad0.png    

实验效果

上电运行led2以间隔100ms时间进行闪烁,clkout(PA8)输出60 MHz。

每次USER按键按下,系统时钟在64 MHz与96 MHz之间进行交替切换,clkout输出对应的4分频频率,led4 toggle一次。

案例 时钟失效检测

功能简介

在当HEXT时钟直接或间接作为系统时钟时,当HEXT时钟出现故障,且时钟失效模块侦测到失效后,时钟失效事件将产生NMI中断,在此中断中可完成系统的营救操作。

资源准备

1) 硬件环境 对应产品型号的 AT-START BOARD 2) 软件环境 projectat_start_f435examplescrmclock_failure_detection

软件设计

1) 配置流程

配置clkout1时钟输出pll 4分频。

开启时钟失效检测,并完善void NMI_Handler(void)函数。

编写从hick经pll倍频288 MHz到系统时钟的配置代码。

2) 代码介绍 main函数代码描述
016b82b4-5923-11ed-a3b6-dac502259ad0.png  
hick经pll倍频288 MHz到系统时钟的代码描述
019155d4-5923-11ed-a3b6-dac502259ad0.png  
NMI中断实现
02a2293a-5923-11ed-a3b6-dac502259ad0.png    

实验效果

在运行过程中将晶振拔掉或晶振脚接地,产生时钟失效。通常来说hext比hick更稳定,可观测clkout(PA8)的输出,可发现时钟拯救回来后hick作为源时的频率上存在细微波动。

案例PLL参数计算

功能简介

在进行系统时钟配置过程时,可调用库函数根据PLL输入时钟源和目标时钟频率自动计算一组合理的PLL参数以供配置,减少人为计算的烦恼。

资源准备

1) 硬件环境 对应产品型号的AT-START BOARD 2) 软件环境 projectat_start_f435examplescrmpll_parameter_calculate

软件设计

1) 配置流程

crm_pll_parameter_calculate函数自动计算PLL参数方式配置系统时钟。

配置clkout1时钟输出pll 4分频。

判断计算结果,能以目标时钟准确计算一组PLL参数时LED4闪烁,如果不能LED2闪烁。

2) 代码介绍 main函数代码描述
02c27dde-5923-11ed-a3b6-dac502259ad0.png  
自动以目标时钟计算PLL参数并配置系统时钟的代码描述
02eb4390-5923-11ed-a3b6-dac502259ad0.png    

实验效果

系统会自动计算一组以目标时钟为结果的PLL参数并配置,如果计算参数所算结果与目标时钟相等则LED4闪烁,如果所算结果与目标时钟接近则LED2闪烁。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    7640

    浏览量

    148509
  • 时钟
    +关注

    关注

    10

    文章

    1480

    浏览量

    130306
  • AT32
    +关注

    关注

    1

    文章

    97

    浏览量

    1827

原文标题:AT32讲堂035 | AT32F435/437时钟配置指南

文章出处:【微信号:AT32 MCU 雅特力科技,微信公众号:AT32 MCU 雅特力科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FAQ0130 AT32F435 437 QSPI XIP模式需开启cache bypass

    AT32F435/437 QSPI XIP模式需开启cache bypass在使用QSPI 时,当使用XIP 模式时,运行过程中读写外接器件可能出现非预期的数据,导致程序数据错误、hardfault 等问题。
    发表于 10-23 06:15

    AT32F435/437系列安全库区的应用原理、软件使用方法及范例程序

    AT32F435/437 Security Library Application Note主要在阐述AT32F435/437系列安全库区的应用原理、软件使用方法及范例程序。
    发表于 10-25 07:22

    AT32F435/437时钟配置

    AT32F435/437时钟配置主要介绍两部分内容:1、基于雅特力提供的V2.x.x 的板级支持包来进行时钟源码的
    发表于 10-25 06:18

    AT32F435/437 EDMA使用指南

    AT32F435/437 EDMA使用指南本文主要就EDMA 的基本功能进行讲解和案列解析。
    发表于 10-25 07:24

    AT32F435/437 I 2C使用指南

    AT32F435/437 I2C使用指南主要就I2C 总线接口的基本功能进行讲解和案例解析。
    发表于 10-25 08:09

    如何提升AT32F435/437性能

    AT32F435/437 Performance Improvement描述了如何通过软件方法改善AT32F435_437的运行效能。
    发表于 10-25 07:37

    AT32F435/437 ADC应用说明

    AT32F435/437 ADC使用指南主要以ADC的特色功能进行讲解和案列解析。
    发表于 10-25 08:08

    AT32F435/437xx GPIO使用指南

    AT32F435/437xx的通用功能I/O (GPIO)提供了一系列与外部环境通讯的接口,可用于MCU与其他嵌入式设备之间通过数字或模拟方式的通讯。AT32F435/437xx系列的
    发表于 10-25 08:23

    AT32F435/437 OTGFS应用说明

    AT32F435/437 OTGFS Application Note主要描述AT32 OTGFS 外设特性,OTGFS 支持主机和设备模式。
    发表于 10-25 07:01

    AT32F435/437 DMA使用指南

    AT32F435/437 拥有 2 个 DMA 控制器(DMA1/DMA2),每个 DMA 支持 7 个通道且外设的 DMA 请求可映射到任意通道上。本文主要就 DMA 的基本功能进行讲解和案列解析。
    发表于 10-25 08:07

    AT32F435&AT32F437入门使用指南

    AT32F435 & AT32F437入门使用指南旨在让用户快速使用AT32F435xx /AT32F437xx 进行项目开发,AT
    发表于 10-26 06:58

    雅特力AT32F435/437 OTGFS应用笔记

    AT32F435/437包含2个独立的OTGFS,编号OTGFS1和OTGFS2,本章将描述OTGFS支持的一些基本功能。 OTGFS1和OTGFS2特性完全相同。
    的头像 发表于 03-08 13:23 1421次阅读
    雅特力<b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b> OTGFS应用笔记

    AT32讲堂035 | AT32F435/437时钟配置指南

    简介时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的
    的头像 发表于 11-02 14:57 2038次阅读
    AT32讲堂035 | <b class='flag-5'>AT32F435</b>/<b class='flag-5'>437</b><b class='flag-5'>时钟</b><b class='flag-5'>配置</b><b class='flag-5'>指南</b>

    雅特力AT32F435/F437入门使用指南

    搭建AT32开发环境一、调试工具及开发板目前AT32F435/F437开发板都自带AT-Link-EZ调试工具,AT-Link-EZ如下图左边红框所示,它也可拆开后单独搭配其他电路板使用,支持IDE在线调试、在线烧录、USB转串口等功能。图1.AT-
    的头像 发表于 11-10 08:15 2246次阅读
    雅特力<b class='flag-5'>AT32F435</b>/F<b class='flag-5'>437</b>入门使用<b class='flag-5'>指南</b>

    AT32F435 & AT32F437入门使用指南

    电子发烧友网站提供《AT32F435 & AT32F437入门使用指南.pdf》资料免费下载
    发表于 12-18 11:13 1次下载
    <b class='flag-5'>AT32F435</b> & AT32F<b class='flag-5'>437</b>入门使用<b class='flag-5'>指南</b>