STM32(3)-了解时钟树结构及时钟总线原理

使用STM32时,总是离不开时钟,那么很有必要对时钟树进行一个深入的了解,便于掌握STM32芯片的内部运行原理。


一、时钟源介绍

在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。这里我以STM32F103系列为例:

①HSE:高速外部时钟

HSE(High Speed External):高速外部时钟源,通常为晶振。HSE也是STM32芯片的默认时钟源之一,其频率范围可以在1MHz到25MHz之间。HSE可以作为系统时钟和PLL锁相环输入,还可以经过128分频后输入给RTC。

②HSI:高速内部时钟

高速内部时钟源(Internal),时钟频率为8MHz。HSI是STM32芯片默认的时钟源之一,因为其时钟稳定性和精度较高。可作为系统时钟或PLL锁相环的输入。

③LSI:低速内部时钟

RC振荡器,频率为40kHz。LSI通常用作RTC(实时时钟)的时钟源。可供独立看门狗和RTC使用,并且独立看门狗只能使用LSI时钟。

④LSE:低速外部时钟

接频率为32.768kHz的石英晶体。LSE也用作RTC的时钟源,因为其频率非常稳定。供RTC使用。

注:这里为什么是32.76kHz的时钟?32.768kHz的晶振是因为它是2的15次方的近似整数倍,即32768 ≈ 2^15。这样的频率选择与RTC的设计有关,因为RTC需要一个相对精确的时钟源来保证时间的准确性。使用32.768kHz的晶振可以让RTC使用低功耗的时钟源,并且可以通过使用2的幂次方来处理时间,方便编程和计算。因此,32.768kHz的晶振保证了RTC的运行,同时满足功耗小、性能稳定的特点。

⑤PLL:锁相环倍频输出

其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

锁相环的作用包括:
时钟信号重构:锁相环可以将不稳定的输入时钟信号转换为稳定的输出时钟信号,以提高系统时钟的精度和稳定性。
时钟信号分频:锁相环可以将高频率的时钟信号按照一定比例分频,以适应不同的系统时钟需求。
时钟信号倍频:锁相环可以将低频率的时钟信号按照一定比例倍频,以适应高速系统时钟的需求。
频率合成:锁相环可以将不同频率的输入信号合成为一种新的频率信号,以适应某些特定的应用,例如无线通信。
相位检测:锁相环可以检测输入信号的相位差异,并将其与参考信号的相位进行比较,以实现相位同步。

扫描二维码关注公众号,回复: 15297539 查看本文章

二、一些时钟的概念

1.系统时钟SYSCLK

SYSCLK是指系统时钟,是指计算机系统的主时钟信号,也是整个系统的主时钟。SYSCLK信号的频率决定了整个系统的运行速度和性能。
在微处理器系统中,SYSCLK信号通常由晶体振荡器或其他外部时钟源提供,然后经过分频、倍频等处理后,作为CPU、内存、外设等各个部分的时钟信号。SYSCLK信号的频率越高,系统运行速度越快,但同时也会增加功耗和热量等问题。
在不同的计算机系统中,SYSCLK信号的频率可能会有所不同,通常以MHz为单位。例如,常见的PC机系统时钟频率为4-5GHz左右,而嵌入式系统中的SYSCLK频率可能只有几十MHz。

2.RTC时钟

RTC时钟是指实时时钟(Real-Time Clock),是计算机系统中一种独立于CPU的时钟源,用于提供系统的实时时钟功能。与SYSCLK不同,RTC时钟一般不受系统运行状态的影响,即使系统处于关机状态,RTC时钟也可以继续运行。
RTC时钟通常由一个独立的晶体振荡器提供,其频率通常为32.768kHz。RTC时钟的精度和稳定性很高,可以保证系统的时间精度和稳定性。
在计算机系统中,RTC时钟通常用于提供实时时钟功能,如系统时钟、日历、闹钟等功能。例如,在电源管理中,RTC时钟可以用来控制系统的唤醒和休眠,以延长电池寿命;在日历功能中,RTC时钟可以记录系统的时间和日期,以便用户查看和管理;在闹钟功能中,RTC时钟可以用来触发系统的闹钟提醒功能。

3.看门狗时钟

看门狗时钟是一种硬件定时器,它在计算机系统中用于监控系统的运行状态,当系统出现异常或死锁等情况时,看门狗时钟可以重启系统以恢复正常运行。看门狗时钟通常由一个独立的计数器和一个独立的晶体振荡器组成,其工作原理类似于定时器。

在计算机系统中,看门狗时钟通常由操作系统或应用程序控制,以便在出现系统故障时及时重启系统。看门狗时钟的计数器通常设定一个特定的时间间隔,如几分钟或几秒钟,当系统正常运行时,操作系统或应用程序需要在规定的时间内定期向看门狗时钟发送一个信号,以重置看门狗时钟的计数器,防止系统被误认为发生故障而自动重启。如果系统出现异常或死锁等情况,看门狗时钟的计数器会在规定时间内未接收到重置信号,系统会被自动重启以恢复正常运行。

