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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。" u9 W& g0 E% `& o5 o  W" R) n
1、STM32F7 的时钟系统图
9 w5 y, l# q) g; Q, a9 p  Q" Q" z9 w5 N5 p& f& _: E
20191110182213990.png
' o& X3 p6 L( o2 c5 H! O. H
1 S* m# W5 `5 n) l7 h
2、STM32F7 时钟源' Y1 Q- s0 _5 a1 f
在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:* d$ U$ o+ g' D% z3 `; z
简介如下:
4 B" |, D. |( w% `- I( H( v
20191110183016302.png

8 U/ G7 ^# o" M+ L0 j( j4 X6 C" I3 d: f. I% E. _1 q
2019111018390151.png

% }8 y! p8 d' _; F, L* }: e7 R4 C& W4 m  Y
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。  E9 Z- e/ l, p' U( }1 S4 U
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
/ L/ D% u$ G* C3 O' ~
& d8 n/ n! j. N# L! {3、STM32F7 系统时钟
7 C9 _- [' `& P, ^2 O- {& r* `主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。2 j) J/ s8 h! I& r1 x/ Q4 z# J. _

$ M% O7 o+ {( Y: N; i0 n! ?下图是主PLL的时钟图。
1 J7 f$ z  p" h: j4 [; `7 n5 g  A9 t$ m6 c
20191110184516997.png

; X- i' K" `: [6 O7 ~2 Y' S$ i2 y; }. @2 Z6 Z
  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。3 r( P$ b$ L) m  s" h
5 V3 Y8 x; Q% e& `0 N1 V: H
  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:
. h/ h9 Y) Q& r* L
4 a5 r: a& M. M2 V4 TPLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz: `& c8 g3 F: G9 }3 ?
( H' J# Z* ^9 n5 p0 x' ]
这个 216MHz 就是我们最高的系统时钟。
8 r+ c' E5 ^: J6 o7 ^8 d
% K; M# }2 X  V如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
( L9 J" B' ]0 b: |( W( Q+ \4 [# ]$ b4 T: r+ S1 ?; q+ w
正点原子的实验基本都是采用这样的配置。6 ?+ E# |3 G! K- a9 [/ s$ T6 s; |  Y
- E8 {; s+ l, c
4、STM32F7 常用时钟
5 {( g' L0 R& w0 Q- L! rA ~ R 表示上图中标示的地方。8 D0 d, f" n1 f, e* ]7 r" a

$ H- a; H9 K4 f# ]0 r" wA、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。9 r1 g* z& ?* k3 b2 s' u. T
, q1 [' K. X& W; a( e# ?+ y
B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。
5 p$ g) ^' W/ n$ b- E% b7 l: p( a; q( w, O7 ?! o
C、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。$ V- a# j- M; O
' J  J- I* M+ i3 |& @/ h
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。
) b- u* W% |. a; A% ~) z. F! l) R% j* d9 Y" C$ Q
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。
8 e) H" k6 e# k2 Q1 |* }( d7 v
5 E. d% X. U! J: Q4 {" ^$ _: zF. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。& O# d' Y0 X% {  U% H" |

# y+ Y4 G" z6 }1 Y, ^' pG、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。) v6 ]7 g1 j# @

0 f- b3 u+ \' D7 c7 Y: T- L0 [H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。
4 C& }& `5 Q' w( Y  X5 P( Z: c; e. z% n; }
I、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。
! [: q- I3 m& K+ X- O  u0 X6 W* V! T
J、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。, w- Y/ A: D+ a  ?  w
- F( z( s2 Z3 b: H. i- V1 s& i
K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
2 X; ~: D) ~6 l- n4 B: ^( T& R. N
0 D7 s  g# H3 _% n, D- vL-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。5 e9 _6 D" C7 o# r( @  ?) E
0 d) J5 o$ X; t% U  m% e' t
O、 这是SPDIFRX时钟,由PLLI2SP提供。/ u% p  D- U) c+ K& S4 i
8 R) c# R, N3 h- N  J
P、 这是LCD-TFT时钟,由PLLSAIP提供。" ^0 O( F+ j. q/ L' U

8 b+ x! O  ~" f8 bQ、 这是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。8 u* W% U5 D8 \# i* u6 W

$ w: d" ?5 j4 l% Y. ?6 x$ n2 xR、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。7 {, @" U) l8 e# N* B

  i- {- B5 }3 J5、STM32F7 总线时钟APB1和APB2- T9 m4 {3 |0 K% I: C
APB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
$ Z/ b: Y# z4 w: w4 _6 b& g: ^0 G6 Y' |# `  ~7 a7 u
APB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;8 F, U4 {2 R2 X+ H" y# o( ]; p$ }" z

  P; Y+ W2 s0 Q8 r5 e4 i0 m  v+ VAPB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;
+ j, ]! N: h1 j9 j4 n7 {4 G2 f3 u0 j, H  `& [3 _
APB1和APB2的配置如下图所示:
& |) V# C2 {0 \% `3 n5 `: q
* I6 S+ E; j; n* m; s; X2 w9 L5 x
201911102019006.png

2 {  x( I  d  O6 a& V  F5 N: N. M
- i. H) [' a. B% L+ F2 s6、STM32F7 ADC时钟配置7 v9 \  V7 @. b/ ~5 z; [  @8 L
6.1、ADC的最大工作频率
, V( e3 L+ G' SSTM32F767IGT6包含有3个ADC。
& {: x3 [4 g1 g0 S' v% U; _0 r  _# L9 I5 d: z6 C& K: _
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。
6 |" q  L- R/ H8 Z: a7 Z; a, D( w5 B$ {& Z- @' j2 `
STM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。
/ b1 I3 Q# Z' ^' `$ l) L7 r" D; g2 u; S* D6 z8 U
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:
3 }! U4 g: ]9 {* v下图是我从STM32F7中文参考手册中截取出来的。$ D" k# n2 f4 j$ o* L
# B+ g+ k- W; y4 R' j3 V) g
20191110194944798.png

8 d5 E- }! R* @' S& K4 L! g; G. n1 F' ^4 U3 h: U0 q' |6 _0 X2 c
20191110195059481.png
* V( _" Y# p2 G1 y  b& l

( z, \9 c! p6 D! J) e我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。
6 [+ S$ B5 @- G% d6 s1 j6 s/ D4 j+ A4 S9 r2 m2 q$ R5 O! d! s/ F/ \
6.2、ADC的采样频率6 h6 r( H4 I0 b2 J1 S
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
! r/ f& g2 ~4 K' }. B
20191110203608909.png

/ o& `- J% M0 N* Q( D  W0 z& S+ c4 J2 K- A
20191110203623133.png

0 y7 T' R( E/ G1 t' |& e! {7 c5 i5 H9 N7 I6 F) ^- R  Y

" `0 V, k( T: f4 g7 m/ A寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。
0 G* q; ?3 J& E" ~5 V
& ?% n1 z5 n0 S& b/ ^5 Z# n  t" rADC的转换时间:
3 X9 C0 g6 G& ?: r0 I$ Q
) X5 {7 @, J* e3 Q
20191110203826589.png

# |) Z; _- `; `! Z8 {2 V/ y1 q# m1 k: r: X( D0 [6 ^
所以,ADC 的采样频率是:- t1 K0 X& U, }' k* Y0 i6 d
4 k0 x4 S% J# Q( P* t7 W
20191110204110197.png

* U$ D# L( ]8 ?, R+ w2 u
7 C, i6 G, |; Q' [以上主要是参考正点原子的资料,如有问题,欢迎指正。% H( W4 x: g2 Q7 Q
. W" r# l# z3 |' {5 N, \
: ^$ Z- V6 A" Y
, i% ^; t+ f. @, x
收藏 评论0 发布时间:2021-12-15 11:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版