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

【经验分享】STM32 时钟

[复制链接]
STMCU小助手 发布时间:2022-6-10 20:01
01. 时钟概述
* [. i; J7 }" ^# T2 S" t. @2 |6 G7 \可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK):! ~- k% g, x+ J" L5 G
● HSI 振荡器时钟* j/ E' R6 }% q3 h) J
● HSE 振荡器时钟$ k- u4 n$ {+ y4 V. e$ C) R
$ _# g$ \- S7 S; ?
● 主 PLL (PLL) 时钟, n& j. ]5 b  G9 H" g% p; _

7 c  k+ u9 @1 v' o& z  p器件具有以下两个次级时钟源:% a2 W9 q$ Q; ]

0 q  l9 S/ J- `& P$ m● 32 kHz 低速内部 RC (LSI RC),该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用于停机/待机模式下的自动唤醒。; u. z* w' c) q& f  `9 V5 g  L
' h' l1 r% y7 j' u/ Z
● 32.768 kHz 低速外部晶振(LSE 晶振),用于驱动 RTC 时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗4 y( @! e/ R) m2 X1 N' f9 H8 u. M
' h, i8 N5 v, I2 q) h0 B
85ZDS_F8SHFEOT22KSW5G2J.png
0 a/ T: T+ n$ j# R. \
& }5 b! W: [4 ]8 {- J) w; _5 ~时钟控制器为应用带来了高度的灵活性,用户在运行内核和外设时可选择使用外部晶振或者使用振荡器,既可采用最高的频率,也可为以太网、USB OTG FS 以及 HS、I2S 和 SDIO等需要特定时钟的外设保证合适的频率
4 E# U2 i  \5 O% {: |- V& m

5 G3 f  [2 ^* p# w0 Y" W可通过多个预分频器配置 AHB 频率、高速 APB (APB2) 和低速 APB (APB1)。AHB 域的最大频率为 168 MHz。高速 APB2 域的最大允许频率为 84 MHz。低速 APB1 域的最大允许频率为 42 MHz。
1 x( U. w# g1 m8 F5 v
8 ^. d1 K% Q. Y, H) b除以下时钟外,所有外设时钟均由系统时钟 (SYSCLK) 提供:- R5 k9 W  t) t* C3 W: ~
● 来自于特定 PLL 输出 (PLL48CLK) 的 USB OTG FS 时钟 (48 MHz)、基于模拟技术的随机数发生器 (RNG) 时钟 (<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。  A2 I+ ?3 O; \
● I2S 时钟* G- X2 z; }2 I5 Y- b

