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

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

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

2 W- s/ ^6 h. y- D/ [7 C( S% ^0 Q6 u9 k0 a
2、STM32F7 时钟源
- _- ^' D% P0 p- I在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:
" D& A6 @. a5 Q2 I8 u8 L- _简介如下:7 D( J( M2 I+ u, o$ e- c" Y+ n
20191110183016302.png
" r% a* a( P) c  [. m

% |6 Y8 X$ e9 d1 C: J
2019111018390151.png

4 @+ `1 l. k) g7 I5 }" j$ {' E! q
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。( D/ l4 G$ s4 {, ~- O  H
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
# _% u) M, C3 z' ?3 x& b, W- s- k% Z. n$ s$ y  o9 {3 o1 I- s8 H
3、STM32F7 系统时钟
8 L( h$ N8 {3 N6 X7 C" B& K% E- v主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。
' q: m' w  o& \, p( i( h7 f4 [, H
7 x4 Z; Y  ~. r. C3 p; ]6 h下图是主PLL的时钟图。
; V9 R9 N7 }' P  s3 h- _& t% u) {! P7 u$ m0 h% a- g# h
20191110184516997.png
6 h6 e' l& b: U0 f3 d3 s

& ~% ]  b6 W7 M  R  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。
. Y: U  |$ ?- v# z  H
  W- N8 f4 ^9 J6 m$ n  Y! c$ s2 V  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:7 c( _" E3 R# N  U5 S
: F' V- _: p: \% Z9 x/ ?
PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz( o: ~, s9 \, ]  d  V
6 y  U. s7 p) `0 @0 ^6 S, ^
这个 216MHz 就是我们最高的系统时钟。/ s1 U$ ~7 T/ ^! X, Y
) M  i" v8 o0 E. k9 {! Z; }1 v) |+ x
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
  W1 w) j  _  Y! Q. q/ H0 Q3 k* f! ^
正点原子的实验基本都是采用这样的配置。9 m+ j: U* x7 q$ t* q% U6 _

; w" ?2 Y$ V$ ~- _. d! [: {- ^4、STM32F7 常用时钟) I' v( ^# b2 o* A. U; P9 H; {+ c
A ~ R 表示上图中标示的地方。
% H& }7 y$ u: t" G) Q) S9 o2 O/ M1 J% _9 S7 K, K
A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。' d+ L& G9 k1 u1 t8 \/ W' F# V
9 P" ?& J8 {# ?0 I' d6 B, f
B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。5 t% n2 T- `9 n  A4 W
7 R0 {" v& g( c
C、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。
! H* ^& n3 A$ C3 J
! _) B. d# i2 U& @6 UD、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。  [) t. n  M% Q/ c" d

1 V% V+ G0 \( _# ~; \E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。" l% q+ X( X4 I
) |6 G- L, Q/ G; I4 d0 R6 B/ A
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
: B9 B! `$ t; |; r6 ^
9 g2 Q5 c# q/ U/ X3 z$ {$ AG、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。5 }3 y! p9 W+ ?. Q0 u
( i* u( |5 J0 }$ }& i5 [' W2 J# P
H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。
9 y8 j; z$ Z  g# n$ R$ P
" Y6 v# ^( {6 q# |$ VI、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。, v( h  D9 _% K- {

0 Q) I0 z) d4 Q% Q5 _J、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
* P# w; o% k: n% c' G
; [: M" d' a) E5 J. KK、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
5 ?7 a/ E7 |( g2 o7 Z  i% {& x& {+ Y' r1 w# W
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。. y8 x( r" s* h3 Y

0 l/ Q$ o$ ?7 r4 q" OO、 这是SPDIFRX时钟,由PLLI2SP提供。
4 _4 `9 V$ o4 y3 Y+ u3 @* [
4 C- c; b* F/ B! V( }$ {& _, K, eP、 这是LCD-TFT时钟,由PLLSAIP提供。; \9 y$ t' A9 s  K

$ u" A, g  @; Q. P! e8 ]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。4 i& s4 n* A/ `: H# t
9 k# e6 u6 P! b/ G- D
R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。% T( F, Z9 [% m+ d' i
+ F9 e" A- b3 t* f( e
5、STM32F7 总线时钟APB1和APB2
9 x& F8 H% \9 ^- @4 p5 pAPB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
; C# I: t! g9 |9 }6 f; q  D! `, B
APB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
$ D7 e& O0 A% p1 s5 f
5 f; D1 [' `. w* ?5 L3 RAPB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;
2 A: D! q  \7 k! z1 p' n1 j6 I' {) m! x! f, g7 e6 m" E
APB1和APB2的配置如下图所示:
2 f8 }' `2 r, Y/ w! K6 v( c5 K$ f" R/ w" f5 I1 C9 c" D. Q
201911102019006.png
* @3 W) |1 ]- B$ ]' _# }

: B5 F7 c% Y7 W. S6、STM32F7 ADC时钟配置9 O$ a/ J9 F, D: I
6.1、ADC的最大工作频率
: c2 t$ a, {3 \  u, ?3 fSTM32F767IGT6包含有3个ADC。# v: _3 C& u& m, T
" W- E. n2 e: E# r; f; X
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。$ {3 j( H# J: `2 i) }. h" O2 c

. S- r, j4 F- r+ b' e1 U7 OSTM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。! M8 N5 a: z4 w+ b6 k
8 q! R3 l1 r" J  i' ]9 D( s
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:# [- `( X# e- p1 d
下图是我从STM32F7中文参考手册中截取出来的。
/ o" j) i1 z+ x3 x) S+ {4 O# O7 Q- g8 s8 m9 C3 ?2 B8 |
20191110194944798.png
  p' [6 C3 R, m3 N: |

$ Y' U, x# T: l) R* z% Y) S
20191110195059481.png

! D; [, x' v2 Q( i" u* R$ l
& L, D4 U% a2 _# o/ _我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。
1 {! w1 U. l% K3 ?% n
% K9 b3 H  _9 ^0 k* Y6.2、ADC的采样频率
1 z% E! V5 ^3 l7 VADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
6 e1 R. t% G: K% b  g  Q
20191110203608909.png
- X0 {! E5 `$ l1 F  E$ _

" D# a& y( M& o. H# q* s
20191110203623133.png
1 `% e! E* w7 ?7 f3 @. r
4 ?: S! x' e8 T( F

8 s3 I/ q$ _# l7 T' `寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。. q: {  V' ^- a+ X8 ~

5 m3 p$ {4 i; bADC的转换时间:
; o1 v6 l' i& c/ H6 d( ^8 u+ {% b6 n4 W* B$ l3 n; I
20191110203826589.png

# _! v$ ]& y5 u$ D" n8 j6 k  `( E9 L% U; e8 I  R4 [
所以,ADC 的采样频率是:# N8 E6 O9 i) C3 W8 A; c

; E+ Q' ?) ^/ H6 x' T( G1 b% A3 _6 p
20191110204110197.png
, Z" {0 g. M$ J% H+ @+ f7 G
6 a; @9 \- {* [: m+ r* ^! D- G" y. v) \
以上主要是参考正点原子的资料,如有问题,欢迎指正。
9 \& r) q' [, S' U/ e/ S& L, _' \

" G: U9 r6 p+ U; b2 w; L" H8 x) O) `/ c9 f; R
收藏 评论0 发布时间:2021-12-15 11:00

举报

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