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

【经验分享】STM32F767时钟树分析

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。( [9 R3 L6 H7 G3 q' Y: V4 O
1、STM32F7 的时钟系统图9 f6 s5 L( w/ a0 J# {$ Z' c& s

5 Z+ X$ g3 ]/ k5 Q6 ~7 V; s
20191110182213990.png
6 H) A# s! I2 X! A$ U0 b( d% g$ [

/ E' j4 a9 h) R+ a& D- T) Z' l2、STM32F7 时钟源: s, K* h- X  p' A2 r- U/ j( I# V
在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:
& R' S5 @: _% M简介如下:- Q3 j7 A. y8 v0 M. s
20191110183016302.png

# Q& Q8 E' P8 C, r/ _* H5 w
9 Q5 `  D- ~  ?" B& a5 ^9 a' ^; T
2019111018390151.png

- U- F( p9 K$ w0 l. ]9 f; ^# C* C) ^/ W$ l$ I2 _
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。, q' U, ~5 v! K
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
' q4 C* i& u+ a% l7 Y  W' r1 F: }3 E; x) p3 ?) J
3、STM32F7 系统时钟: Q* [8 E, @! |+ \& j7 G- H
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。
& W7 O" }" {! Y, q; X* P5 c
  z  `8 l5 O" K. g8 E下图是主PLL的时钟图。
5 i& Z* z. K. Q. O1 |+ L7 ~: V
' e; k! s6 B$ T. O" ?# ?( s$ J
20191110184516997.png

% Q0 m: e8 N- ]6 L  h' L, h6 O, ]$ j/ B. }
  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。2 ~0 l4 `) Y% a/ R4 w

0 J" e+ t# D+ X4 ~5 ^6 X  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:
, h5 B) t3 H* w' e9 `) i" s# E3 @0 Q) k2 K. L
PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz
7 ^3 I) Z% Z' ?. t2 P/ }
/ A! O+ K. e% g) u9 k- Y这个 216MHz 就是我们最高的系统时钟。
3 S" ~5 J% N- P) \' C, f( j; B+ s8 y5 Z: X! N. y- l8 ]
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。/ a3 L; U' j% a  Z  Q1 [' V

  M9 {/ @' w+ C正点原子的实验基本都是采用这样的配置。5 b3 U2 X3 c! q7 \

8 q! i9 @8 C6 }: H$ A0 b  v4、STM32F7 常用时钟
% J6 [" {; y) D: X! V4 F5 }. ]A ~ R 表示上图中标示的地方。
# D+ h3 y" Y0 c" c3 N, n  S% t
4 r1 Q+ I! B% V0 ?A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。
) t/ Y/ {8 d/ n1 ^# ^/ W5 O
; [  I- ?9 s. X8 u3 ?B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。9 n" _2 z3 ]* o. C1 d& v7 i

- v; V: T/ o8 ]+ |. `9 jC、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。; J* e$ F( @* r
( b/ H$ }7 X- b3 |- g8 U& o1 X1 `
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。9 \3 \' Z, y6 x/ Q# U8 K
4 l, _! _& |, [6 j
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。; P# g* L) ^; c/ q* j3 U  ~
& R) V- E. q8 I; E/ n( \' R
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
8 r, f( P1 k, M# ]8 x0 T0 W
. \( M+ K4 B9 `: e7 }/ OG、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。
# I1 e# q7 v' d) s% H6 h0 [1 n
5 L, U$ x+ A- k9 |* K5 c; w0 iH、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。; Z' l6 @4 w0 E3 F' ^7 Z

3 ^$ E7 U( U) e0 ?  WI、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。0 u( Z6 D. @- ?. G' I8 W

2 ~5 @* J- t% E% ?7 W' WJ、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
% B1 w  G0 l# l6 o) [6 G: W/ a- W
K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
" D; u; P  \- `) l- p0 ?$ S, [8 r( L2 d1 J0 P4 S0 ^
L-N、 这是PLL时钟。L为主PLL时钟,M为专用PLL时钟PLLI2S,N为专用PLL时钟PLLSAI。主PLL主要用来产生PLL时钟作为系统时钟,同时PLL48CLK时钟也可以选择PLLQ或者PLLSAIP。PLLI2S主要用来为I2S、SAI和SPDIFRX产生精确时钟。PLLSAIP则为SAI接口生成时钟,生成LCD-TFT时钟以及可供USB OTGFS、SDMMC和RNG选择的48MHz时钟PLL48CLK。% ^; ~' \) @# g1 s
2 g7 G9 p% }5 B" k) x0 s; P0 y
O、 这是SPDIFRX时钟,由PLLI2SP提供。
* g% j8 Q6 x9 {) O( n" ?- t8 t8 ?6 M$ X4 I0 `: v+ T8 S' U3 ^
P、 这是LCD-TFT时钟,由PLLSAIP提供。* d, C3 ^" M% Z& L
4 J* X. V: u  p4 }( L5 b) y
Q、 这是STM32F7内部以太网MAC时钟的来源。对于MI接口来说,必须向外部PHY芯片提供25Mhz的时钟,这个时钟,可以由PHY芯片外接晶振,或者使用STM32F7的MCO输出来提供。然后,PHY芯片再给STM32F7提供ETH MII TX CLK和ETH MIIRXCLK时钟。对于RMII接口来说,外部必须提供50Mhz的时钟驱动PHY和STM32F7的ETHRMILREFCLK,这个50Mhz时钟可以来自PHY、有源晶振或者STM32F7的MCO。我们的开发板使用的是RMIⅡ接口,使用PHY芯片提供50Mhz时钟驱动STM32F7的ETH RMIIREFCLK。0 q( V, q+ p) H: t( n
6 w7 @' T6 s, R" N9 A) G' a
R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。* \" p7 u0 a$ r

+ T* ~0 A% H) h, U) Q" F5、STM32F7 总线时钟APB1和APB2, D8 h2 B+ {/ q' ]
APB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。6 q  L# c. R5 I  `  m  E" n
( m1 r( s+ `" T& n
APB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
2 Y" s" h, l% O% B+ O& Y1 _) Y! K: J% T/ Y& C
APB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;
; w. i( A, |4 x; Z4 x( M/ F+ E+ N; g( L$ ^
APB1和APB2的配置如下图所示:
( f9 f3 D3 [( X/ m# p6 T4 w2 A- f3 n0 Z% R0 F3 G4 h' g7 K
201911102019006.png

2 m' p0 @; U' ]; }7 x; e; C2 ?/ {- j% c2 n6 I2 @  I
6、STM32F7 ADC时钟配置8 _& N0 N% ?' R) E
6.1、ADC的最大工作频率
: l0 z0 X! `1 eSTM32F767IGT6包含有3个ADC。
* g$ f7 Z) ^8 f$ X0 P
! @% @. u' w. D0 E5 U( q9 LSTM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。; J' C( ?" B0 v1 G
6 E; m, v4 J5 V# q3 P6 Q  p+ |4 g" f
STM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。
) T& t( Y3 b* j  s  b3 i: e' M8 Q$ s. j) P5 ~
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:
4 b3 R9 f- l) y+ y6 C; G0 G! k0 L; C4 ]" M: ~下图是我从STM32F7中文参考手册中截取出来的。
  L1 i$ V2 U. `$ s7 k& o' e# O/ A6 ?2 `& r
20191110194944798.png
8 A  f6 i, N- ^0 Y: g9 y( K* s
* j9 _& V8 f+ j/ e' B0 G/ H
20191110195059481.png

  _! i) P8 l. |& y1 R8 T: W7 B" a; L  [( G3 M
我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。
' L: i2 G4 p) N0 y
5 I/ q  I  v! O- C4 Q& z4 P6.2、ADC的采样频率1 J) r. ?$ U8 _: ~7 B( f
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
# a$ ^2 I; g, p! O, \# }7 K. x$ ^0 w
20191110203608909.png

' E$ J9 s1 Y% B4 v" Z( ]/ Z1 \' r( b/ L& y
20191110203623133.png
5 \& l+ G' c: k

5 M7 C1 h# t6 j- g& v( o; V" z! t8 R6 L% ?
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。
2 I( r8 C& j1 n. ?2 G- U+ W/ V" x" j( l1 d) k% a6 n- r( f! M
ADC的转换时间:* Z6 M" Y7 w& L- q4 I2 }

7 j* M- {  V8 W1 ^8 _  i
20191110203826589.png
: m* i, R) b4 m( |* z. }
6 w- R" _( F' ?$ W
所以,ADC 的采样频率是:
7 c+ Y( }; h# q5 {/ \
2 b6 T$ c6 c# {
20191110204110197.png

7 `# V2 C- K: R. b  M3 B' G: L( A1 k( j1 n
以上主要是参考正点原子的资料,如有问题,欢迎指正。; @, ]! o) @. w' S
, u: b! C+ ~( |: I8 q
, i- v% J& S7 j% Q! n

" O+ ?+ q0 A/ E) |% o* K0 p+ w
赞 收藏 评论0 发布时间:2021-12-15 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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