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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。% Z) b$ o& s  X! f. Q0 i
1、STM32F7 的时钟系统图- z" l7 V; P) H- J! N
# I, W* g" A: q- {2 D
20191110182213990.png
% H; U8 R0 t: G" H9 \4 h" r
6 s1 y8 V) z+ o
2、STM32F7 时钟源
; A0 d, t$ t* L6 P4 l# l7 \在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:/ J% N4 P: a5 q
简介如下:
6 W9 ]5 a) O( i7 y
20191110183016302.png

. o) [3 s( o7 [  F' P: j0 h: S" I& L  ~- z; \
2019111018390151.png
/ H3 F1 _3 t. J8 Z
* A+ t8 c" C; [
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。0 m5 X1 n. T+ P
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。0 V/ g7 s4 J0 M4 g9 |
  F) T+ Z8 x0 B" w8 d
3、STM32F7 系统时钟. e' m2 I3 y7 f( S% V+ J
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。
$ S1 H9 O0 g1 [" R5 s4 ~- f% \2 ~' B2 N, N, v5 U, B
下图是主PLL的时钟图。
/ J) q( X2 g+ ^3 e, k" p* y8 k9 s3 @2 O1 {$ i2 |& _& g
20191110184516997.png
( O" k- t4 B' Q' }3 c/ ~) t/ U0 H
3 _( x3 x0 [7 P/ M. b, @% q7 B
  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。
: I+ Y8 c) b7 M1 Y- S4 M' o6 x% `# w: x5 O
  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:% w* ~; I7 f( `4 H. G
$ ?" t$ Z) e! i, s" I) e+ c& A
PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz
1 |: B8 \5 `! N8 q: o- h6 @, F6 K
1 ?, W7 G8 p6 o9 z% E6 q. Z这个 216MHz 就是我们最高的系统时钟。( k) ?- }1 S2 S3 r

, s) a3 a- q5 O; |/ Z0 r如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
$ k. P, P! t5 w5 n( x  o. r0 G1 ]9 a- a9 P  J
正点原子的实验基本都是采用这样的配置。, C- _5 p( w( [
+ g2 ]$ x  O8 a$ R' e
4、STM32F7 常用时钟
+ B. A- o, ]0 C) B1 g- zA ~ R 表示上图中标示的地方。; x- r/ V. G& O

& O! e% g3 @0 z  T6 A5 sA、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。4 Y3 ^) o3 @9 x. g

0 J; x7 e% N  c: xB、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。% h  i. F4 o9 {2 C; X. q8 B
3 \' r- Y# O4 X2 i8 k
C、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。
' o, t' w! m7 K5 A' s& ?7 H! |
; y7 x( [$ S1 ND、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。: Z# X- a% s! O0 G! g, H
' x4 y# u+ X- X# Q8 R
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。# d4 K6 c4 c/ B4 a: \2 g2 Z

+ T% D5 S' f7 ]( ^  c) E9 ~: ^, c( EF. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。/ e' l* l2 t( ^" p- N) ?
* I+ k$ W; D' Y& _9 A- e% x
G、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。
3 }+ ?/ C: n0 \6 B  M1 W; f) C) n5 }+ ^( V2 W
H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。0 K$ S: F: v& u! L
6 |4 h7 i- Y+ p! L6 X- r% Q( m) h
I、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。- t: @+ g# Y2 {3 w; D+ i' H  X

9 |' |) Q. z/ zJ、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
; A0 n. ^6 L$ j* q% j% U
& V5 p6 s, Z/ O# |+ ?K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
- e) P9 J/ p2 Y- ~/ _
$ [/ u+ l+ \  sL-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。
4 ^' J: ]! i8 D
6 c6 e: ~* b& y- F0 A7 iO、 这是SPDIFRX时钟,由PLLI2SP提供。  m" \# U+ |5 b# Q

1 }' M% n5 q4 e+ p: C- UP、 这是LCD-TFT时钟,由PLLSAIP提供。: [0 A/ w/ k& E# ?* A. [

! ^6 |" E9 D1 e* jQ、 这是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。
  q1 a/ M3 }: \) t8 v; I
1 m9 _/ }. \2 W5 ^4 `& y; ^* ZR、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。
( I; r2 M  ], ?* ?
- i) |# H7 b# }8 t* _5、STM32F7 总线时钟APB1和APB2; W: m3 ^! M' J" ?
APB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
7 R- k! ~( K0 C8 n( }
* ^3 G' e" ^2 _2 }5 e3 YAPB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
$ M& |+ d: p1 w% M; y' ?
  a$ L+ M  Y/ v% zAPB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;% A, v' h3 h  W2 f# E

1 Z4 G1 l# n/ D/ t; H+ ]APB1和APB2的配置如下图所示:
* K% D4 Q3 R5 m- |8 N* e! ?% B" v1 Q- g7 q: X- w
201911102019006.png
) n7 a# {" o, _/ Y/ ^; b

; o3 c1 Q4 B* Q9 [6、STM32F7 ADC时钟配置( k- k& e- l& C
6.1、ADC的最大工作频率
2 @' C% R# A( F/ G( h) g" ESTM32F767IGT6包含有3个ADC。3 V% c6 t2 C2 M

8 z- o2 A) P; a/ rSTM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。$ F6 ~4 ]' u# c& n* x9 G

% v4 {/ u* P- N& ]STM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。
  f3 \: [/ \! P) c7 h8 |% w0 N( L! h3 s) b
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:) K5 i  S, v) r( j( E
下图是我从STM32F7中文参考手册中截取出来的。
/ p  N5 }- e; M  b- K9 q- B( P9 H7 v! p& l+ |! g1 v" x
20191110194944798.png
. m4 z9 r1 X. k' Y4 L& o8 \0 r
1 r! M# ?( L* J& ~( P' x1 F- B& _
20191110195059481.png

& K: s, W9 a  B! d" I$ b
  I/ E& l3 m: X: l6 s我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。. a: ?: z1 a- z8 u  C4 s( \
0 H* d' n+ D+ k6 E. i
6.2、ADC的采样频率
8 ]7 X% g/ c- q4 ZADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
# z, f& z3 K) b+ c& x
20191110203608909.png

2 Z$ W& i! |9 j! T2 B% P' Z* {1 \4 o
20191110203623133.png

: J  M, ~: `& \6 L( V+ C( L! I5 ^: z5 o
+ X& b5 |# A1 \, j$ e/ f' L6 A  _4 a- F; o
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。
: I: J8 t* q% ?* y4 i" O$ [6 i+ u4 |1 h1 q0 P- T+ n$ K
ADC的转换时间:' g0 D0 U7 {. e6 E; x

- u! P0 M" Y9 t) \# I
20191110203826589.png

( M5 g/ m' Q. O5 B- U' y4 o& g4 n4 }0 H& t% L: t
所以,ADC 的采样频率是:. t. u) a) P; `2 J( C$ x2 G
. W3 n. n( ~) M0 m& y" t
20191110204110197.png

4 L" X* K9 W( _& _& B3 ]/ P
: i* D3 _' N# L6 M3 i1 r; n5 n5 K以上主要是参考正点原子的资料,如有问题,欢迎指正。& }3 |4 u7 ~$ U

; n# h  e0 |0 @1 ]: _5 a1 K1 I5 I# ~! c

- |& D  k, |5 G, t! F# b
收藏 评论0 发布时间:2021-12-15 11:00

举报

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