你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32】时钟系统RCC

[复制链接]
STMCU-管管 发布时间:2020-9-11 12:32

本文以STM32F103为例,将本人所知的关于STM32的时钟系统的知识点展示出来。


( p: Q1 ?( p8 F' d' a/ {

先贴上STM32F1系列的时钟树


2 H, t6 n4 a- g. q

1.png

( ]# g" P  z# u! Y7 F% B/ Z
1、时钟源
, ^$ Z" v, @9 e1 C" K

由时钟树可以,对于STM32来说,时钟源一共有四个,分别为  LSI 、LSE 、HSE 、HSI。另外一种说法为五个,加上PLL。个人认为,根据上面这个时钟树也可以看出,PLLCLK是HSE或者HSI经过锁相环倍频后的输出时钟信号,并不能说是STM32的时钟源之一,不过可以认为是STM32系统时钟SYSCLK的时钟源之一。

STM32的时钟可分为高速时钟(HSE、HSI、PLL)和低速时钟(LSI、LSE),也可以分为内部时钟(HSI、LSI、PLL)和外部时钟(HSE、LSE)。

根据上图标号顺序来解释各自功能

1、LSI:低速内部时钟,由STM32内部的RC 振荡器产生,频率为 40kHz。担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗(IWDG)和自动唤醒单元提供时钟。! p/ r2 l) f% p5 n/ K
2、LSE:低速外部时钟,接频率为 32.768kHz 的石英晶体。为实时时钟或其他定时功能提供一个低功耗且精确的时钟源。* {/ F) g* j0 n+ b, ]9 I
3、HSE:高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz。2 \, O1 }7 G" K/ ^
4、HSI:高速内部时钟,由STM32内部的RC 振荡器产生,频率为 8MHz,温漂较大,精度不高。
' Y3 W* J: Y6 v; B* u5、PLL:锁相环倍频输出,时钟输入源可选择为 HSI/2、HSE 或者 HSE/2。倍频可选择为2~16 倍,但是其输出频率最大不得超过 72MHz。当HSI被用于作为PLL时钟的输入时,系统时钟能得到的最大频率是36MHz。/ X2 @" P8 h6 R" N( Y' q9 u' I& V
6、MCO:时钟输出。可以用来给外部其他系统提供时钟源。) F+ d' }! b& {! |& b7 Z3 b) y5 r
7、RTCCLK: RTC 时钟源。8 N# x: W6 z7 m8 r9 v3 O' Q1 B
8、OTGFSCLK:USB时钟源。  x3 v3 M0 p8 |3 n1 r# B7 p
9、I2S:音频总线接口I2S的时钟源。I2S的主时钟可以产生所有从8kHz至96kHz之间的标准采样频率,而误差小于0.5%。3 q1 L! a, E: d" r3 X$ {/ T7 D
10、SYSCLK:系统时钟。系统时钟可选择为 PLL 输出、HSI 或者 HSE。最大频率为 72MHz,可超频(不建议)。
' Q$ v9 v+ x2 T9 {- z0 h( O11、AHB:这里所有外设的时钟最终来源都是 SYSCLK。SYSCLK 通过 AHB 分频器分频后送给各模块使用。

除了上述的时钟源以外,还涉及一个以太网的时钟信号,如标号12、13。以太网MAC的时钟(TX、RX和RMII)是由外部PHY提供。

4 v6 v2 v0 t$ L9 k/ |  I' C# D
2、高速外部时钟信号(HSE)
( W) z% d) y' Q3 F

高速外部时钟信号(HSE)由以下两种时钟源产生:

● HSE用户外部时钟2 L7 q% @3 r" a
● HSE外部晶体/陶瓷谐振器

外部时钟源(External clock)

