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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。0 o' H' a$ s; B" R  X/ W  {
1、STM32F7 的时钟系统图
% J0 D: Z) s  X. A) `
2 Y9 v/ h9 V" O' I2 T, n
20191110182213990.png
$ T/ K- v% I# c

, z' B0 D9 ?, v: `7 `3 H9 e9 U2、STM32F7 时钟源
2 F# S0 ~! I9 _在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:
1 o- a2 L3 l4 ]8 P0 T7 l$ [简介如下:+ ?# o! `) s! G/ j# ?/ Q
20191110183016302.png
& s) n9 z, {" {! O$ h& D5 C1 J% O! z! t
$ ~- n  n$ \! y6 ~
2019111018390151.png

/ g6 E- j; Z  Z- {( \, A
8 V" E* f; v8 d: O# k: z# H值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。
- B$ B7 W2 Q- i6 aHSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
: r2 F) e; c7 c" k
& v: K# q8 X% @0 A: k1 c* Y3、STM32F7 系统时钟3 Q& P" ^& V. q& b/ x5 M2 p
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。
7 ^- O, G. D* q3 J
* R5 }) F0 @0 G1 Z9 M5 R/ B: Z0 J1 E& Q下图是主PLL的时钟图。
, ^$ s3 ?, U. J" j7 B
  _. E* r* s+ U  _2 `" y" D. \) d
20191110184516997.png

$ F9 ~+ C% P, B$ I. B. o
; _- k! q4 Q) N* \4 a  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。6 D& o- R; m8 S: h: ~
( Q; g, T  |0 x- L% k) Z6 _
  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:- d1 g  }( V, d8 R, u

! B+ ^2 @: l$ D1 m. N; U; IPLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz6 d; U5 ~0 D8 m  V5 |
7 a0 h" K, i7 H2 i+ v/ j" \0 I' D+ M
这个 216MHz 就是我们最高的系统时钟。" d1 v$ `& O: \& P- R
( k" g1 ^; }. ~! S1 v/ K2 R
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
# G9 H% L8 u4 \: I* c! p/ I) m# R3 D' N6 h, U0 j+ U
正点原子的实验基本都是采用这样的配置。0 G; m0 q) H0 z% h