看门狗时钟的应用场景比较广泛,例如在嵌入式系统、服务器等应用中,看门狗时钟可以用于监控系统的运行状态,防止系统由于软件故障、硬件故障等原因导致系统崩溃或死机。同时,看门狗时钟也可以用于保护系统的安全性,防止系统被黑客攻击等不安全因素导致系统故障。

4.Systick滴答定时器

Systick是一种硬件定时器,是ARM Cortex-M系列芯片中的一种系统时钟,它提供了一个简单的计时器,用于计算器芯片的时间。所以可以说Systick属于时钟的一种。

Systick计时器由计数器和中断控制器组成,它的计数器可以在芯片上电后自动开始计数,时间间隔由寄存器SYST_RVR来设置,一般设置为1ms。当计数器达到设定值时,Systick计时器就会触发一个中断,通过中断处理函数可以实现各种定时任务。

Systick计时器可以用于实现系统的定时、延时、节拍等功能,在嵌入式系统中应用广泛。利用Systick计时器可以实现多个任务的时间共享,提高系统的效率和稳定性。同时,Systick计时器还可以用于系统时钟的校准和校验,保障系统的精度和稳定性。

因此,虽然Systick计时器本身不是一个时钟,但它可以作为系统时钟的一种实现方式,提供定时和中断服务,实现时间计数,从而帮助系统完成各种任务和功能。

三、时钟树解析

在这里插入图片描述
如图,我将分块进行说明:

说明:在STM32系列芯片的时钟树中,最左边的一条竖线通常是代表芯片的时钟输入源,也称为时钟源输入或者时钟源选择器。这条竖线上连接了多个时钟输入源,包括内部RC振荡器、内部HSI时钟、外部晶体振荡器、外部时钟输入等。
在STM32芯片初始化时,需要根据具体应用需求选择合适的时钟输入源,并通过时钟源选择器来切换时钟输入源。通过时钟源选择器的配置,可以实现选择合适的时钟源、控制时钟源的开关和切换、校准时钟源、优化时钟源的稳定性等功能。

1.MCO

MCO是STM32系列芯片中的一个时钟输出引脚,全称为Master Clock Output。MCO引脚可以将芯片内部的时钟信号输出到外部,用于连接到其他芯片或模块中,例如外部时钟源、LCD显示器等。

MCO引脚可以输出多种类型的时钟信号,包括系统时钟、PLL时钟、HSE时钟等。输出的时钟信号频率和类型可以通过寄存器设置来控制,以满足不同的应用需求。同时,MCO引脚还可以通过GPIO复用功能来使用,实现其他功能,如输入捕获、输出比较等。在这里插入图片描述

2.RTC时钟

从图中线的流向可知,RTC时钟来源可以是内部低速的LSI时钟,外部低速LSE时钟(32.768K),还可以通过HSE的128分频后得到。
在这里插入图片描述

3.USB时钟

STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源,该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是当需要使用USB模块时,PLL必须使能,并且PLLCLK时钟频率配置为48MHz或72MHz。
在这里插入图片描述

4.SYSCLK系统时钟

它是STM32中绝大部分部件工作的时钟源。它的时钟来源可以由HSI、HSE、PLLCLK提供,选择STM32F1这种高级芯片希望有一个比较大的时钟频率,因此选择PLLCLK作为系统时钟。PLLCLK又是从HSE或HSI经过PLL倍频得到。
假如PLLSRC的时钟来源由HSE提供,开发板使用的HSE是8M晶振,经过PLLMUL的9倍频后可以输出72M时钟频率给PLLCLK
如果我们选择的HSE是PLL的时钟源,PLL是SYSCLK的时钟源,即SYSCLK为72MHz
在这里插入图片描述

5.外设时钟

所有外设的时钟最终来源都是 SYSCLK。SYSCLK通过AHB分频器分频后送给各模块使用。这些模块包括:
①AHB总线、内核、内存和DMA使用的HCLK时钟。
②通过8分频后送给Cortex系统定时器时钟,即SysTick。
③直接送给Cortex的空闲运行时钟FCLK。
④送给APB1分频器。APB1分频器输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)1、2倍频使用。
⑤送给APB2分频器。APB2分频器分频输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。
⑥送给ADC分频器。ADC分频器经过2、4、6、8分频后送给ADC1/2/3使用,ADC最大频率为14M。
⑦二分频后送给SDIO使用。

其中需要理解的是APB1和APB2的区别,APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、USART2、USART3等。APB2上面连接的是高速外设包括USART1、SPI1、Timer1、ADC1、ADC2、GPIO等。
在时钟树图中我们还可以得到一个重要信息,大多数有关时钟输出部分都有一个使能控制,比如AHB总线、APB1外设、APB2外设、内核时钟等。当需要使用某个时钟的时候一定要开启它的使能,否则将不工作。
在这里插入图片描述

总结

经过介绍,基本把时钟树五个部分的结构进行了说明,因此我们可以看出,正是通过对时钟树不同时钟源的配置才使得单片机得以按照想要的频率工作,在使用STM32CUBEMX时,配置时钟树也是重要的一环。了解了它之后,对于单片机的频率控制将更加得心应手。下一篇文章,我将分析一下位带操作。

猜你喜欢

转载自blog.csdn.net/qq_53092944/article/details/130642901
今日推荐