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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。
* G2 a" Y- h$ X8 o! P1、STM32F7 的时钟系统图7 @! m/ E5 F9 S" `/ j% J" k; ?4 V
, N4 d- C  B& Y. K# \* S
20191110182213990.png

' p* c7 j) M. Z' y4 e" i6 \9 X. |5 t* T# D$ n! ^6 k, v
2、STM32F7 时钟源
! f. x0 X/ [+ Y在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:  L% n* g7 T5 N4 |
简介如下:
! ?, s- a7 W, c* {7 c
20191110183016302.png

/ C# F0 n5 c- C
, D' x) H) y1 G, D& h. ?
2019111018390151.png

+ i  T- Q5 o. W! A+ F
, X0 J9 G, W6 \& R9 N, ]' X值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。/ i: I2 Y) Z% ^8 U$ M* C$ D/ T2 y8 W
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。
7 ?- H5 {& U  l  T
* l( ]/ X  T  K; i' u3、STM32F7 系统时钟, O: A9 \) O5 P
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。
: G  [5 b& K3 O6 z) E0 A
2 d# x" P8 }/ z# Q# M下图是主PLL的时钟图。
$ a# `0 r; A1 u& K6 i* f4 U! I: A! ^8 k
20191110184516997.png

" M: v) Z1 |6 T) B
& x6 ?0 N' X* s  D5 _; o4 D/ H  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。) f: I' ?1 i/ e

7 L1 @- z+ x9 k7 t7 N  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:
- e4 v- T2 p  L; |: v9 o+ R
! W( U' m$ l' b  \PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz( }" [8 W% A( P' W! ^
- D& p) I3 e- Q1 d# L3 b
这个 216MHz 就是我们最高的系统时钟。
1 e/ t0 U  e- t7 O0 G3 l1 e( N- o4 P) f1 J5 X, F9 K* q
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。/ M( D, b, W/ s
. ]# \$ c0 r& {$ S+ O) F' q
正点原子的实验基本都是采用这样的配置。; C4 `- p- f8 i' T4 x
& g8 _% E3 z8 }- o5 d) @
4、STM32F7 常用时钟$ f$ g, I1 M8 [6 Q% o: S  W
A ~ R 表示上图中标示的地方。
$ X5 `& b$ U$ |7 U4 F! n6 B  B5 s5 J% g- g  B2 J9 p5 e
A、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。4 a0 ~8 h4 p, T+ c& x/ x* O

7 _4 r" S2 |# j: jB、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。& c$ Q! v( N- F, k0 W  p

1 N% y% G! D' {* Y( pC、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。) W4 O- ?. Q& g+ `
5 i( l" ?8 U3 `6 A
D、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。" `& u3 I" P" }9 T. O& b

( L: h% t  p. u3 V7 k8 Z9 [# GE. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。( f3 \3 `2 a5 `6 {. M4 z( U# [7 k# w
7 e- I; `) ?! u' Z5 ?
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
5 ]! l( F4 [- Y( l5 B) T5 P! {% r9 p$ D& |0 H8 ?$ e4 f
G、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。
( ?5 D' \' U& @! F% {
% `( t/ D+ U6 i* u* i% b- OH、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。
- M- }( c9 R3 H5 i, G" b/ f2 W+ b5 ^$ F+ }0 j" n
I、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。
, G5 ~9 W  _  ~2 j- X
3 i5 X2 T- |" r: fJ、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
, h$ I& R' ~" W7 R* W! i" X
2 B* i8 d4 W8 h$ c3 r' q* j* vK、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。
' Y! m4 t6 `6 g; y$ m- }
4 }) X" }! L, I9 r  L& T  ?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。
7 O$ A. Y% U: f$ \
/ [5 b- |- b/ y5 Y) jO、 这是SPDIFRX时钟,由PLLI2SP提供。
" A) a5 u, M6 s! u+ q% x( `2 O4 o9 V1 Y3 J
P、 这是LCD-TFT时钟,由PLLSAIP提供。$ j( ?6 b3 E0 X
1 ~) b% c8 R$ s! B9 R
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。# q/ N+ a# @* k- B; J* `* M; f8 Y. d

' i' C4 R" X: {R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。8 a4 t* k3 B% `. A6 B6 Z, U
2 }1 R6 V5 p7 i& L$ Q
5、STM32F7 总线时钟APB1和APB2' F# n) s; o( P
APB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。+ ]0 x0 K) u% X# Q# q, @
- w4 k8 G' b9 E8 P/ i8 G
APB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;
' w) @. x) S5 \' O$ V  t% y# y0 X# z. {, w+ T
APB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;7 b' s: s6 R5 O' G2 M. p$ |1 v

