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

【经验分享】STM32 时钟

[复制链接]
STMCU小助手 发布时间:2022-3-31 11:00
01. 时钟概述; p6 u5 J4 L" G& ?
可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK):
# M- k/ |2 {& m  H  Z/ k# ~
! L) G' C5 y9 E● HSI 振荡器时钟
; I3 ^  b% y$ q0 _( K- g" M8 D$ Y- Y& U7 v, C" C$ p' d
● HSE 振荡器时钟
4 {, g  z8 d3 x% m- k9 X% W6 A' m' ]% J9 `+ x) Z
● 主 PLL (PLL) 时钟
4 {* h' I+ L; c/ x# c, v* M% m7 A  q
器件具有以下两个次级时钟源:) q/ I' E" \( W* ^- R3 ~& U8 Q
( c& m& P9 i  b; g
● 32 kHz 低速内部 RC (LSI RC),该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用于停机/待机模式下的自动唤醒。
: w8 n1 k9 Z  l$ W
5 y. w2 h/ ~# [9 m, H, [● 32.768 kHz 低速外部晶振(LSE 晶振),用于驱动 RTC 时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗
* C  V, [. A& R8 z; o3 |) O( Z" E
5 m0 L. w$ w$ Y( _! p) U% c 20200829104400421.png
& W% |8 X$ K5 {4 N( W6 Y" s! j1 Y0 ?" U  w6 e+ v
时钟控制器为应用带来了高度的灵活性,用户在运行内核和外设时可选择使用外部晶振或者使用振荡器,既可采用最高的频率,也可为以太网、USB OTG FS 以及 HS、I2S 和 SDIO等需要特定时钟的外设保证合适的频率, {. u! Z! A0 a. F0 g
9 d# `# f+ {5 C" w, s
可通过多个预分频器配置 AHB 频率、高速 APB (APB2) 和低速 APB (APB1)。AHB 域的最大频率为 168 MHz。高速 APB2 域的最大允许频率为 84 MHz。低速 APB1 域的最大允许频率为 42 MHz。+ O; J8 g: O& C3 g

5 d) _& i7 X7 r: F  g除以下时钟外,所有外设时钟均由系统时钟 (SYSCLK) 提供:
. @8 b/ p( ]* E! l! a1 _; M, `" o5 |) t! f) [4 x* z. E7 U
● 来自于特定 PLL 输出 (PLL48CLK) 的 USB OTG FS 时钟 (48 MHz)、基于模拟技术的随机数发生器 (RNG) 时钟 (<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。0 V% J! j. d1 S
● I2S 时钟
6 \( h6 q& X- R4 @' s
- z5 e; C% p  [/ h# V: l要实现高品质的音频性能,可通过特定的 PLL (PLLI2S) 或映射到 I2S_CKIN 引脚的外部时钟提供 I2S 时钟。有关 I2S 时钟频率和精度的详细信息,请参见 第 27.4.4 节:时钟发生器 。- Y7 y, A3 u" I1 i6 k9 g0 }
● 由外部 PHY 提供的 USB OTG HS (60 MHz) 时钟! q, I0 E! r  |  M  J( _5 L
● 由外部 PHY 提供的以太网 MAC 时钟(TX、RX 和 RMII)。有关以太网配置的更多信息,请参见以太网外设说明中的 第 29.4.4 节: MII/RMII 选择 。当使用以太网时,AHB时钟频率至少应为 25 MHz。
5 d+ }) m# J* B( f
! z% s& O% S: c& Z7 W0 J) i( v, dRCC 向 Cortex 系统定时器 (SysTick) 馈送 8 分频的 AHB 时钟 (HCLK)。SysTick 可使用此时钟作为时钟源,也可使用 HCLK 作为时钟源,具体可在 SysTick 控制和状态寄存器中配置。
& j4 a$ B9 r9 w$ r, r! E+ l+ l7 M7 d
STM32F405xx/07xx 和 STM32F415xx/17xx 的定时器时钟频率由硬件自动设置。分为两种情况:
; X! E7 r" J6 ?" Z5 V' \$ t6 h$ X7 }+ p, q3 r# U2 I; l
如果 APB 预分频器为 1,定时器时钟频率等于 APB 域的频率。) Z! ?4 z( d& i( O. R2 \' b
否则,等于 APB 域的频率的两倍 (×2)。5 g& P4 Q) \" ^8 l$ n" ~5 _
02. HSE时钟) k; R6 I& g, V! P6 A
高速外部时钟信号 (HSE) 有 2 个时钟源:
$ h4 F. A' s; E) H$ ?' R" |8 Z% f' x4 y& \" j
● HSE 外部晶振/陶瓷谐振器
8 U  n) A! O, ?+ z6 X
1 a8 ]+ e$ M/ f● HSE 外部用户时钟
, o$ C) A4 T2 A& c  e5 v3 P# k) c6 w/ Q7 a: l7 B7 c
谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振稳定时间。负载电容值必须根据所选振荡器的不同做适当调整。6 l$ |3 a" u5 s- p7 F" w9 Q
% `5 @6 ~" b6 N% g8 y8 h/ K
6D55CPU[ZVC@~13S7)S7V8O.png . H6 H" D% w$ G7 L4 `- m9 Y- }8 g

