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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。" L! Q8 I8 R. P, m0 E
1、STM32F7 的时钟系统图
* X2 R) M. v. [$ h: k, }3 q2 r2 U0 G, l( s! |4 {
20191110182213990.png
! r* o$ b! o1 A% e
4 n8 p) P6 h- t3 ^
2、STM32F7 时钟源9 p; T* I: n0 l7 A$ J
在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:/ m8 }8 Q2 V# w) ]# G# l; V8 s+ g
简介如下:
0 k) M/ @" d; ~  p; H+ [
20191110183016302.png
, ^5 Y  ?* k% h3 v" t2 h. R8 c0 g
# [( `0 ]) }; l
2019111018390151.png
. _6 a9 j7 D  T9 O3 \( q* L$ d
* W: c( P" @" ?' Y: q* O% V
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。9 W1 s0 Z5 r( C& L
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
! K9 l+ t& ^' f+ \6 _' u
7 \! T4 }) h. w3、STM32F7 系统时钟* r$ c. u' [/ z: Y7 i5 }
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。
, Z2 A7 x7 K+ @8 U1 n5 F2 J& M- u" a, B- Z
下图是主PLL的时钟图。# [, U; `+ q: o$ J

* }  v, e$ d  h1 u
20191110184516997.png

/ B! F( p8 l: }/ P
6 @$ q3 K- b" n: o+ e  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。. q1 S3 p- V, Q% {& o' W

+ ]% m, y. d' D  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:
# [. W3 Y" d0 y1 r4 V9 ^
+ ~9 P; o! q) o  e$ f6 n8 Y/ h7 xPLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz
, t: X; y' {' t$ h4 ?1 w! e$ B+ E
/ O+ b% A3 f! X2 \9 J这个 216MHz 就是我们最高的系统时钟。- a0 J! w6 T8 O1 ~; p
, N. X1 I& \! f
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。1 v0 t1 ~8 I0 j( O. i
, ?. d# ^4 |: O" \' O3 ?
正点原子的实验基本都是采用这样的配置。
  E; |0 g! j8 |9 @. i
) j/ [- K; \  x! G9 }4 s4、STM32F7 常用时钟, u$ i  P4 k8 {& F  v" g+ S. G( x
A ~ R 表示上图中标示的地方。* a  [& w) ?( r' j
1 \+ `: T7 Z# S& K4 ~
A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。$ @/ ]' W' ]" j# C* o: V# ~' ~

; k, i0 @+ E1 d3 S0 I. oB、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。5 C9 V. ?+ D, T/ N& e
: ^  M& ?0 e, p
C、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。
. A3 ~/ [; g' z8 U
3 y- P& x" Y2 D8 Q" Y: aD、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。
6 @! @$ |, O, i  A& z# C& m6 l% p8 Q5 i. k  Z: }
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。
* U$ D( J4 z' O0 \+ E) ]) h* m4 n# P$ Y
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。5 x. w1 K" t+ z- q1 b. r' v

, y0 Y, Z  G% y! D, UG、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。
2 t+ m! o9 F0 T* U1 z+ r" y& Z
" F9 s3 Z; t$ S9 T. g1 f4 j. N! J+ BH、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。7 ]6 C( ]! `# y' ?
8 W: S0 ^# w  `: O; q1 ~+ N/ j
I、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。
! S( O/ T8 A! a' M! l0 F. K. I1 |
J、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。6 ~- L# ?+ E3 m, ]6 J7 @" v
* s7 [, G$ u! d$ R4 h  x8 u
K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
2 P. F# I  d  A4 m
2 P- X  y: I  r" f# JL-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。% }9 J) x2 N3 p7 ~1 M2 v! {# ^' m
. D4 z/ v# T$ C) O4 k# g/ h
O、 这是SPDIFRX时钟,由PLLI2SP提供。5 e; w3 Q$ S. r" x% y
$ B" {/ w- B# q
P、 这是LCD-TFT时钟,由PLLSAIP提供。' L3 b. U9 P+ j1 W
1 O: Y; {3 W; Z- j1 R
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。7 e0 e; K' e( t8 D. _
9 N7 j- a3 a) J( t( a; \
R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。( z+ E0 \) y( _7 k
6 a8 Y: x6 ~  Y# X
5、STM32F7 总线时钟APB1和APB2
* y" g3 q' D; m6 {0 tAPB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
1 J$ y" U9 @( Z4 u: s, `# b
8 v5 C- w/ z5 ~3 \  S9 a) O( W6 GAPB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;2 ^7 Q: B. ~$ {6 x) `

: v; C6 S8 F  v' ^$ W$ a' F& RAPB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;& c. d- B/ U9 f
+ G& v$ f" R) v( q
APB1和APB2的配置如下图所示:
7 ~7 _# U- q2 C' g( `- c
' A1 ?( {5 B; [% M5 ?7 U
201911102019006.png

/ g: N! D* u5 G5 G2 Z
" E: e: i/ H; O  S5 d' E3 F4 i6、STM32F7 ADC时钟配置4 F* |# w. F, v$ h, p3 Z) @& s
6.1、ADC的最大工作频率
% m% [' C' H9 K4 E, G3 c7 |STM32F767IGT6包含有3个ADC。1 x" H! J' [( F/ j
$ r# I# o% m0 k# t* U& G- c- N
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。) o/ C" A9 `( A' `

7 F2 P- \. s2 n/ t" mSTM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。  i* I$ ~! \; e2 ~9 w' P, A

* Z5 q0 ?9 B: q. e/ H( T- b4 [) sADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:4 d  ~6 P- t; l8 ~; N' @
下图是我从STM32F7中文参考手册中截取出来的。/ X, ]7 x% @! \
7 P2 ~, v8 f# x/ b$ T
20191110194944798.png
# T( {4 g0 x' \  b
$ H4 ]9 L6 A* {- C
20191110195059481.png
, M" H8 H3 n3 K* Q) P0 p

9 z  p0 ]0 N# e! X5 @9 J; S  g我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。
' j( i$ L6 D/ o) S. e5 `4 X1 y& L* ?
6.2、ADC的采样频率
# {& ~9 D  k2 T; \7 VADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。6 R$ L7 i) n9 U; V) M' e
20191110203608909.png
, D4 u+ D9 ]  U. D# z( H/ |/ |' R( w

/ b- ^+ O+ u) j* u; P! k
20191110203623133.png

5 R" z- p" f0 v$ e# G/ C. q, a
  v! ?! Z3 O4 e1 @" q* j# ~4 a8 e& C
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。& Q+ ]8 K0 B) n) F# l
& {  s) F0 `1 G/ `
ADC的转换时间:" f7 ?" l2 ]( q! @2 b1 |  D' |

6 K4 w' W, b0 B& S7 @
20191110203826589.png
' P1 m8 \+ E. I2 ~

/ @" ?' S1 S* _所以,ADC 的采样频率是:/ V0 L! g. ~! c+ f5 V
% ?; _. o+ w" v" h3 _( ?( K7 l
20191110204110197.png
+ s/ j6 c/ z( f- N1 p' x2 A2 G2 Y/ c

4 F" g7 B1 U. W0 x, }2 @% }以上主要是参考正点原子的资料,如有问题,欢迎指正。
  N5 R) R. ]8 e8 O2 |5 D  [& f, Q; y+ z( t
5 m( F* w  l. ], }: A: L# N6 c

1 c& g2 o* H! T3 J- J2 r$ B" Y
收藏 评论0 发布时间:2021-12-15 11:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版