/ _& ?7 e  v; A/ AAPB1和APB2的配置如下图所示:7 e6 b3 O% {* s0 f; P1 x4 B

7 D8 \4 M5 \+ |/ b
201911102019006.png

# B: |0 v' l2 Z: O( L; \
/ n5 X6 C% h5 p' Y" I- o6、STM32F7 ADC时钟配置
9 q2 g3 @: |8 C4 V1 C' L6.1、ADC的最大工作频率. F+ C8 ], i+ B0 E  j- ^1 j
STM32F767IGT6包含有3个ADC。
+ W( v& Z( D7 |0 ]; W  h  f- g7 f1 M* V; R6 j6 [
STM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。
3 v* T# r$ M) X* d
- b3 P0 E8 ]$ u, c" o: A+ wSTM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。# X  {. l% J% x- r5 |' C2 Y
8 R5 B* C( e) c' M) @, b! j, Z2 T# m) H, _
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:
( K. n- |& W5 B4 y1 d. P& {2 b下图是我从STM32F7中文参考手册中截取出来的。" {. ~. o( q& k2 |1 I. J. O

/ f9 M( C6 M* L6 u. x0 @4 \
20191110194944798.png

: r- h- X9 u3 l7 U7 S5 j( b' G' Q) b' P8 |! s
20191110195059481.png

  O/ B. n$ b6 R0 p/ Q
' ~7 C, I" a$ a# L$ [我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。
/ C& A* Y. I1 x
2 t. P  e. i7 B# Y9 V8 K9 u% s6.2、ADC的采样频率) ]1 I4 z+ h. g( ^7 ]6 h: p
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。, r4 h5 p( ^: M. Q1 o* E8 j
20191110203608909.png

' `. K6 z: p6 n5 H
2 C1 u9 W4 a( ]& f, t
20191110203623133.png

3 M$ Z) j. I. o' A; T7 ]! X
. k* p/ a7 Z  ?/ [, ?8 Z
7 [! |. ]% L* j寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。6 O! t1 I- k/ y

# F3 p7 x# x- t( J3 @  Z- `ADC的转换时间:  P; L; y! n- s3 w0 @6 Y

* p8 F& i. L% ]. f( q' L3 ]( R
20191110203826589.png
- }* f; r6 X; b) ?5 ?$ e2 C; r

1 M$ |% C9 V- P$ P1 `& c所以,ADC 的采样频率是:
4 H8 S# ~5 W# U
3 S9 Z3 s/ ^+ w( n' x5 F( d$ f# F  d
20191110204110197.png
% Y9 t7 k, r1 |1 T" S6 b. E% K3 k+ J

6 o( w8 \+ f' \" h3 f以上主要是参考正点原子的资料,如有问题,欢迎指正。
3 N$ ^$ X: A/ \6 m& B# w* V) R; ^" }7 r/ j$ u8 `: ~' g) f: x
& n- N! x# Y1 N: \% K/ k% e

8 I) w* m2 P' L% X  \8 I' N* [
收藏 评论0 发布时间:2021-12-15 11:00

举报

0个回答

所属标签

相似技术帖

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