【经验】雅特力MCU AT32F421的时钟配置教程
时钟是芯片正确高效运行的基础,正确的时钟配置是芯片能正确运行的必要条件,其重要性不言而喻。AT32各系列产品的时钟配置部分可能存在细微的差异和需要注意的事项,本文就着重针对各系列的情况来详细介绍如何结合雅特力提供的V2.x.x的板级支持包(BSP)来配置时钟。
以下介绍时钟配置的方法主要分两种:
1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配置。
2、采用时钟工具来配置并生成相应的源码文件。
时钟树
在进行时钟配置之前,应充分了解对应芯片的时钟树结构,这样在进行时钟配置时才会游刃有余。对于系统时钟频率及路径的配置我们需要关注时钟源、倍频及系统时钟部分。类似如下图:
图1. 时钟框图
可由图中得到以下几个关键信息:
1) SCLKSEL:系统时钟可以由HEXT、PLLCLK、HICK三大时钟源提供。
2) HEXT:HEXT是外部高速时钟,其可以外接范围是4~25 MHz的晶振或时钟源。
3) HICK:HICK RC是内部高速振荡器,频率为48 MHz。HICK时钟由内部振荡器给出,但在初始情况下由HICKDIV控制并默认6分频后为8 MHz,亦可配置为不分频,保持48 MHz的频率。
4) PLLCLK:PLL时钟=PLL输入时钟*PLL倍频系数。
5) PLL输入时钟:PLL的输入时钟由PLLRCS及PLLHEXTDIV共同决定,其细分可分为三个来源:HICK 4MHz、HEXT和HEXTDIV,HEXTDIV由HEXT时钟2分频。
代码配置解析
以下将以库函数接口为核心来对时钟配置流程和方法进行说明。
函数接口
各系列产品对应提供的BSP中对硬件的时钟设置部分已封装好接口函数以供调用,以下罗列出时钟配置常用的函数接口,各函数的具体参数及返回值类型等请参考AT32F421_crm.c/.h文件。
时钟配置流程
按常规应用来讲解时钟配置流程,其内容可大致分为如下步骤:
图2. 时钟配置流程图
复位(CRM Reset)
首先按规范流程应复位CRM配置参数,其主要是将系统时钟切换到HICK,其余的系统时钟配置寄存器写入默认值,待后续进行新配置参数的写入。函数调用的代码实现如下:
Flash等待周期(Set Flash Wait Cycle)
AT32F421片上采用的是嵌入式Flash,当运行在不同的主频下时需对应设定Flash等待周期。flash等待周期与运行主频关系如下:
函数调用的代码实现如下:
时钟源配置(Clock Source Configuration)
与系统时钟相关的高速时钟源主要包括HEXT和HICK,PLL也是使用以上时钟源来进行倍频。需要在配置使能PLL前将所使用的PLL参考时钟源开启并等待其稳定。
HEXT
外部高速时钟如采用外接有源时钟的方式时,可开启旁路模式来进行使用,采用晶振时,不能开启旁路模式,旁路模式应在外部高速时钟源使能前进行设定,其默认情况为关闭。旁路模式使能代码实现如下:
使能HEXT时钟源并等待HEXT时钟稳定,代码实现如下:
HICK
内部高速时钟是由芯片内部振荡器提供,使能HICK时钟源并等待HICK时钟稳定,代码实现如下:
PLL配置(PLL Configuration)
PLL配置主要包括:PLL时钟源、PLL倍频系数、PLL倍频频率范围等的设置。倍频时钟公式为:PLLCLK=PLL输入时钟*PLL倍频系数。
PLL时钟源
PLL时钟源细分有三个来源:1、HICK(4 MHz),2、HEXT,3、HEXT分频时钟,PLL时钟源应在PLL配置使能前开启并等待稳定。以上PLL时钟源在crm_pll_config函数中对应的参数定义如下:
当选择PLL时钟源为CRM_PLL_SOURCE_HEXT_DIV时,HEXT的分频系数默认为2分频。
PLL倍频系数
倍频系数为2~64倍可选,但应该注意最高主频限制,以此按实际情况来合适选择倍频系数,如8倍频使用参数CRM_PLL_MULT_8。
当PLL参数设置完成后,即可开启PLL并等待PLL稳定。示例:外部时钟晶振8MHz,采用HEXT 2分频时钟作为PLL时钟源,PLLCLK倍频到120 MHz的代码实现如下:
总线分频(Set Bus Frequency Division)
总线分频包含SCLK到AHBCLK分频、AHBCLK到APB1CLK分频、AHBCLK到APB2CLK分频。AHB总线1分频、APB1/APB2总线2分频的代码实现如下:
切换系统时钟(Switch System Clock)
系统时钟来源主要有三个:HICK、HEXT、PLLCLK。在切换系统时钟到如上时钟源时应提前确保对应时钟源已稳定。
顺滑模式
时钟顺滑模式是为了确保整个系统时钟切换过程的稳定而设计,当即将切换为系统时钟的目标时钟频率大于108 MHz时应开启时钟顺滑模式,所以其主要应用对象为PLLCLK用作系统时钟时的场景。通常使用方法是在系统时钟切换前开始,切换成功后关闭。代码实现如下:
HICK系统时钟
内部高速时钟在系统复位重新运行时默认作为系统时钟,后期代码进行设定时,可有两种频率值来进行设定(8MHz和48MHz)。如图1所述HICK默认情况下用的是8MHz,可配置为48MHz。
HICK 8MHz用作系统时钟的代码实现如下:
HICK 48MHz用作系统时钟的代码实现如下:
HEXT系统时钟
外部高速时钟用作系统时钟时,其系统时钟频率以实际使用的外部时钟频率为准,范围为4~25MHz。HEXT用作系统时钟的代码实现如下:
PLLCLK系统时钟
PLLCLK用作系统时钟时,其系统时钟频率以实际的PLL倍频结果为准。其最高频率应满足芯片规格为基础。PLLCLK用作系统时钟的代码实现如下:
更新核心频率(Update Core Frequency)
提供的BSP中,其代码框架内保留了一个表示系统核心频率的参数值system_core_clock,其保存的是CPU核心的运行频率值,应该在每次系统时钟配置完成后来进行更新。为的是在整个代码框架下,各外设驱动的频率配置能很快获取到当前核心运行频率值并使用。代码实现如下:
时钟配置示例
以下将以完整的时钟配置流程来进行说明,示例:由8 MHz外部时钟晶振作为时钟源,其2分频路径经PLL倍频到120 MHz并用做系统时钟,AHB采用1分频,APB1/APB2采用1分频。函数system_clock_config代码实现如下:
时钟工具
时钟配置工具是雅特力科技为方便对AT32系列MCU进行时钟配置而开发的一个图形化配置工具,其主旨是使用户清晰了解时钟路径和配置出期望的时钟频率并生成源码文件。
环境要求
软件要求
需要Windows7及以上操作系统支持。
安装
软件安装
本软件不需要安装,只需直接运行可执行程序AT32_New_Clock_Configuration.exe。
功能介绍
本章节将介绍此工具的基本操作,其主要的启动界面和配置界面如下所示
图3. 启动界面
图4. 配置界面
菜单栏
菜单栏内容如图所示:
图5. 菜单栏
“项目”(Project)菜单:
新建:新建时钟配置项目
打开:打开已存在的配置项目
保存:保存已打开的配置项目
“语言”(Language)菜单:
English:选择English作为显示语言
简体中文:选择简体中文作为显示语言
“生成代码”(General code)菜单:
当在对应型号的操作配置界面将所期望的时钟路径和时钟频率配置完成之后,可点击“生成代码”菜单来选择源码文件的存储路径并生成相应的源码文件。
“帮助”(Help)菜单:
新版本下载:联网进行新版本下载
版本:查看当前版本
新建配置项目
双击打开时钟配置工具,可看到图示的启动界面,可点击“项目”菜单-->“新建”,进行配置项目的新建,在新建配置项目的过程中需要对芯片的系列所属进行选择,操作方法如下图所示
图6. MCU选择界面
MCU系列的选择,可点击下拉框来进行选择,当选择好MCU后点击“确定”可进入到时钟配置界面。
配置界面的使用
配置界面主要用来进行时钟路径及参数的配置,以下的介绍将以 AT32F421 系列作为示例来展开进行,其余系列的配置方法与此类似。
整个配置界面主要可以分为四个大块,如下图所示
图7. 配置界面框架
1.标题部分:用于展示当前配置项目所选择的MCU系列。
2. 配置部分:用于对时钟路径和时钟参数进行选择和配置,以达到期望的应用需求。
3. 输出部分:用于时钟输出(CLKOUT)的配置。
4. 在SCLK栏也可在选中PLL为系统时钟时作为输入框,可输入期望的系统时钟频率来反向自动配置出倍频参数。
5. 结果部分:用于显示当前外设所使用的时钟频率及总线上的外设。
接下来就着重介绍一下配置部分的使用。配置部分的流程界面是对应着MCU时钟树来进行的,各系列MCU的此部分可能存在着差异,但使用方式大同小异。时钟路径的配置可按流程对各开关进行点选来进行选择,配置部分如下图所示,将逐个流程点的功能及其注意事项进行介绍。
图8. 时钟配置框
ertc使能:ertc时钟代码配置的使能下拉框。
ertcsel:点选框,ertc时钟源选择。当ertc使能开启后,此点选框可配置。
lext bypass:外部低速时钟的旁路使能。
hext:此为输入框,8 MHz为所采用外部时钟源的默认频率,用户可根据实际使用的外部时钟源频率进行修改。(注:此8 MHz被修改为其他频率值时,对应的BSP中demo目录下的inc/at32f421_conf.h文件内的HEXT_VALUE宏定义也应该一致修改,也可以采用工具生成的at32f421_conf.h文件来进行使用)。
hext bypass:高速外部时钟的旁路使能。
pllhextdiv:点选框,当HEXT作为PLL时钟源时,可配置输入频率为HEXT分频或HEXT不分频。
pllrcs:点选框,可配置PLL时钟源为HEXT或HICK。
pll_mode:下拉框,可选择PLL的配置模式(normal或flexible)
倍频系数:选择normal模式时使用PLL_MULT参数进行倍频,计算公式为:PLLCLK=PLL输入时钟*PLL_MULT,选择flexible模式时使用PLL_MS、PLL_NS和PLL_FR参数进行倍频,计算公式为:PLLCLK=PLL输入时钟/PLL_MS*PLL_NS/PLL_FR。为了用户的使用方便,在选定PLL输入时钟源后,结果部分的sclk框中输入目标时钟并按下键盘“Enter”键,会自动计算一组倍频参数以满足用户期望或相近的时钟频率。
sclk select:点选框,可配置HEXT、PLL或HICK作为系统时钟。
sclk频率:当采用正向配置时,此作为系统时钟频率的配置结果显示,当将其用作输入框时,输入期望的频率后点击回车键,会根据此输入值反向计算一组合适的或最接近期望值的PLL配置参数。
hick to sclk:点选框,当sclk select选择HICK作为系统时钟时,可配置HICK的8 MHz或48 MHz到系统时钟(注:当选择48 MHz HICK到系统时钟后,CLKOUT输出HICK时的频率也为48 MHz)
生成代码
当时钟配置完成后,可点击生成代码,然后选择代码生成的路径并确认,最后会在所选目录下生成两个文件夹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文件应修改如下:
工具修改
1、在时钟配置工具中的HEXT输入框内填入外部时钟源实际频率值并按“Enter”键确认。
2、配置好所需的时钟路径及时钟频率,生成代码。采用新生成的时钟代码文件(at32f4xx_clock.c/at32f4xx_clock.h/at32f4xx_conf.h)将原BSP demo中的对应文件替换或取其中函数内容进行替换,在main函数中进行system_clock_config函数调用即可。
工具使用
在使用本时钟配置工具时需注意:
此工具生成的时钟配置源码文件需结合雅特力科技提供的BSP_V2.x.x进行使用。
不同系列所生成的时钟配置源码文件不能型号混用,只能在相对应的工程项目中进行调用。
配置工具中各输入框参数修改后,请以“Enter”键结束。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由浩哥的小锤锤转载自AT32 MCU 雅特力科技公众号,原文标题为:AT32讲堂053 | 雅特力AT32F421时钟配置,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】雅特力32位MCU AT32F421 GPIO的使用指南
本文中雅特力将为大家分享32位微控制器AT32F421 GPIO的使用指南。
【经验】雅特力AT32F4系列 MCU Cortex M4内核入门指南:位带操作、硬件浮点运算单元、滴答时钟中断功能
AT32F4系列产品是基于Cortex™-M4F处理器架构,该处理器是一款低功耗处理器,具有低门数,低中断延迟和低成本调试的特点。支持包括DSP指令集与浮点运算功能,特别适合用于深度嵌入式应用程序需要快速中断响应功能。
AT32讲堂 | 解析雅特力AT32 MCU HICK时钟校准
AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟的精度达到±2.5%,可见精度会受到温度的影响。为了降低环境温度对精度造成的影响,用户可在运行时间隙调用校准程序来进行校准。
雅特力32位MCU选型表
雅特力AT32 MCU的选型的相关技术参数如下,32位MCU,多种封装:TSSOP20,QFN28,QFN32,QFN48,LQFP48,LQFP64,LQFP100,LQFP144,稳定的工作温度:-40°C~85°C,-40°C~105°C,频率范围在96MHz~288MHz之间
产品型号
|
品类
|
Core
|
FPU
|
Speed(MHz)
|
Flash(KB)
|
SRAM(KB)
|
I/O
|
Advanced TM(16-bit)
|
GPTM(32-bit)
|
GPTM(16-bit)
|
Basic TM(16-bit)
|
Systick(24-bit)
|
WDT
|
WWDT
|
RTC
|
I2C
|
SPI
|
(F/H)I2S(1)(2)
|
USART/UART
|
SDIO
|
USB Device
|
CAN
|
ADC Engine
|
12-bit ADC ch
|
DAC Engine
|
12-bit DAC ch
|
PKG
|
Size(mm)
|
Temp(℃)
|
AT32F403ZCT6
|
32位MCU
|
M4
|
FPU
|
200MHz
|
256KB
|
96KB/224KB
|
112
|
3
|
2
|
8
|
2
|
1
|
1
|
1
|
1
|
3
|
4
|
0/4
|
3/2
|
2
|
1
|
1
|
3
|
21
|
2
|
2
|
LQFP144
|
20mmx20mm
|
-40℃~85°C
|
选型表 - 雅特力 立即选型
基于雅特力AT32 MCU的洗衣机电机控制驱动方案,解锁智能家居新体验
随着人工智能、物联网等技术的发展,传统家电逐渐向智能家电转型。洗衣机作为家庭生活中不可或缺的电器之一,其智能化升级对于提升生活品质具有重要意义。MCU作为电机控制系统的核心“大脑”,肩负着多样化的控制使命。雅特力AT32 MCU以其卓越的性能和完善的电机开发生态,为洗衣机、电动两轮车和电摩等电机应用产品提供高效电机控制驱动方案,并已实现规模量产。
雅特力32位MCU-AT32快速选型指南
型号- AT32F413CCU7,AT32F437ZCT7,AT32F415CBT7,AT32F415R8T7,AT32F425F8P7,AT32F437ZGT7,AT32F403ZET6,AT32F421K6T7,AT32F425C6U7,AT32F437VMT7,AT32F425R8T7,AT32F437RGT7,AT32F421K4U7-4,AT32F437RCT7,AT32F403ARGT7,AT32WB415CCU7-7,AT32F413CBT7,AT32F435CMT7,AT32F403ARCT7,AT32F415CCU7,AT32F435RCT7,AT32F435ZGT7,AT32F403AVET7,AT32F435RGT7,AT32F435VMT7,AT32F421C6T7,AT32F403ACET7,AT32F413KBU7-4,AT32F435ZCT7,AT32WB415,AT32F435CMU7,AT32F413CBU7,AT32F415KBU7-4,AT32F407RCT7,AT32F403ACGU7,AT32F407VET7,AT32F425K8U7-4,AT32F407RGT7,AT32F403ACCU7,AT32F415RCT7,AT32F425R8T7-7,AT32F415CBU7,AT32F425K6T7,AT32F421K6U7,AT32F425K6U7-4,AT32F425C6T7,AT32F421G4U7,AT32F415RBT7-7,AT32F421G8U7,AT32F421F4P7,AT32F421F8P7,AT32F413RCT7,AT32F425R6T7-7,AT32F413KCU7-4,AT32F413,AT32F425F6P7,AT32F415,AT32F437VCT7,AT32F421K4T7,AT32F437VGT7,AT32F437ZMT7,AT32F421K8T7,AT32F425C8U7,AT32F403ZGT6,AT32F403ZCT6,AT32F425R6T7,AT32F413C8T7,AT32F415RBT7,AT32F421,AT32F403ARET7,AT32F403,AT32F435VGT7,AT32F435CGT7,AT32F407,AT32F435VCT7,AT32F421C8T7,AT32F435CCT7,AT32F403ACGT7,AT32F403AVGT7,AT32F421C4T7,AT32F403ACCT7,AT32F435ZMT7,AT32F403AVCT7,AT32F413RBT7,AT32F415C8T7,AT32F435,AT32F415RCT7-7,AT32F437,AT32F435CGU7,AT32F407VCT7,AT32F415CCT7,AT32F407VGT7,AT32F435CCU7,AT32F415KCU7-4,AT32,AT32F407RET7,AT32F403ACEU7,AT32F415K8U7-4,AT32F415R8T7-7,AT32F435RMT7,AT32F413CCT7,AT32F425,AT32F421K4U7,AT32F425K8T7,AT32F421K8U7-4,AT32F421K8U7,AT32F425C8T7,AT32F437RMT7,AT32F421G6U7,AT32F421K6U7-4,AT32F421F6P7,AT32F403A
【经验】雅特力AT32 MCU CAN入门指南
CAN是Controller Area Network的缩写(以下称为CAN),它的设计目标是以最小的CPU负荷来高效处理大量的报文。本文介绍雅特力AT32 MCU CAN入门指南
【经验】雅特力MCU如何在Keil中将函数或变量编译到指定地址
在使用雅特力MCU AT32F403A,AT32F421,AT32F413,AT32F415做软件编程中,有时会有将函数或者变量加载到固定的Flash地址,本文介绍2种将变量或函数编译到指定地址的方法。
AT32讲堂 | 雅特力AT32 MCU的随机数生成
本章介绍了使用软件触发方式触发ADC,配置普通信道和DMA。本篇应用笔记适用于AT32各系列MCU,只要有ADC外设皆可适用。
【经验】雅特力AT32 MCU如何使用OTA通过USART实现对固件的在线升级更新
雅特力AT32 MCU如何使用OTA通过USART对固体在线升级更新?OTA(空中下载技术)是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后便于通过预留的通信口,对产品中的固件程序进行更新升级。
【经验】 雅特力AT32 MCU Printf的功能使用方法
内容概述本文档主要介绍雅特力AT32 MCU在Keil和IAR两种工程环境下的printf功能使用方法。其共包含6种方法,各方法的具体用法在具体内容中描述。
雅特力携多款AT32 MCU新品与应用方案亮相2024慕尼黑上海电子展
7月8日,2024慕尼黑上海电子展electronica China在上海新国际博览中心拉开序幕,作为全球电子行业的盛会,汇聚了国内外众多优质电子企业。雅特力携高性能AT32 MCU与应用方案齐亮相,呈现了多款电机控制、工业控制、汽车电子、智能家居、消费、商务,及新能源等应用方案。现场人流攒动、氛围热烈!
【经验】雅特力AT32 MCU USB设备库的架构和使用方法
本文主要介绍雅特力MCU AT32 USB设备库的结构和库的使用方法,AT32 USB是基于USB2.0全速设备,不支持USB2.0高速设备。这里库的作用是用来管理USB外设和实现USB的基本协议,使开发者能够更快的上手开发。
【经验】解析雅特力AT32系列MCU RTC入门指南
RTC计数逻辑位于电池供电域,内部为一个32位递增计数器,只要电池供电域有电,RTC便会一直运行,不受系统复位以及VDD掉电影响。本文雅特力将为大家介绍AT32系列MCU的RTC入门指南。
如何在雅特力AT32 MCU上创建IAP应用程序
如何在雅特力AT32 MCU上创建IAP应用程序,文章概述了AT32 CAN IAP快速使用方法即使用CAN进行IAP升级,此示例使用PC上位软件(IAP_Programmer.exe)通过一个USB转CAN的桥接设备和目标板进行通信,IAP Demo和桥接设备默认CAN波特率使用500K。
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论