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

【经验分享】STM32 时钟

[复制链接]
STMCU小助手 发布时间:2022-3-31 11:00
01. 时钟概述: w$ }% g4 i3 i* N" o
可以使用三种不同的时钟源来驱动系统时钟 (SYSCLK):$ s" ?8 O3 f3 r
7 }' P/ [9 T9 A
● HSI 振荡器时钟
, V% ?/ l5 t2 H' @
: Q0 ]. e0 [2 l8 I● HSE 振荡器时钟6 m3 W& T/ v  r" A' H9 Y( m- U

; F& U: ?  W2 N( ]% E● 主 PLL (PLL) 时钟
. n9 O; @' g( h- `5 Z
. e0 R' T( K  l8 ~9 c# R器件具有以下两个次级时钟源:# J7 o. y: j3 H1 E9 A# E9 f
/ f$ w: ]( j; ]
● 32 kHz 低速内部 RC (LSI RC),该 RC 用于驱动独立看门狗,也可选择提供给 RTC 用于停机/待机模式下的自动唤醒。
) u* L% T' a$ }7 M4 Q  ?+ Q" T* I: m8 \" C9 J8 ~' Z5 i% s" p& ]
● 32.768 kHz 低速外部晶振(LSE 晶振),用于驱动 RTC 时钟 (RTCCLK)对于每个时钟源来说,在未使用时都可单独打开或者关闭,以降低功耗$ }) A9 _1 \" M  I

! R: a6 b7 ]: O$ T3 u/ { 20200829104400421.png
; d1 O0 j# k* }, O* ]4 q0 x4 V" {4 U: `  I6 S0 c8 \( `
时钟控制器为应用带来了高度的灵活性,用户在运行内核和外设时可选择使用外部晶振或者使用振荡器,既可采用最高的频率,也可为以太网、USB OTG FS 以及 HS、I2S 和 SDIO等需要特定时钟的外设保证合适的频率
1 A& D/ t  U# T% f7 d8 M+ K& ~0 w8 m3 Q; n
可通过多个预分频器配置 AHB 频率、高速 APB (APB2) 和低速 APB (APB1)。AHB 域的最大频率为 168 MHz。高速 APB2 域的最大允许频率为 84 MHz。低速 APB1 域的最大允许频率为 42 MHz。
. g' B, q9 l9 i! Z+ C7 _+ X+ s0 e# ?+ O" a- Q
除以下时钟外,所有外设时钟均由系统时钟 (SYSCLK) 提供:
+ B8 U+ n& n& B# l6 X
1 v8 b/ w9 w/ M● 来自于特定 PLL 输出 (PLL48CLK) 的 USB OTG FS 时钟 (48 MHz)、基于模拟技术的随机数发生器 (RNG) 时钟 (<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。6 _7 d. f) Q1 ]2 j6 ~0 Q  y$ m: ]4 h
● I2S 时钟
( c& V+ |$ G* ^5 M+ m3 L& v4 U3 j: u$ y8 P: A* e% l
要实现高品质的音频性能,可通过特定的 PLL (PLLI2S) 或映射到 I2S_CKIN 引脚的外部时钟提供 I2S 时钟。有关 I2S 时钟频率和精度的详细信息,请参见 第 27.4.4 节:时钟发生器 。" U" N# _% W; m( A
● 由外部 PHY 提供的 USB OTG HS (60 MHz) 时钟) C) a  A+ P+ p4 F+ X5 Q/ v% n
● 由外部 PHY 提供的以太网 MAC 时钟(TX、RX 和 RMII)。有关以太网配置的更多信息,请参见以太网外设说明中的 第 29.4.4 节: MII/RMII 选择 。当使用以太网时,AHB时钟频率至少应为 25 MHz。
2 e; o1 Q2 W5 ~! v: T: p
. F, J! a9 }* W, iRCC 向 Cortex 系统定时器 (SysTick) 馈送 8 分频的 AHB 时钟 (HCLK)。SysTick 可使用此时钟作为时钟源,也可使用 HCLK 作为时钟源,具体可在 SysTick 控制和状态寄存器中配置。  T+ |5 }4 C. z- I% F6 J

$ K# v! M8 p/ v% L( j" @. pSTM32F405xx/07xx 和 STM32F415xx/17xx 的定时器时钟频率由硬件自动设置。分为两种情况:
7 G$ ~" w; L/ M+ M; g/ ]
9 y* a9 i. F2 r, K如果 APB 预分频器为 1,定时器时钟频率等于 APB 域的频率。" H; f' M# w% j6 d3 Y9 W. k) r
否则,等于 APB 域的频率的两倍 (×2)。
& D4 x2 t) x. B: U, Q" M! D02. HSE时钟+ z" ?- t9 m- n& m
高速外部时钟信号 (HSE) 有 2 个时钟源:
1 x# G) G; i2 p+ x) ~3 [
2 r) J" P" V5 x& T, C! d● HSE 外部晶振/陶瓷谐振器# h1 P$ I, Q" Q( H3 ]1 w( r

