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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。0 [! m9 e% m) e+ d4 A
1、STM32F7 的时钟系统图7 N6 G. ?4 A+ Q& z/ L6 Y
5 V# i2 i: O7 R( J
20191110182213990.png

$ k0 Z  G+ W- D$ p+ R
- ?' p, _2 @; _: k9 T8 X7 @2、STM32F7 时钟源
# m7 b3 {* [' c8 ^在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:
' u( x' F: Z+ N- {# q0 h- S, o简介如下:
! [" T' i7 k7 h9 t# H, N  q
20191110183016302.png

( \- o1 }) Q* U. D( _% r* y; ]4 N5 d" G1 z7 J7 {2 Q
2019111018390151.png

- Y" ]- ~$ v& X( A. }3 f6 I) \
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。1 y9 J# J, B( A5 I. O! H0 M' Q. ]
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
! J/ f6 `8 j1 t# h/ A* [8 O, F$ a- |
' ~, ]; w2 I5 S7 ~' l3 U7 N3、STM32F7 系统时钟& c9 u8 U3 T* P4 `
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。+ z% U0 l# |$ M, y' ^% E; L

  H9 s: Z7 x, ]下图是主PLL的时钟图。
( U8 {* q8 H* _! R* ~% V
0 ~. W* c4 a0 h  O% \
20191110184516997.png

# N; S1 S5 ~) b; o8 ~; k
; D! F- B& O% e) f7 G; S" D  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。% N# q: Y: M! j" j- R8 R$ x3 ?0 Q6 @
* T. B; Q/ S/ J* V: }. S
  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:
( L+ |3 o$ y* U/ r! ]+ |$ m( w- w, W8 _6 n! f
PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz( c; p* t. s1 [4 K
7 G- L9 e8 r5 a+ `3 \
这个 216MHz 就是我们最高的系统时钟。3 L7 S. Z  v+ U6 }4 K' I
3 n. U' q, e  O* ?9 }5 g& l$ X2 J0 i
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
$ C; h6 n% H1 S- Q; I  L) `8 L. d; A2 @$ u2 T+ c) p! k. u: b) R4 [  Z4 g
正点原子的实验基本都是采用这样的配置。3 W6 v' ^- z  z: A4 [: V) c
( F: v, f* R4 m" P# g& I) {7 a
4、STM32F7 常用时钟: H8 _5 A7 f7 R6 R: ^$ L) G3 `
A ~ R 表示上图中标示的地方。
8 }& ~: m& l% G' \' R5 I! M1 u, l9 P; K- a
A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。1 H0 U8 I) ]) ^5 s+ w3 b) ~
3 w/ O: B. O) d. I
B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。( t% [4 b* }* N& \

  y# }$ }7 y# G4 H) uC、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。
- ?7 ~0 j+ S* |- L+ f8 T5 n: G/ \2 G% f& W
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。) u  n# l0 y) L7 D# |- p# ~1 R
9 V, {5 ]: b4 l$ d6 H
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。
* o" p3 Q1 {7 v7 V. d3 R6 O7 B; A8 C# p( @. s
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。5 l) j+ }7 k: d

& z9 B8 y  o# p8 [) NG、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。. J: M0 b4 r- a8 G% Q1 Q, b$ _& r) v
/ u* e, @) t+ z8 m8 G# n
H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。
9 p" v% |) z" o6 P' d1 }/ c! \8 k2 O  u5 t$ J
I、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。/ m& O9 _4 b- `' d# `

" h5 ^5 G% S2 mJ、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
7 p2 K1 Q" }2 z, A% |
3 ?0 ~, J9 M) g. ^* O" DK、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
/ V9 U$ C0 H  b/ V3 h
$ l5 f+ b5 K2 D3 Q9 r( UL-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。
" _) y( _3 F$ H+ {% R. u( p+ h  P& d
O、 这是SPDIFRX时钟,由PLLI2SP提供。$ k( j* U4 ^: k% Y

9 t# e6 M1 q. p5 ?" J- G, iP、 这是LCD-TFT时钟,由PLLSAIP提供。- T. b- w: k+ r" N
% i3 M; [; T+ n  T# C7 h
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。: O. q6 z' K% S  V

$ I& y8 K+ G6 X) GR、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。- V8 m5 p+ e- a6 J
. T+ k7 E& m: Z  {% V3 [# s; I
5、STM32F7 总线时钟APB1和APB2, t* l9 g/ u! C  o# K
APB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
' Y: C; q  T$ J2 }$ X, Q' n( O/ w
" |7 g4 J: t" P+ B: hAPB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
1 x' d0 T6 _1 f7 K/ R8 J. u+ `  u. u9 L! G, A/ I
APB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;
" x; \4 a- I4 x- m" e7 g+ M1 y2 ]) Z$ E% L' i5 v4 l
APB1和APB2的配置如下图所示:& a8 h, l" x4 J1 U3 Z: l" e2 l; I
; ?  P- {! `5 ^( K" g8 [
201911102019006.png
- P6 N. `* H0 h4 g6 m; W0 E

: O, \3 F, o+ {; d6、STM32F7 ADC时钟配置
1 b) z7 g+ X0 @6 o- F  Y$ U. w2 T6.1、ADC的最大工作频率
- G! ]! M+ u" v7 Z; U9 s" {0 ASTM32F767IGT6包含有3个ADC。  E+ ^4 n; ~4 F6 O% I# c6 L8 e
0 w) R# e& V% x. |1 g: T
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。
8 a1 w  Q; D9 H4 F: A
4 A! i9 X1 W% j# k6 DSTM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。5 t+ q1 F( S$ {7 M6 ]$ `4 m
* h8 i3 [1 b( ~+ W6 q6 R+ X
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:
8 \# f& N% w  }. D( P! I* f下图是我从STM32F7中文参考手册中截取出来的。
; [0 F+ q( R/ u$ U; ~# I. c
9 z9 }2 H4 \9 f' r
20191110194944798.png
& `0 ~6 c; u& Y) o: b
0 L. [$ j+ \/ F- g" B
20191110195059481.png
# T  F: @, b9 k+ d+ x

3 Y' G) {0 I, k( K我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。2 ]% C) g/ F, O; s, [: v# o

% X: ^8 A2 i3 L5 t6 A. u, r" X6.2、ADC的采样频率
8 Q+ l+ Z- E3 H( e- v5 lADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
$ o8 ~* c! y+ I' b& D
20191110203608909.png
8 p8 b* S  M# O/ |3 i' o  j

4 g3 X3 V3 M" B7 K: @( ]: j
20191110203623133.png

# g, [/ f  W5 h+ O. G" ^1 P1 }3 d7 b1 s2 R8 Q# P5 \
# H5 @1 D. O% H; g( V
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。# H" t1 b# o7 P7 J. a/ u* W

( M! r3 Z' P1 u6 fADC的转换时间:: n/ S: W# _. S- O3 h6 C( X

- E7 u$ p# C, C
20191110203826589.png

8 A8 V3 S( \8 R2 D' L9 Q; f  d0 s& a+ D6 l
所以,ADC 的采样频率是:
" `! Z5 o( e$ d5 l
9 s* }% {" R# ]5 T; _- a
20191110204110197.png

8 ~( B) p9 e$ M* G0 A# C+ c# ^- N: k7 E2 v
以上主要是参考正点原子的资料,如有问题,欢迎指正。
% f+ i. x0 k5 |0 s% S. P9 l& H2 n$ r9 ]! x* ~# Q
+ t) b; I9 J% {/ v) j+ Z

9 V; i+ s4 K6 Y; M% S) h
赞 收藏 评论0 发布时间:2021-12-15 11:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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