作为MCU运行的基础,时钟是单片机各个模块工作时序的最小时间单位,推动单片机的各指令执行,是MCU选型的一个重要指标。CKS32F4xx系列产品具有众多的外设,但并非所有的外设均需要系统时钟的高频率,并且高时钟频率将导致功耗增加、抗电磁干扰能力变弱,因此,CKS32F4xx系列产品内部具备多个时钟源。本文将对CKS32F4xx系列产品时钟组成进行分析,并讲解该系统单片机的时钟的配置方法,以能够让用户更加简单的对系统时钟进行配置。
CKS32F4xx系列产品时钟树
在CKS32F4xx系列产品中,有HSI、HSE、LSI、LSE、PLL五个重要的时钟源,其中PLL分为主PLL和专用PLL两部分。从时钟频率来分可以分为高速时钟源(HIS、HIS、PLL)和低速时钟源(LSI、LSE);从来源可分为外部时钟源(HSE、LSE)和内部时钟源(HIS、LSI、PLL)。
①:LSI是低速内部RC振荡器,频率为32kHz。供独立看门狗和RTC单元使用。
②:LSE是低速外部时钟,接频率为32.768kHz晶振。主要供RTC单元使用。
③:HSE是高速外部时钟晶振输入,频率范围为4MHz~26MHz。。
④:HSI是高速内部RC振荡器,频率为16MHz。可以直接作为系统时钟或者用作PLL输入。
⑤:PLL为锁相环倍频输出,有两个PLL:
1)主 PLL(PLL)由 HSE 或者 HSI 提供时钟信号,并具有两个不同的输出时钟。
其一PLLP用于生成高速的系统时钟(最高 168MHz)
其二PLLQ用于生成 USB_OTG_FS(48MHz)、随机数发生器SDIO时钟。
2)专用 PLL(PLLI2S)用于生成精确时钟,用于实现I2S高品质音频性能。
CKS32F4xx系列系统时钟配置
在CKS32F4xx系列固件库system_cks32f4xx.c文件中定义了函数SystemInit(void),并在其中调用了SetSysClock()函数来配置系统关键时钟寄存器,其处理流程如下:
先使能外部时钟HSE,等待HSE稳定之后,配置AHB、APB1、APB2时钟相关的分频因子;等待这些都配置完成之后,打开主PLL时钟并设置主PLL作为系统SYSCLK时钟源。如果HSE不能达到就绪状态则依然以HSI作为系统时钟源头。
在设置主PLL时钟时,需要设置一系列的分频系数和倍频参数,代码如下:
RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
(RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
PLL_M、PLL_N、PLL_P宏定义均在在System_cks32f4xx.c文件中定义,当采用8MHz外部晶振时,主PLL时钟计算方法如下:
PLL = 8MHz * PLL_N / (PLL_M * PLL_P) = 8MHz * 336 /(8 * 2) = 168MHz
用户可根据实际需求,根据SetSysClock函数内的注释进行实际修改,可用的时钟源配置宏定义位于cks32f4xx.h中,如RCC_CR_HSION、RCC_CR_HSEON等。
在线留言询价
型号 | 品牌 | 询价 |
---|---|---|
BD71847AMWV-E2 | ROHM Semiconductor | |
CDZVT2R20B | ROHM Semiconductor | |
TL431ACLPR | Texas Instruments | |
MC33074DR2G | onsemi | |
RB751G-40T2R | ROHM Semiconductor |
型号 | 品牌 | 抢购 |
---|---|---|
STM32F429IGT6 | STMicroelectronics | |
BP3621 | ROHM Semiconductor | |
IPZ40N04S5L4R8ATMA1 | Infineon Technologies | |
BU33JA2MNVX-CTL | ROHM Semiconductor | |
TPS63050YFFR | Texas Instruments | |
ESR03EZPJ151 | ROHM Semiconductor |
AMEYA360公众号二维码
识别二维码,即可关注