# k. Q7 a5 L2 \5 m( {, ^! c/ ~& H● HSE 外部用户时钟3 V7 f2 X3 Z3 n* |. v
; |. m6 F2 Q' x/ }; I% F
谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振稳定时间。负载电容值必须根据所选振荡器的不同做适当调整。+ N( R2 Z( d# w7 z' B# @
& L# {' n4 t9 u& Z4 l6 [' X- }
6D55CPU[ZVC@~13S7)S7V8O.png ) k( p/ {5 v* E+ Q9 f7 e
; `6 D. w; h( v: ?# _" j  f8 S
外部源(HSE 旁路)- Y4 ~. O( \4 e+ E% a$ ~
1 s: |# h5 [9 D
在此模式下,必须提供外部时钟源。此模式通过将 RCC 时钟控制寄存器 (RCC_CR) 中的HSEBYP 和 HSEON 位置 1 进行选择。必须使用占空比约为 50% 的外部时钟信号(方波、正弦波或三角波)来驱动 OSC_IN 引脚,同时 OSC_OUT 引脚应保持为高阻态 (hi-Z)。
0 }% f7 M+ Q8 @! `; X* h, \$ y0 G' a* j0 W, A2 S, O" I7 I
外部晶振/ 陶瓷谐振器(HSE 晶振): U6 ]3 j. V, \$ S" ?- C( F
% D, i& e: w/ X
HSE 的特点是精度非常高。
% U; x" U& R; C$ A, j/ vRCC 时钟控制寄存器 (RCC_CR) 中的 HSERDY 标志指示高速外部振荡器是否稳定。在启动时,硬件将此位置 1 后,此时钟才可以使用。如在 RCC 时钟中断寄存器 (RCC_CIR) 中使能中断,则可产生中断。0 Y4 i+ P8 t( `& Y+ ?
: G- ^: \' r7 @# `0 W2 v3 Y/ S" X  a! B
HSE 晶振可通过 RCC 时钟控制寄存器 (RCC_CR) 中的 HSEON 位打开或关闭。6 v% g# b6 p+ a3 j( e" ^; F" q

* j6 @8 K  A* p+ ^  B# E& w. U03. HSI时钟
4 c; x7 t6 N+ l& N; |' JHSI 时钟信号由内部 16 MHz RC 振荡器生成,可直接用作系统时钟,或者用作 PLL 输入。HSI RC 振荡器的优点是成本较低(无需使用外部组件)。此外,其启动速度也要比 HSE 晶振块,但即使校准后,其精度也不及外部晶振或陶瓷谐振器。* o: j/ @6 j  t; a- L
/ d- b, v# D- G  P$ }' M5 Q
校准8 w- R/ P1 i1 p- g. b0 K4 E

" ?, e( f  P$ Q2 w% u因为生产工艺不同,不同芯片的 RC 振荡器频率也不同,因此 ST 会对每个器件进行出厂校准,达到 T A = 25 °C 时 1% 的精度。
& y2 w" s$ ]$ o3 k8 t- E- W1 ]2 P: B) q  A- h: H5 a
复位后,工厂校准值将加载到 RCC 时钟控制寄存器 (RCC_CR) 的 HSICAL[7:0] 位中。3 o* W: }$ B( v! r2 K

- p3 f1 }7 }, L' w, b# |  \: W如果应用受到电压或温度变化影响,则这可能也会影响到 RC 振荡器的速度。用户可通过RCC 时钟控制寄存器 (RCC_CR) 中的 HSITRIM[4:0] 位对 HSI 频率进行微调。' N1 A0 B, _8 z. ~# |

