当前位置:首页 > 单片机 > 单片机
[导读]在开始之前先解释几个名词:HSI: High Speed Internal clock, 高速内部时钟, STM32F429xx默认为16MHz.HSE: High Speed External clock, 高速外部时钟, 最大可接受50MHz时钟(可外接最大的晶振为26MHz).LSI: Low Speed

在开始之前先解释几个名词:
HSI: High Speed Internal clock, 高速内部时钟, STM32F429xx默认为16MHz.
HSE: High Speed External clock, 高速外部时钟, 最大可接受50MHz时钟(可外接最大的晶振为26MHz).
LSI: Low Speed Internal clock, 低速内部时钟, 32KHz.
LSE: Low Speed External clock, 低速外部时钟, 一般为32.768KHz.
PLL: Phase-Locked loops, 锁相环, 用于倍频时钟.
VCO: Voltage-Controlled Oscillator, 压控振荡器, PLL的组成部分.

AHB: Advanced High Performance Bus, 高性能总线, 用于高性能模块之间的连接, 如CPU, DMA.
APB: Advanced Peripheral Bus, 外设总线, 用于连接低速设备, 如UART, Timer.
STM32有两条APB总线, APB1和APB2, APB2的工作频率大于APB1.
APB2最高工作频率为84MHz, APB1最高工作频率为42MHz, AHB最高工作频率同系统时钟, 168MHz.

SYSCLK: 系统时钟.可被HSI, HSE, Main PLL直接驱动, 最大168MHz.
HCLK: CPU, AHB, DMA, 存储器的时钟, 经AHB预分频器得到.
PCLK1: APB1时钟.
PCLK2: APB2时钟.

下图是STM32时钟树的一部分, 这里注要研究一下STM32F4系统时钟和PLL配置相关的东西.

从图中可以看出,HSI和HSE可以直接向SYSCLK提供时钟(红线), 它们经过一个预分频器/M(绿色方框)后向PLL提供时钟, 同时这个时钟(蓝线)也提供给PLLI2S和PLLSAI(图中未标出).
从VCO倍频出来后的时钟一路经过预分频器 /P 就是PLLCLK(紫色),可以提供给系统时钟SYSCLK.
一路经过预分频器 /Q 后就是PLL48CK(黄色线),这个时钟提供给USB OTG FS, SDIO, 一般这个时钟需要固定48MHz.
水绿色方框里的xN 是VCO倍频的倍数,VCO输出的频率为HSE/HSI的频率经过 /M 分频后的数值乘以N.
接下来看一下ST固件库中提供的PLL配置函数:

12345
voidRCC_PLLConfig(uint32_tRCC_PLLSource,uint32_tPLLM,uint32_tPLLN,uint32_tPLLP,uint32_tPLLQ);

RCC_PLLSource为PLL的时钟源选择, 可选择为RCC_PLLSource_HSE或者RCC_PLLSource_HSI.
这里的PLLM, PLLN, PLLP, PLLQ便指的是上述的几个分频器的分频因子.
并且这些分频因子取值是有限制如下:
2 <= PLLQ <= 15
2 <= PLLM <= 63
192 <= PLLN <= 432
PLLP 只能是2, 4, 6, 8其中之一.
其中PLLN就是PLL的倍频倍数N.
并且, PLL之后得到的频率不得超过器件的限制频率.
举个实际的例子, 外部晶振为8MHz, 我们想让CPU运行于168MHz, 该怎么配置?
因为PLLM最小只能是2, 所以选择PLLM为2.
这里8MHz的HSE被PLLM二分频后只有4MHz了.
PLLP最小也只能是2, 我们所需要的SYSCK为168MHz, 所以从VCO出来的频率为168 * 2 = 336MHz.
则倍频倍数N为336 / 4 = 84, 所以PLLN为84.
PLLQ是USB OGT FS的时钟, 固定为48MHz, 所以预分频因子为336 / 48 =7.
则PLL配置函数应该为:

1
RCC_PLLConfig(RCC_PLLSource_HSE,2,84,2,7);

当然只使用这一句就不可能让PLL工作的, 还需要配合其它配置才行.

(全文完)


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式开发中,STM32的时钟系统因其灵活性和复杂性成为开发者关注的焦点。然而,看似简单的时钟配置背后,隐藏着诸多易被忽视的陷阱,轻则导致系统不稳定,重则引发硬件损坏。本文从时钟源选择、PLL配置、总线时钟分配等关键环...

关键字: STM32 时钟系统

好,有了CPU、存储器、总线以及外设,我们把它们有机地组合封装在一起,再把各个外设、总线的信号,以及供电和地通过引脚引出来,这就是一片完整的单片机芯片。等等,要让单片机跑起来似乎还少了些什么?对,还有时钟!

关键字: 时钟系统 单片机 CPU

基于ARM® Cortex®-M4的STM32F4 MCU系列采用了意法半导体的NVM工艺和ART Accelerator™,在高达180 MHz的工作频率下通过闪存执行时其处理性能达到225 DMIPS/608 Cor...

关键字: stm32f4 ARM

stm32f4和f1都有哪些区别?除了需要的头文件不一样,管脚配置什么的有区别么?

关键字: stm32f4 f1 比较

STM32F407VET6引脚图及中文资料

关键字: stm32f4 引脚图

比较F1的片子对于F4的RTC来说有很大提升,F4的RTC提供了日历时钟和两个可编程闹钟中断,一个周期性可编程唤醒标志。这样很方便设置系统时间,并不会像F1的RTC那样要自己计算年月日时分秒。F4的RTC是一个独立的BC...

关键字: rtc stm32f4

【实验目的】输出7路占空比不同的PWM信号是各个版本ST库必备的例子。本实验的主要目的不是表现ST芯片PWM功能的强大,而是要完成输出的精确计算。【实验内容】输出7路PWM信号,并用示波器测量输出。【实验原理】1、时

关键字: pwm stm32f4 tim1 信号输出

STM32F4的随机数发生器RNG,以环境噪声为种子,产生32位随机数供主机使用。【主要特性】1、产生32位随机数 2、两次转换时间间隔40PLL48CLK 3、随机数熵检测以发现不正常位,以产生稳定序列 3、可被关闭以...

关键字: stm32f4 随机数发生器

书接上文,开始折腾ADC的DMA传输。因为大家都在说DMA,就连ST的例子里边也是使用DMA的。 ADC采集到的数据都存储在一个固定的寄存器中。当常规采样方式采样多个通道时候,使用DMA可以较好地避免将采集到的数据...

关键字: adc dma stm32f4 数据传输 采集数据

为了提搞系统的可靠性,STM32F4系列MCU有一个独立看门狗(IWDG)和一个窗口看门狗(WWDG)。今天做的实验是关于独立看门狗的。独立看门狗使用的时钟源是内部低速振荡器LSI。因为LSE可能没接,HSE可能坏点,H...

关键字: iwdg stm32f4 独立看门狗
关闭