这个模式下需要外部来提供时钟信号,最大为50MHz。如下图的上半部分所示,外部时钟信号(50%占空比的方波、正弦波或- t( B! B" d! D3 e  T( G
三角波)必须连到SOC_IN引脚,同时保证OSC_OUT引脚悬空。

外部晶体 外部晶体/ 陶瓷谐振器(External crystal/ceramic resonator)

这个模式需要外接晶体来为整个系统提供时钟信号,频率范围为 4MHz~16MHz。需要注意的是:为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的振荡器来调整。一般在购买晶振的时候会标注需要多大的起振电容。

2.png

! L4 q8 P% t% j& j& n( T
3、低速外部时钟信号(LSE)8 L8 ~: I6 Y; H( ]6 |

LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。

通HSE一样,具备两种时钟输入模式,具体请参考HSE。


  T( G  U% a2 ^  ^, y" }, p

4、系统时钟(SYSCLK)5 w- t1 a. ], ?/ I  |

系统时钟(SYSCLK)的时钟源有三个

● 高速外部时钟信号(HSE)
  M7 o1 ?+ [8 t4 b* ~: O) ~● 高速内部时钟信号(HSI)5 v) U- M& B; ^$ n; E& z& h
● 锁相环倍频输出(PLL)

系统时钟(SYSCLK)是供 STM32 中绝大部分部件工作的时钟源。通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72MHz。APB1域的最大允许频率是36MHz。

也可以将SYSCLK作为MCO(时钟输出)的时钟源。

注:以下部件的时钟源不来自系统时钟

● Flash存储器编程接口时钟始终是HSI时钟。/ E* |8 |0 b, K' S( {
● 全速USB OTG的48MHz时钟是从PLL得到。为了正常地操作USB全速OTG,应该配置PLL输出72MHz或48MHz。
( }& l! G, s% X; e1 r● I2S2和I2S3的时钟还可以从PLL3 VCO时钟(2xPLL3CLK)得到。; Y) Y! W$ U5 w# H  V2 u! t; S3 K
● 以太网MAC的时钟(TX、RX和RMII)是由外部PHY提供。当使用以太网模块时,AHB时钟频率必须至少为25MHz。


: a. F" J! r2 e1 `& o4 M+ C) Q

5、时钟输出(MCO)  D/ Y' m( X8 U. f+ q4 h5 s

MCO 是 STM32 的一个时钟输出 IO,它可以选择一个时钟信号输出,如下图所示,可以选择为 HSI、HSE、PLL 输出或者系统时钟。这个时钟可以用来给外部其他系统提供时钟源。

+ `- [% U4 m0 U. x% r

6、AHB
4 v, ?/ W+ @+ v5 Q; O* V1 k, g+ }

除了上述的几个部件之外,其余所有的外设时钟源均为AHB时钟提供。


9 j0 R% w! r6 \# _5 B+ g7 t' Y6 H( v& M

4.png


. {: K" Z) V# [0 i1 h+ D' f

RCC通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。ADC时钟由高速APB2时钟经2、4、6或8分频后获得等等。

具体各路时钟信号输出为

①、AHB 总线、内核、内存和 DMA 使用的 HCLK 时钟。
; i  V. @" y$ B' y0 b# _②、通过 8 分频后送给 Cortex 的系统定时器时钟,也就是 systick 了。
( E) u4 y; u5 P) ]- }/ V③、直接送给 Cortex 的空闲运行时钟 FCLK。! l' n9 ~+ j" c
④、送给 APB1 分频器。APB1 分频器输出一路供 APB1 外设使用(PCLK1,最大频率 36MHz),另一路送给定时器(Timer)2、3、4 倍频器使用。. O+ F1 y0 o* m( L  L  k" u
⑤、送给 APB2 分频器。APB2 分频器分频输出一路供 APB2 外设使用(PCLK2,最大频率 72MHz),另一路送给定时器(Timer)1 倍频器使用。

以上便是STM32F1的时钟树,不同的器件的时钟系统基本上大差不差,可能别的器件功能更加强大,会有更多的外设,其时钟源具体请参阅相关的参考文档。

0 _+ \: X- h3 v0 b9 L* \
+ `. g% p" R% s6 @$ I: }, F
3.png
赞 收藏 1 评论0 发布时间:2020-9-11 12:32

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版