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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。1 z0 U' X. j1 O+ o( s! Y/ n
1、STM32F7 的时钟系统图4 A7 H! }2 N# l) ?8 {

% d$ j  A' G5 H5 @
20191110182213990.png

6 j% D' f. l. t+ X2 R4 U& x0 ^/ Z0 M" |' d
2、STM32F7 时钟源
, _5 j7 r2 ]. d$ U1 f在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:
2 c, i+ h/ u' w简介如下:
/ q/ e, u5 `2 g1 @; b  I$ ?
20191110183016302.png

/ k% C# B. K& m) J
' @" Z9 a) [5 `
2019111018390151.png

0 \$ P( C2 u7 c! ]1 o
' i) S5 F" f8 _! v# V4 y7 i值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。
. Z- K) M$ r3 z" ?2 ^- T5 KHSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
5 D) M2 l- d4 U: V7 }4 v
7 c1 \+ W( B4 X- E7 y7 u4 t3、STM32F7 系统时钟
$ O2 N/ a+ _0 |. Z# [, _主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。3 d- I$ N/ a; b" E7 d

+ X: K3 U3 m# v! `下图是主PLL的时钟图。
8 B2 F* t% {  k2 \
) }& i5 K& X4 f. S
20191110184516997.png

6 I. ~  h# ~, c! Q$ L' n, G! {) R0 H3 x( _- r
  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。( G) y. n2 N; ]
! j% v  \8 G7 Q' w4 @/ g
  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:
% F: T6 a6 @$ W5 L6 P; `. H0 n" O' N  ?
PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz% G5 D8 Q9 u( l# R, n+ V8 @* Y
: Z; [& x1 b& @: i  E7 Z8 E6 ^
这个 216MHz 就是我们最高的系统时钟。( F& X: }3 k1 ?9 [' g
6 ~; {( J2 {/ R8 ^
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。
) S. p, r9 Q" q
4 h9 w( ]0 E/ J) P0 X正点原子的实验基本都是采用这样的配置。* j- h3 g2 q0 E( L, A' I9 q' i% N4 Q

" e1 Z$ F+ _' x( L4 H* O" @# d4、STM32F7 常用时钟0 V, ?% F- I1 f. R! w
A ~ R 表示上图中标示的地方。
; u' c0 w3 K4 E2 R( o/ V& _  [: X" N7 `" D. b
A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。
$ F$ }/ A' o$ U3 C0 Q5 I' J. g/ L% s% Z# a$ o5 e2 k+ M0 Q: _; C
B、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。
7 j: \+ U+ y$ j7 c1 {9 ]" o: U" L
' A- G) V5 w- n3 o9 NC、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。. @) f$ Q/ U8 b7 [7 i
1 u" X% }+ o! E. |% `
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。
6 m0 i1 k5 `/ o3 U( S* v( @2 ^$ A0 L6 ?7 B
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。3 _' j) P9 s' m! w# y/ O* O4 }5 a
5 x$ ~* _% |" Y2 J
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
! g6 ]6 }; w* j, w- K$ U3 }( T- K7 h/ ~% S% L" K% _
G、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。
6 l7 x. M* Q/ P5 E1 I) L
3 j; d2 W& x: _8 r/ G, i1 H9 S' v! A0 |H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。: t) t/ G8 D& V/ d* w! {

8 c$ K3 g9 G" K9 Q8 x9 qI、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。
0 a4 L' g7 r  L$ k
2 M: M( i/ {' R6 q1 G# wJ、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。1 D- b, S% A9 A  Y# L4 A4 I

, S- \' o7 J/ I1 w, L- p5 `K、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
* p3 [# ~0 ]: ^" `: M& D- J$ V1 F' }; X. ^% G3 E; [
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。
. ]) u* ]4 N% ]( G1 ^7 B2 i7 b# I
O、 这是SPDIFRX时钟,由PLLI2SP提供。
: T% \2 Y5 Y' G5 k0 t4 t, r9 p
P、 这是LCD-TFT时钟,由PLLSAIP提供。6 f8 h5 j9 W8 l& H) X$ t

) o0 K' s2 A6 KQ、 这是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 ?% \  f/ K( S) n- n2 Y% k9 I5 c9 U/ e8 w- n6 E9 D9 M8 Y
R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。+ T& T) o( M2 h2 {& O
5 ^6 e; {( C3 B% m+ p
5、STM32F7 总线时钟APB1和APB2
: Y- \; L2 `$ tAPB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
; E8 f; l7 k5 T8 E+ A/ L3 L- [8 |0 Y0 U# l: {. [! S: S
APB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
/ Y* C; V1 k, e1 t1 y3 C- J& z' {
APB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;
! c5 e0 w) O4 ~- A
/ u0 C7 F' @0 C8 L$ y6 _6 U/ R9 mAPB1和APB2的配置如下图所示:5 E8 u3 Z1 W# F5 P9 I

7 i! A0 a6 [3 P& t
201911102019006.png
6 J$ k9 J1 _2 T/ c3 i$ n

; N* T) |9 v* I$ O( B6、STM32F7 ADC时钟配置
$ d; C3 [9 V; a2 y6.1、ADC的最大工作频率
: r3 @) W# d/ O( H/ }; uSTM32F767IGT6包含有3个ADC。' y: q; J$ }$ v2 B; W
& H6 ]1 x. h( n
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。
5 ]* ~5 |8 l  [6 \" A" N# K9 |) _: s$ [. Z
STM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。2 y! Y; `! o0 w( R, n8 O; d, a

# L, g! z+ a- A! B) X. JADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:# C$ {: ?4 p1 o' a& {
下图是我从STM32F7中文参考手册中截取出来的。
* C* Q; I2 @. F9 X8 u* D2 N
- x) H1 P9 l& O. ^0 P
20191110194944798.png

, X1 Y( L. Z( h. R) I
5 j( ?6 r. P+ L( m+ ]3 O/ C, m' F
20191110195059481.png

7 H% ~" L; N1 L6 k% e  d& B) ?
1 m) r+ Y/ g" d3 {& _我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。1 ^4 c# i. Q8 B! F8 o2 [) V

2 f5 r1 e6 B5 B$ w6.2、ADC的采样频率" N) e. ]+ z8 v9 @1 a% x6 c
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。
% u* y5 ?) H1 Q
20191110203608909.png

) S/ N; z! u* t2 [0 U2 @2 P# `5 b1 }( u5 f" y! z& v
20191110203623133.png
' l9 \) l7 U( ^0 e% M5 {: T  R$ `

$ v* v) O' h" \# s* \, |1 y: }5 L7 }* g
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。
8 c0 `$ D% l. M1 h& f: H' H: H  b* A6 d+ h5 @# O% S) L
ADC的转换时间:
8 {+ u1 s3 C8 d
) l  M& T( M% ]
20191110203826589.png
+ u- q6 H$ K, l! N& n
( ?' h0 g& t$ ]" z7 l/ k* `' M
所以,ADC 的采样频率是:( p' k# t& R. n3 W$ r( j7 o

4 j/ j0 t, s6 J* r
20191110204110197.png

& y* V7 R% W1 D/ `$ E0 |
4 q1 J' ?! f+ ?7 v. k. b3 {以上主要是参考正点原子的资料,如有问题,欢迎指正。/ Z0 `7 W, G- H. b# x( G1 D% s% f

5 ?8 W+ I  J" H6 S# u/ _4 D) c( \1 Z1 B& O4 z
0 @2 X: a1 t5 C7 b) [3 H2 f
收藏 评论0 发布时间:2021-12-15 11:00

举报

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