7 k( S- {- @4 oRCC 时钟控制寄存器 (RCC_CR) 中的 HSIRDY 标志指示 HSI RC 是否稳定。在启动时,硬件将此位置 1 后,HSI 才可以使用。7 Z- e+ _7 e+ ?8 J( Q& q

- z5 S( v+ w+ ]3 q: THSI RC 可通过 RCC 时钟控制寄存器 (RCC_CR) 中的 HSION 位打开或关闭。
* d5 y( i  b  C2 w: I" l
8 @4 q5 Y5 N7 u0 NHSI 信号还可作为备份时钟源(辅助时钟)使用,以防 HSE 晶振发生故障。
; t+ |- c+ ?8 t$ F- _, U5 s" W$ E* q4 }/ }9 [; Q
04. PLL配置
, o, C/ K% r; i# i& v/ U1 x- WSTM32F4xx 器件具有两个 PLL:& e" R8 D& T$ \! c/ G1 f& b

3 x1 {' u. F! \  i; a- n● 主 PLL (PLL) 由 HSE 或 HSI 振荡器提供时钟信号,并具有两个不同的输出时钟:5 p  J0 `9 ]/ u+ k5 w2 h' S

! ~# [& w& y/ a2 t9 _, A, Q— 第一个输出用于生成高速系统时钟(最高达 168 MHz)
! k- B( @2 k2 j, U& ]3 q/ p# M7 k— 第二个输出用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟 (<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。
+ w% y2 Y8 s2 g9 ~, S
* o3 [- ?/ V% I5 D# F. v0 ~● 专用 PLL (PLLI2S) 用于生成精确时钟,从而在 I2S 接口实现高品质音频性能。' ?8 g: U5 U0 R
1 \3 e2 v) ~/ G7 x
由于在 PLL 使能后主 PLL 配置参数便不可更改,所以建议先对 PLL 进行配置,然后再使能(选择 HSI 或 HSE 振荡器作为 PLL 时钟源,并配置分频系数 M、N、P 和 Q)。
$ i1 J; q8 R5 N% p' k5 b" F: V2 @
% \; Z1 ?. v* G3 w2 s7 B. @PLLI2S 使用与 PLL 相同的输入时钟(PLLM[5:0] 和 PLLSRC 位为两个 PLL 所共用)。但是,PLLI2S 具有专门的使能/禁止和分频系数(N 和 R)配置位。在 PLLI2S 使能后,配置参数便不能更改。
7 u& V: H. S  h% }9 X1 V
  G2 w! A- S$ S% i当进入停机和待机模式后,两个 PLL 将由硬件禁止;如将 HSE 或 PLL(由 HSE 提供时钟信号)用作系统时钟,则在 HSE 发生故障时,两个 PLL 也将由硬件禁止。RCC PLL 配置寄存器 (RCC_PLLCFGR) 和RCC 时钟配置寄存器 (RCC_CFGR) 可分别用于配置 PLL 和 PLLI2S。
& n2 _. @* @# O
! ^& ~$ K; O$ o' l, O05. LSE时钟
+ o8 Q# X; a8 W
LSE 晶振是 32.768 kHz 低速外部 (LSE) 晶振或陶瓷谐振器,可作为实时时钟外设 (RTC) 的时钟源来提供时钟/日历或其它定时功能,具有功耗低且精度高的优点。
3 Z+ X9 A7 d8 P# C* ^1 U6 T; {0 e7 X
LSE 晶振通过 RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSEON 位打开和关闭。
$ x) o, U; j; C5 m, B  z- m2 k! o" k5 t3 P$ K4 t, R- S
RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSERDY 标志指示 LSE 晶振是否稳定。在启动时,硬件将此位置 1 后,LSE 晶振输出时钟信号才可以使用。如在 RCC 时钟中断寄存器(RCC_CIR) 中使能中断,则可产生中断。
; f6 ^; b! }! I" j
; E- f& @$ w7 r/ ^9 g外部源(LSE 旁路)
$ V6 H- T! [* P  [在此模式下,必须提供外部时钟源,最高频率不超过 1 MHz。此模式通过将 RCC 备份域控制寄存器 (RCC_BDCR) 中的 LSEBYP 和 LSEON 位置 1 进行选择。必须使用占空比约为 50%的外部时钟信号(方波、正弦波或三角波)来驱动 OSC32_IN 引脚,同时 OSC32_OUT 引脚应保持为高阻态 (Hi-Z)。  R) l: [% p% {" E
( Q/ ^1 t) i/ w. M
06. LSI时钟
7 X3 b) j' h+ l& r7 T' F' hLSI RC 可作为低功耗时钟源在停机和待机模式下保持运行,供独立看门狗 (IWDG) 和自动唤醒单元 (AWU) 使用。时钟频率在 32 kHz 左右。有关详细信息,请参见数据手册的电气特性部分。. @6 Y/ }# X+ e+ T, Y/ g

$ `" ?' n( q3 }+ j( c. m% m9 hLSI RC 可通过 RCC 时钟控制和状态寄存器 (RCC_CSR) 中的 LSION 位打开或关闭。2 [$ b' Q% c6 V' P

& X9 w2 D. {' W, X: yRCC 时钟控制和状态寄存器 (RCC_CSR) 中的 LSIRDY 标志指示低速内部振荡器是否稳定。在启动时,硬件将此位置 1 后,此时钟才可以使用。如在 RCC 时钟中断寄存器 (RCC_CIR) 中使能中断,则可产生中断。9 z% P% `7 w, P- a& A0 n; F
& m  O6 O# S9 A4 ]3 }/ O2 T# T! _
07. 系统时钟 (SYSCLK)选择3 n% U% E3 j- K: d
在系统复位后,默认系统时钟为 HSI。在直接使用 HSI 或者通过 PLL 使用时钟源来作为系统时钟时,该时钟源无法停止。" A& ?5 t) f& i% _
! z- I3 q3 [  o7 n/ U. [+ @+ \) c
只有在目标时钟源已就绪时(时钟在启动延迟或 PLL 锁相后稳定时),才可从一个时钟源切# I' I2 S! V, c3 x, C
换到另一个。如果选择尚未就绪的时钟源,则切换在该时钟源就绪时才会进行。RCC 时钟
7 r! Q$ N7 k# S控制寄存器 (RCC_CR) 中的状态位指示哪个(些)时钟已就绪,以及当前哪个时钟正充当系
% U! l" T# y& F' N0 @4 e统时钟。
2 q0 t- `; g3 k: J1 @- B# A
! N& [1 ]" w  }/ X4 D3 y1 Y
' E2 i. B2 W+ r( u1 `7 V
赞 收藏 评论0 发布时间:2022-3-31 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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