* C+ n# a$ K: r2 V8 l3 v' J要实现高品质的音频性能,可通过特定的 PLL (PLLI2S) 或映射到 I2S_CKIN 引脚的外部时钟提供 I2S 时钟。有关 I2S 时钟频率和精度的详细信息,请参见 第 27.4.4 节:时钟发生器 。
, F7 i5 v  a( Y0 ?( G- L% g7 D● 由外部 PHY 提供的 USB OTG HS (60 MHz) 时钟" G4 f4 s6 y2 ]+ j! C3 V/ Q. N
● 由外部 PHY 提供的以太网 MAC 时钟(TX、RX 和 RMII)。有关以太网配置的更多信息,请参见以太网外设说明中的 第 29.4.4 节: MII/RMII 选择 。当使用以太网时,AHB时钟频率至少应为 25 MHz。
+ ]( s. e8 O: y8 ]& t
8 X2 j3 g: B, b* T( y5 G& b$ g; XRCC 向 Cortex 系统定时器 (SysTick) 馈送 8 分频的 AHB 时钟 (HCLK)。SysTick 可使用此时钟作为时钟源,也可使用 HCLK 作为时钟源,具体可在 SysTick 控制和状态寄存器中配置。8 h  f6 j* H( K

* a2 S& n. A% g1 \4 \' bSTM32F405xx/07xx 和 STM32F415xx/17xx 的定时器时钟频率由硬件自动设置。分为两种情况:' n0 s6 T* A  K& g
+ E1 M  R) s3 s7 L, d3 F; a) B0 O
如果 APB 预分频器为 1,定时器时钟频率等于 APB 域的频率。
: y8 X6 E; v( _/ D, O否则,等于 APB 域的频率的两倍 (×2)。. O, a1 }$ c+ j7 k! _/ K( N; I

5 O) F5 G  \7 N- O: w& v
02. HSE时钟

* ]: w4 M7 l  v3 W6 n* J1 _高速外部时钟信号 (HSE) 有 2 个时钟源:
, p3 c' y% x0 g: j* w
* o  L+ s+ Y' X( H5 g: n● HSE 外部晶振/陶瓷谐振器8 A' j) ^3 O' ]/ s5 h1 i6 h, k6 g1 J
5 }0 x1 ~6 C1 u: l& [# @; B1 f
● HSE 外部用户时钟
" v/ {' o4 e3 R+ v$ c( x+ B: I& \
2 }6 d9 L2 Q% m' d3 I: C谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振稳定时间。负载电容值必须根据所选振荡器的不同做适当调整。
0 q$ f# S- v" T1 P+ o2 H$ f3 [; Q: u3 z: r. S$ ?  F
AU72R]_$LCN7%4V{YA1OONT.png $ ^& S- m2 K+ s- E7 h+ }" X$ t& k
+ H- T  m9 S; A7 N- [: ^( N
外部源(HSE 旁路)
5 k( ^" {% }& [: u( S8 Z
在此模式下,必须提供外部时钟源。此模式通过将 RCC 时钟控制寄存器 (RCC_CR) 中的HSEBYP 和 HSEON 位置 1 进行选择。必须使用占空比约为 50% 的外部时钟信号(方波、正弦波或三角波)来驱动 OSC_IN 引脚,同时 OSC_OUT 引脚应保持为高阻态 (hi-Z)。
9 p4 v0 V+ @% [. U4 ]- R2 L( I; h+ g: T( i1 |1 M
6 y, r! B: d4 {& D$ s# o, |
外部晶振/ 陶瓷谐振器(HSE 晶振)1 o7 _5 ?! W8 @
HSE 的特点是精度非常高。
. B5 q: R; Q$ {4 mRCC 时钟控制寄存器 (RCC_CR) 中的 HSERDY 标志指示高速外部振荡器是否稳定。在启动时,硬件将此位置 1 后,此时钟才可以使用。如在 RCC 时钟中断寄存器 (RCC_CIR) 中使能中断,则可产生中断。: x4 y3 j9 c# X9 E

5 B0 ]5 `+ v5 P! I, cHSE 晶振可通过 RCC 时钟控制寄存器 (RCC_CR) 中的 HSEON 位打开或关闭。' H+ {, _/ w5 ^! [5 E. N' i
0 g. _$ b6 @2 \* {- N

4 B) ?/ {5 E% ?+ U: H6 a+ M4 g2 ]03. HSI时钟

2 h; N  R. w' H) l: L9 e. rHSI 时钟信号由内部 16 MHz RC 振荡器生成,可直接用作系统时钟,或者用作 PLL 输入。HSI RC 振荡器的优点是成本较低(无需使用外部组件)。此外,其启动速度也要比 HSE 晶振块,但即使校准后,其精度也不及外部晶振或陶瓷谐振器。
. c; Y! Z  r$ i! d5 D$ O# K: _$ E' g/ _" t9 r, F* N
' ~/ s+ |$ _; Z. W0 T  A3 o
校准  _$ g% a. E' p$ j
因为生产工艺不同,不同芯片的 RC 振荡器频率也不同,因此 ST 会对每个器件进行出厂校准,达到 T A = 25 °C 时 1% 的精度。
1 _! e7 M0 {3 C/ `9 Q  J
) q8 ~) A6 B/ J& w复位后,工厂校准值将加载到 RCC 时钟控制寄存器 (RCC_CR) 的 HSICAL[7:0] 位中。+ H; ~7 ^( [8 U3 l

* |, k( W1 m* r. C) _如果应用受到电压或温度变化影响,则这可能也会影响到 RC 振荡器的速度。用户可通过RCC 时钟控制寄存器 (RCC_CR) 中的 HSITRIM[4:0] 位对 HSI 频率进行微调。
% ?; ~0 H: L  A$ \
6 N0 F( ?; V$ g. b$ d* wRCC 时钟控制寄存器 (RCC_CR) 中的 HSIRDY 标志指示 HSI RC 是否稳定。在启动时,硬件将此位置 1 后,HSI 才可以使用。
& `7 e- z' k. [* a- \& h1 f8 x9 N
/ A/ j6 N9 P0 f1 a" X. zHSI RC 可通过 RCC 时钟控制寄存器 (RCC_CR) 中的 HSION 位打开或关闭。$ d8 I8 Z) }# `. w# C( E6 i
: z) S2 m! r! T' g$ E0 \( s
HSI 信号还可作为备份时钟源(辅助时钟)使用,以防 HSE 晶振发生故障。$ U4 B8 a5 }5 x2 }
$ Z: Q% a! v' Y, y
04. PLL配置

1 ?; U% s& d1 G/ pSTM32F4xx 器件具有两个 PLL:3 ]/ i9 t3 ~% Y
' s# |6 o6 D+ H1 V8 Y
● 主 PLL (PLL) 由 HSE 或 HSI 振荡器提供时钟信号,并具有两个不同的输出时钟:  H$ ^, P: y( ^/ y: V8 e" Y
— 第一个输出用于生成高速系统时钟(最高达 168 MHz)8 d* Y: v4 q, J& y8 Z$ f6 P- f* i
— 第二个输出用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟 (<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。
/ m% w$ ?, y" N" G7 v! A) Y+ d  K0 U
% g, u" ~: L& t6 F● 专用 PLL (PLLI2S) 用于生成精确时钟,从而在 I2S 接口实现高品质音频性能。* }) A6 V( S6 \4 J5 S! P

$ V3 ~0 W6 G) F; y2 \. I; f由于在 PLL 使能后主 PLL 配置参数便不可更改,所以建议先对 PLL 进行配置,然后再使能(选择 HSI 或 HSE 振荡器作为 PLL 时钟源,并配置分频系数 M、N、P 和 Q)。9 |% ~5 x1 H6 e8 Q: c; z0 Y

$ n2 }/ q5 A. ^; V, S" b3 iPLLI2S 使用与 PLL 相同的输入时钟(PLLM[5:0] 和 PLLSRC 位为两个 PLL 所共用)。但是,PLLI2S 具有专门的使能/禁止和分频系数(N 和 R)配置位。在 PLLI2S 使能后,配置参数便不能更改。& i0 R- w, F7 L6 r6 _( f( Q
' j/ T( I! E7 f) a; T* U) ^8 Y8 W
当进入停机和待机模式后,两个 PLL 将由硬件禁止;如将 HSE 或 PLL(由 HSE 提供时钟信号)用作系统时钟,则在 HSE 发生故障时,两个 PLL 也将由硬件禁止。RCC PLL 配置寄存器 (RCC_PLLCFGR) 和RCC 时钟配置寄存器 (RCC_CFGR) 可分别用于配置 PLL 和 PLLI2S。' q2 c7 G- a+ u% y4 q
9 \' J1 F! ^: z8 n0 E

% T# W; l& k1 r  [( ~" t. h$ H05. LSE时钟. k3 G- Z- o! c$ @' ~# c
LSE 晶振是 32.768 kHz 低速外部 (LSE) 晶振或陶瓷谐振器,可作为实时时钟外设 (RTC) 的时钟源来提供时钟/日历或其它定时功能,具有功耗低且精度高的优点。
& w0 k9 m7 Z7 I- v9 \( |2 Y* H+ T" U( t+ @9 c
LSE 晶振通过 RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSEON 位打开和关闭。
  d! z2 G% b; J5 i- r! V9 N9 B2 E: z" ^- d. f; e
RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSERDY 标志指示 LSE 晶振是否稳定。在启动时,硬件将此位置 1 后,LSE 晶振输出时钟信号才可以使用。如在 RCC 时钟中断寄存器(RCC_CIR) 中使能中断,则可产生中断。+ x' t1 d2 c! I( Q' D

* q6 A; E2 z9 K" p外部源(LSE 旁路)
0 [6 W5 I! f. c; R9 S在此模式下,必须提供外部时钟源,最高频率不超过 1 MHz。此模式通过将 RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSEBYP 和 LSEON 位置 1 进行选择。必须使用占空比约为 50%的外部时钟信号(方波、正弦波或三角波)来驱动 OSC32_IN 引脚,同时 OSC32_OUT 引脚应保持为高阻态 (Hi-Z)。
; ?. _4 V3 G: f3 ^; F( @* a& e
1 u6 `4 j  N" `
06. LSI时钟
* x) H+ z2 F  E  ?
LSI RC 可作为低功耗时钟源在停机和待机模式下保持运行,供独立看门狗 (IWDG) 和自动唤醒单元 (AWU) 使用。时钟频率在 32 kHz 左右。有关详细信息,请参见数据手册的电气特性部分。" R& d2 s& u" j5 U2 Y% o- e& d# t
* M# `, x6 H: j: P
LSI RC 可通过 RCC 时钟控制和状态寄存器 (RCC_CSR) 中的 LSION 位打开或关闭。+ [; B. _2 {' t8 a1 ^
6 E' b, Y. Z, D: b
RCC 时钟控制和状态寄存器 (RCC_CSR) 中的 LSIRDY 标志指示低速内部振荡器是否稳定。在启动时,硬件将此位置 1 后,此时钟才可以使用。如在 RCC 时钟中断寄存器 (RCC_CIR) 中使能中断,则可产生中断。
3 h; A- r7 F: S3 K& {5 Q# u* s$ D2 F6 i
07. 系统时钟 (SYSCLK)选择
! W$ G2 q4 F0 }) |/ c在系统复位后,默认系统时钟为 HSI。在直接使用 HSI 或者通过 PLL 使用时钟源来作为系统时钟时,该时钟源无法停止。
6 f* ^1 E/ `; }* V( D+ c: o5 e
  s; R) D6 \4 L' ?! E1 g只有在目标时钟源已就绪时(时钟在启动延迟或 PLL 锁相后稳定时),才可从一个时钟源切# V/ G4 e. n& C3 P" |* U
换到另一个。如果选择尚未就绪的时钟源,则切换在该时钟源就绪时才会进行。RCC 时钟! n3 T4 T6 j, @% S9 }
控制寄存器 (RCC_CR) 中的状态位指示哪个(些)时钟已就绪,以及当前哪个时钟正充当系' c9 y( s+ I% _: r0 B+ z& ]
统时钟。* A+ l" z* i; g
5 p3 }" E6 Q; Z6 w! o( [5 G
& U8 V! F$ a( h* a; ?

: \# }6 H$ H# v1 ]3 X. X* g
赞 收藏 评论0 发布时间:2022-6-10 20:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

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