$ m! q5 v' m. P外部源(HSE 旁路)1 b- ?& x( M# k& D  D% H; ~

+ k# k- t: W: T' Q+ ?在此模式下,必须提供外部时钟源。此模式通过将 RCC 时钟控制寄存器 (RCC_CR) 中的HSEBYP 和 HSEON 位置 1 进行选择。必须使用占空比约为 50% 的外部时钟信号(方波、正弦波或三角波)来驱动 OSC_IN 引脚,同时 OSC_OUT 引脚应保持为高阻态 (hi-Z)。! r0 x; K# `2 O5 {, R* k

1 i4 u9 N) k( E0 X+ g. n  m外部晶振/ 陶瓷谐振器(HSE 晶振)- P8 g) i+ F( M+ {

% Q6 z' r% ]8 \HSE 的特点是精度非常高。1 I# a  }8 n9 ?) k: w
RCC 时钟控制寄存器 (RCC_CR) 中的 HSERDY 标志指示高速外部振荡器是否稳定。在启动时,硬件将此位置 1 后,此时钟才可以使用。如在 RCC 时钟中断寄存器 (RCC_CIR) 中使能中断,则可产生中断。8 Z5 U1 E8 h9 H7 U) {
8 ?: A2 j( J- F+ r8 t( U
HSE 晶振可通过 RCC 时钟控制寄存器 (RCC_CR) 中的 HSEON 位打开或关闭。$ _2 l% ?! Y! ]1 h: T! i3 @" S
1 V; |- a, ^  i% X5 w1 d
03. HSI时钟
* b* W4 }5 i  [HSI 时钟信号由内部 16 MHz RC 振荡器生成,可直接用作系统时钟,或者用作 PLL 输入。HSI RC 振荡器的优点是成本较低(无需使用外部组件)。此外,其启动速度也要比 HSE 晶振块,但即使校准后,其精度也不及外部晶振或陶瓷谐振器。" T$ j5 w+ A1 o7 `
+ z1 t- H6 M' Z- V/ v1 X" N
校准1 J- Y! r: |* b& w& E5 N

! y* C' j  j) N! N1 L/ d因为生产工艺不同,不同芯片的 RC 振荡器频率也不同,因此 ST 会对每个器件进行出厂校准,达到 T A = 25 °C 时 1% 的精度。
' q4 m* G4 X* ^2 D3 U6 b1 c4 X
1 Z! N: P) d! O+ q% ~复位后,工厂校准值将加载到 RCC 时钟控制寄存器 (RCC_CR) 的 HSICAL[7:0] 位中。
; {8 }" w8 _8 C1 Q( K  C2 b% J7 a* z; i0 x3 c( D
如果应用受到电压或温度变化影响,则这可能也会影响到 RC 振荡器的速度。用户可通过RCC 时钟控制寄存器 (RCC_CR) 中的 HSITRIM[4:0] 位对 HSI 频率进行微调。
! |) [; N. T! B+ @$ B( e  ?1 @
! R( r6 i" n& x0 Q+ BRCC 时钟控制寄存器 (RCC_CR) 中的 HSIRDY 标志指示 HSI RC 是否稳定。在启动时,硬件将此位置 1 后,HSI 才可以使用。" _0 T3 ~) g$ x; m( m9 v% u4 G
$ Y' C) F$ C+ [& c9 z. N. j& ?! K! J
HSI RC 可通过 RCC 时钟控制寄存器 (RCC_CR) 中的 HSION 位打开或关闭。
! L# A7 T7 ~7 c" V& u1 q7 {/ o' o. y/ s. S9 D
HSI 信号还可作为备份时钟源(辅助时钟)使用,以防 HSE 晶振发生故障。% G. N2 j6 F, O. w

$ d7 n5 Z( ~, J5 u' Q1 |* h04. PLL配置
0 m% y2 E. C2 NSTM32F4xx 器件具有两个 PLL:1 N1 C2 U  j! V  Y) K  N/ b* |

6 O3 m9 j, r+ P+ P$ L) S3 i6 H- s● 主 PLL (PLL) 由 HSE 或 HSI 振荡器提供时钟信号,并具有两个不同的输出时钟:, l$ q& j% f7 h$ s: Y- k; x9 |% W

7 U9 n- }" t8 a, g  X( Y— 第一个输出用于生成高速系统时钟(最高达 168 MHz)4 o1 D" a9 H8 ~7 `
— 第二个输出用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟 (<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。
+ N4 L8 @! y2 c# a0 [
* u' C1 z  f0 n- S& i● 专用 PLL (PLLI2S) 用于生成精确时钟,从而在 I2S 接口实现高品质音频性能。
' K  f, h1 x4 }. z, _( l* m1 v8 [3 x
由于在 PLL 使能后主 PLL 配置参数便不可更改,所以建议先对 PLL 进行配置,然后再使能(选择 HSI 或 HSE 振荡器作为 PLL 时钟源,并配置分频系数 M、N、P 和 Q)。
0 w: P0 m% L5 F% ^) S0 O* {1 L5 s. e2 M/ g) E/ k, a3 w
PLLI2S 使用与 PLL 相同的输入时钟(PLLM[5:0] 和 PLLSRC 位为两个 PLL 所共用)。但是,PLLI2S 具有专门的使能/禁止和分频系数(N 和 R)配置位。在 PLLI2S 使能后,配置参数便不能更改。
$ ~4 u; K+ F$ I; m5 t3 N' {1 J0 m( K% B( i
当进入停机和待机模式后,两个 PLL 将由硬件禁止;如将 HSE 或 PLL(由 HSE 提供时钟信号)用作系统时钟,则在 HSE 发生故障时,两个 PLL 也将由硬件禁止。RCC PLL 配置寄存器 (RCC_PLLCFGR) 和RCC 时钟配置寄存器 (RCC_CFGR) 可分别用于配置 PLL 和 PLLI2S。
" {1 {. z, R% z. U! e( V! f7 S: I" Z: U! u7 g
05. LSE时钟
+ E+ f; j( u$ N* ?/ V5 F
LSE 晶振是 32.768 kHz 低速外部 (LSE) 晶振或陶瓷谐振器,可作为实时时钟外设 (RTC) 的时钟源来提供时钟/日历或其它定时功能,具有功耗低且精度高的优点。
* J( P* m. S) C  w/ P/ [# b- i, U3 o, k8 f
LSE 晶振通过 RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSEON 位打开和关闭。6 X8 G# G# R7 B9 S6 ^

7 b9 H, H, u* f# R' k5 e& GRCC 备份域控制寄存器 (RCC_BDCR) 中的 LSERDY 标志指示 LSE 晶振是否稳定。在启动时,硬件将此位置 1 后,LSE 晶振输出时钟信号才可以使用。如在 RCC 时钟中断寄存器(RCC_CIR) 中使能中断,则可产生中断。/ ~- @/ d2 u3 ]( B/ Q+ F+ X" E
) p8 d* }  S2 [/ T  w; e1 O
外部源(LSE 旁路)1 R$ `% l' e% I+ [( t7 X, L' ]
在此模式下,必须提供外部时钟源,最高频率不超过 1 MHz。此模式通过将 RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSEBYP 和 LSEON 位置 1 进行选择。必须使用占空比约为 50%的外部时钟信号(方波、正弦波或三角波)来驱动 OSC32_IN 引脚,同时 OSC32_OUT 引脚应保持为高阻态 (Hi-Z)。& J, _* `4 _* C' z0 J% F
1 }* _: y4 w' }
06. LSI时钟) {# x( t5 x0 d) w& N5 r* ?, h
LSI RC 可作为低功耗时钟源在停机和待机模式下保持运行,供独立看门狗 (IWDG) 和自动唤醒单元 (AWU) 使用。时钟频率在 32 kHz 左右。有关详细信息,请参见数据手册的电气特性部分。
% s0 K% P0 g, f; k) W2 b
, ~! r$ ^, s! Q8 L' BLSI RC 可通过 RCC 时钟控制和状态寄存器 (RCC_CSR) 中的 LSION 位打开或关闭。6 k: k* p( Y( U( H" j. Z# S) T
, x# ]  z! J% f
RCC 时钟控制和状态寄存器 (RCC_CSR) 中的 LSIRDY 标志指示低速内部振荡器是否稳定。在启动时,硬件将此位置 1 后,此时钟才可以使用。如在 RCC 时钟中断寄存器 (RCC_CIR) 中使能中断,则可产生中断。7 S& |* {" E) n
) }5 ]7 O. L  t
07. 系统时钟 (SYSCLK)选择- M1 U% f# ~7 v$ F
在系统复位后,默认系统时钟为 HSI。在直接使用 HSI 或者通过 PLL 使用时钟源来作为系统时钟时,该时钟源无法停止。
, t/ _6 R9 v+ Z
% M3 H( Q2 k$ A5 b( {7 {只有在目标时钟源已就绪时(时钟在启动延迟或 PLL 锁相后稳定时),才可从一个时钟源切! h+ `  N! |" H
换到另一个。如果选择尚未就绪的时钟源,则切换在该时钟源就绪时才会进行。RCC 时钟
7 \9 b) U0 z( ]控制寄存器 (RCC_CR) 中的状态位指示哪个(些)时钟已就绪,以及当前哪个时钟正充当系
- J9 r1 V* L, T  I- N% @1 B3 O统时钟。
: i$ d3 U% M0 l" H  s7 P
7 V4 {$ C2 k0 ~7 w9 }$ y! ?6 q1 X
收藏 评论0 发布时间:2022-3-31 11:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版