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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。  O& \7 K( o' }" E6 c+ i
1、STM32F7 的时钟系统图
% \/ ~/ I( t  W1 \: W1 z
' H; c, R% d( |
20191110182213990.png
2 [  S' R9 K; `9 J3 m# Y& y4 d

  m1 d' g7 ?* T( n. v2、STM32F7 时钟源: W% F* L- f( f( X2 T
在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:1 q+ S, H) P- J: p- `
简介如下:
# B/ e1 t+ @- S4 B
20191110183016302.png

+ c6 g5 `7 z4 ]
6 U* l, [4 N  H( m( V+ I
2019111018390151.png

% o/ o- H% |- O- r! v+ y$ ?' H' p3 [
, K; i4 F6 S8 S* y% F' ]3 m值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。
' @& ]2 [; I5 AHSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。+ i" D5 U% y7 l
3 m, ?2 o/ c8 o0 B# v
3、STM32F7 系统时钟8 U2 I7 T9 Q  i0 }
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。! |3 Q/ F& ^: |+ D1 d# g
8 O* x, q  Y. b. G: |0 T  x
下图是主PLL的时钟图。! `$ W( i# {- [2 G( i

! E. G, Q3 T- K8 @( N  j
20191110184516997.png
6 D8 s( x9 l0 a. P" j6 ~

# [* d8 z# X& L9 c/ q0 E  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。5 a' t: ?& s- @
* C  h% y, z( Q4 i1 G' {
  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:; }6 w+ T. b/ z8 J
+ L6 ?- G0 w! g' Z( j
PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz
: D% @+ ]+ R, k9 ?7 F( g9 T% U
% e) }% \5 F/ v4 X* U/ [这个 216MHz 就是我们最高的系统时钟。/ h. S" Z& F5 n1 K' ]. b4 ~5 V

7 j( p+ G" R7 [) N如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
  e8 J% ?* P+ q( T/ {' U" B: v
5 S) H& i: W2 p. D( C7 Z: W. n正点原子的实验基本都是采用这样的配置。
8 ]4 f7 P3 n8 p' b7 V6 R4 S8 m$ |+ `) I& R
4、STM32F7 常用时钟
' Z1 \2 x5 @  b; uA ~ R 表示上图中标示的地方。9 q- E" b' E4 I% S$ Z0 d/ @

3 C* a# k( C8 d* z3 Q7 JA、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。
$ t7 W: F' q: O/ W, C$ |$ z7 Z5 \1 z/ V% a. j
B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。# a0 m. o, T: R  y* r" J" @
4 g5 b1 f0 \3 W2 E# p  [
C、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。) ?0 L5 O8 I! F, L! L$ q1 o% l
' i; k# @) @! b, l
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。
% t3 Z' R: Z( x$ G+ D5 L3 W8 m, B# p' L' C- p; ?( M
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。! X& q  V. m& L& e+ L  i$ O

: z/ v# s1 Y3 k7 Z4 @- d: w* _F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
: q! |6 Y1 d; _1 J4 K7 t4 U4 ?7 M& Z: ~# E
G、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。0 X; L8 Z; Z: h0 W

+ J. `% y6 d9 n' tH、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。
! Y7 d* l/ f5 O$ a) F+ c$ d( d
4 z) T3 _" @  R- pI、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。
$ O3 U* x' U/ g
) P6 ?2 _% x* X' j, A8 JJ、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
& g. Q, J5 m1 G! Q' z% @& x  N- x+ Z
K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。: I" _+ n% I) b  S2 D( X. ?

$ A  F8 T) W8 z8 g& w0 j5 ^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。
% w  x* J& i$ e8 I' O
5 ~6 B  H3 n! i. FO、 这是SPDIFRX时钟,由PLLI2SP提供。; G5 }" ?0 K1 G: i5 z; K+ w5 l! T
3 c+ {4 a+ A+ o( T7 k2 ]
P、 这是LCD-TFT时钟,由PLLSAIP提供。
2 l# a" {5 j+ T2 n3 S# g2 b) e- g' x8 y7 D( L9 z; x+ E
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。% L+ F& `6 d& b$ N+ R

' ]9 m7 t; g. m( n, GR、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。0 [  d: Z' R, S7 j- W

, }" p9 N$ T- i- ]: D, `% _5、STM32F7 总线时钟APB1和APB2
; U2 E# [' M& n" P0 d) G+ WAPB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
  c" f1 Z9 |! K: B
* z9 r& f: |/ R8 L- O2 Y' @APB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;1 x7 `3 `6 q" y: Q! T. T% k

- x9 T4 t; |+ @! ]* v; BAPB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;! `' H( b# c1 x9 F6 j. i. Y

+ r! o3 a" o( oAPB1和APB2的配置如下图所示:
2 @/ m9 s& ?! R- [0 y  F7 p' E0 i# H/ Q
201911102019006.png
# a* G  H: ^: y. r1 ~7 L
7 S: q3 m0 G% W& B( w- L) ]
6、STM32F7 ADC时钟配置( v% u9 \8 S' K8 w- j& f
6.1、ADC的最大工作频率" L% A% Q& _) B: ]' x/ x: |% B
STM32F767IGT6包含有3个ADC。* P) N; @/ i# N3 r) a% S* t. C! h
; G) \6 o; H) z7 a
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。, x* K6 R/ P6 o. X( O4 A% A
: g6 |6 u4 U* G5 V% O4 x
STM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。2 J  Z- c+ {( |3 d+ B1 V

( [5 ^4 ?. Z# ]* J1 wADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:
, K. H7 C* ]+ c* [9 ~5 l下图是我从STM32F7中文参考手册中截取出来的。2 o- i, p' U% t. \( `% f& r
" G) q4 D# d; G9 o+ y: _. Y1 v# s
20191110194944798.png

& \! x4 U6 k- T7 u
& x5 l8 ~  J+ g, q- @* x' d1 M$ g; B
20191110195059481.png
. ]9 F* q" n* z: x3 d
7 i# {9 X+ Q& e7 L" c. A
我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。$ s" V, y  n6 B) `. T' N* r
3 e3 M7 Q* f- |' H' W! k; @
6.2、ADC的采样频率' H7 c) k+ Y# j5 ?( w9 _& i. [( e
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
  L, E! ]& i6 _9 s7 G' T- u8 y1 _
20191110203608909.png

, c) b) f8 W3 M8 U6 Q0 l: q& ?+ F) D; t+ l2 H* p( b3 @6 `
20191110203623133.png

% A) c- z1 y- o: }8 h( d5 Y! e# U2 E% o; J& g" q
5 M' e; r  m7 c3 B
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。
4 a& D6 S! y" h
+ h5 X  ]* G$ Y' R6 \4 e8 i0 VADC的转换时间:
) k9 {0 ]1 u' Y* G0 @
- f. L# ^& [: b6 U
20191110203826589.png
9 _0 m2 ~) n! n" V7 B
3 l. X6 @5 J2 n  V2 q/ |# e
所以,ADC 的采样频率是:
& _: U1 B9 q3 A2 X1 g% b/ @9 M
+ |* L- z; y: |. Y- e4 G6 k4 B$ ?
20191110204110197.png

) d* D5 e0 ~# \1 l8 L5 R2 K3 S! v) j8 y# f9 }) Z
以上主要是参考正点原子的资料,如有问题,欢迎指正。
9 Y7 M. k& I6 l' K
' X: e! i; |; M- |2 Z; g7 f" s) Y9 q0 R5 |: C" V% e2 U
7 U- L" ?+ Z2 K* \. ^# T- ?, s  _% V
收藏 评论0 发布时间:2021-12-15 11:00

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版