" A' R7 W8 j* f4、STM32F7 常用时钟
3 K. E1 D; [& q) L% E5 _, cA ~ R 表示上图中标示的地方。; J/ g. e5 o/ W" U+ |
( y: m2 r! y; a* S9 p9 D8 U' |
A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。
0 g. I6 h9 m  Q( m# f
- f' u" W2 l1 J) K9 `B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。; s- ~, i0 O# x& ]* j
3 S, }2 |; v( P! C( @. e3 b4 A) \
C、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。! J# }- @6 @# s& f
- b1 w1 N8 z3 n5 ~; i2 Q
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。% t* N  P2 w9 F" G; s
" Z$ N7 ]% e1 g
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。( a  Y1 F$ ?9 X3 @0 g
2 C6 r1 V$ A* Y- }
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
" J) O- J' @  I" k- B3 E5 N5 h1 D: q: M. g& C
G、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。& P0 B* s# B9 P+ ]! D
4 i+ u. h* ?7 T+ |# I% S7 c6 R, l
H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。
1 o0 S, m  j& S( ~1 V0 I4 R1 g) x/ S1 E; z' ]$ m
I、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。, n4 U. b1 K4 Q1 n; b1 \7 L7 @
3 b" M) }( o6 }' h) v' Y
J、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
0 ?# L; E: h+ r0 U8 j9 @& `  C( J. `( n+ d( B
K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
+ v0 E# H9 E7 n! E. f9 k  B# b
2 K* j' s; D" b. {( C5 [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。
8 u8 t- k. f8 ~  ?7 P8 y1 ]4 X- r0 {, S
O、 这是SPDIFRX时钟,由PLLI2SP提供。% _4 O* |; _! A! _
+ |/ l9 x; i" S$ G; G* d+ V, Z& |+ }1 y
P、 这是LCD-TFT时钟,由PLLSAIP提供。  P, }# R7 k7 k! k

" k9 Z) x3 k' MQ、 这是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。5 ?/ E% v! V2 l+ ]5 n: U" }
6 S3 Y' V/ j; q; j
R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。
& K: F1 d6 o! K8 _, D4 f8 y8 a
) `$ Z0 N8 m% d% a2 d% ^/ ^* K5、STM32F7 总线时钟APB1和APB2
% ^# ~+ c/ U2 ]: ]& RAPB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
7 ^( h' }* N. s( G1 `
, H" o% ]) n! K6 |" I2 x$ V" PAPB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
) T* U5 M, O2 ?+ ~' r: {; Z0 i6 P! o& ^' A2 o
APB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;
3 D# _' q% U3 Z6 E9 d, N
" m! ~$ k/ U+ a* ^' U2 O8 X) hAPB1和APB2的配置如下图所示:: y9 e, p% N$ R
3 ]8 h% g3 X/ _* o5 m+ B7 U& `
201911102019006.png

2 g# Z2 B$ H: L, Z: M# `3 t: ^+ T7 z/ u7 u) N5 P4 D" Q
6、STM32F7 ADC时钟配置3 N. }# z* s7 Z
6.1、ADC的最大工作频率- a9 Y# a4 t* i/ ^4 O
STM32F767IGT6包含有3个ADC。* b' p5 a8 t3 o+ _7 Q5 R0 F+ t
  {( E1 N9 d( Y5 T
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。
& z/ \* t- s  C* j7 }( K6 x2 D
" Y) o. W/ N& g% a% U8 x: CSTM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。
# {6 B+ R! A- v: S: V# I* \2 S% ?' s; k- U; ], u' h+ n
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:8 X: B7 ~3 L% m+ c$ X% P
下图是我从STM32F7中文参考手册中截取出来的。
( P! p) }. P% |* @) n4 b, x. d) x" M0 T% c$ `, _8 \
20191110194944798.png

0 R5 V5 X6 `$ }# p3 Q8 R$ S$ b7 I8 a( [
20191110195059481.png

. Q# C8 C! \6 A& ~9 {  d) t0 o* d9 z, P7 L
我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。
5 z! a3 Z3 c( p! C$ ?2 ~
, n' O: k4 e) }' ~6 Z" y6.2、ADC的采样频率! g5 @4 _: o, p6 E! ^5 L& m
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。! T9 S' Y9 S5 o4 e
20191110203608909.png
* b! O3 S8 e3 n2 O4 ?) @2 O% R
+ c8 x7 Z# m! y. u6 j
20191110203623133.png
8 P5 W" J  N7 S* L7 T4 m7 D

* ^$ U9 K' b0 ^% y. v: C8 S
) [1 ^& U5 z0 r  D( i9 b6 r寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。! B2 Y7 k" g$ k" ]

. b* g4 v" E: |+ qADC的转换时间:
! B' G7 U( s5 G. O& `- V7 ~6 S- x7 G+ S' D
20191110203826589.png
, y" e: U( |- `1 _6 j9 d. K- d
2 s5 T/ o) [7 m$ R6 \3 x
所以,ADC 的采样频率是:
* r1 Z* g6 T8 Y" _. H
  t$ i" b4 Z2 v" Q
20191110204110197.png
, C. [! y0 k3 h

. ~2 Q0 }. k9 p5 ~- D, b' ^以上主要是参考正点原子的资料,如有问题,欢迎指正。
9 A/ \5 C5 Y( y/ h: D1 \( v1 P( o5 [# e' U8 T% d) T
3 \+ X# ?( U3 @, S; Q
5 K/ I# ^! d; X6 y# Z
收藏 评论0 发布时间:2021-12-15 11:00

举报

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