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

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

[复制链接]
STMCU小助手 发布时间:2021-12-15 11:00
众所周知,时钟系统是CPU的脉搏,就像人的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。
: f4 W8 K% K0 O* z1、STM32F7 的时钟系统图6 U0 J+ r5 \* N

4 G% V5 d$ I8 w) L/ I, e( ~
20191110182213990.png

' L$ R8 p7 f/ ^4 K
0 p& g- w  W  e3 W! H2、STM32F7 时钟源
1 ]% j9 h8 n7 A在STM32F7中,有5个最重要的时钟源,为LSI、LSE、HSE、HSI、PLL。分别对应上图的1~5:
" i  P2 H/ \  S* @0 Q1 q简介如下:
8 G/ W8 q2 V7 `- M% w9 B
20191110183016302.png

" V) L$ r9 n; W! ^. e5 A% N0 M8 }) _  A/ ]" t
2019111018390151.png

. O  j. q, G4 Z; E4 X7 d) ?4 z, `8 t  ?) a3 C; d$ U4 c% I* }
值得注意的是HSE:高速外部时钟。阿波罗 STM32F7 开发板接有 25MHz 外部晶振。& Q1 o8 j6 Z* ?* g4 v
HSE 可以直接做为系统时钟或者 PLL 输入时钟,同时它经过2~31分频后也可以作为RTC时钟。! Q5 S" b% Y3 ^3 l8 {

; c* s/ J4 z' R4 e0 m3 J3、STM32F7 系统时钟8 W+ B* y+ C4 t& X
主 PLL 时钟第一个高速时钟输出 PLLP 用于生成高速的系统时钟,下面是 PLLP 的计算方法,其他PLL时钟计算方法类似。# q# X% E* N, ~( b0 r  m7 P

: U8 W5 D1 T5 {& q/ E* d1 B0 r下图是主PLL的时钟图。
% y0 C9 d5 R& H* Z2 S* t6 ]4 k* b7 l
( \& ^6 J  G9 p
20191110184516997.png
% P, A1 n6 E/ B) o
  M8 C/ D1 Y. x3 A2 C
  从上图可以看出。主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过倍频系数为 N 的倍频器出来之后还需要经过一个分频系数为P(第一个输出PLLP)或者Q(第二个输出PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。& s% o$ I& f- s( ^3 i& y6 L9 S

: Q  @; S- M; M  例如我们的外部晶振选择 25MHz。同时我们设置相应的分频器 M=25,倍频器倍频系数 N=432,分频器分频系数 P=2,那么主PLL 生成的第一个输出高速时钟 PLLP 为:  D& B# Q/ S% p1 J9 S+ s0 [6 Q

6 k( m2 }( I8 A  B( {PLL=25MHz * N /(M * P)= 25MHz * 432/(25 * 2)= 216MHz
7 g$ Z! j9 U+ M5 @# ~1 }, b8 a* _9 i2 W' O( S! I7 L- n* K
这个 216MHz 就是我们最高的系统时钟。2 p& p, V. d% E7 l1 d* o
2 f2 F( A: t* |
如果我们选择 HSE 为 PLL 时钟源,同时 SYSCL K时钟源为 PLL,那么 SYSCLK时钟为 216MHz。5 G4 m# n3 T, h: s% ^% A/ i

$ B* ]4 L* L) ^. k3 U7 @正点原子的实验基本都是采用这样的配置。; p8 e) I7 j" f* l

1 F3 h5 \4 T( ?. p: Y: N% ?! ~4、STM32F7 常用时钟# T% c" H1 ]2 G% B0 \. g. W
A ~ R 表示上图中标示的地方。7 G. f/ O7 Y" g8 A4 q% j4 c5 L

5 j7 J* i# X1 _* w3 rA、 这是低功耗定时器LPTimer时钟,从图中可以看出,LPTimer有四个时钟源可以选择,分别为LSI、HSI、LSE和PCLKx,默认情况下LPTimer选用PCLKx作为时钟源。- D' D6 a& K% t

+ \4 u( V( F$ ~1 mB、 这里是USART时钟源。从图中可以看出,USART 时钟源可选为 LSE、HSI、SYSCLK以及PCLKx,默认情况下USART选用PCLKx作为时钟源。
: @: q! D/ `  r1 d; j+ I. v
9 V( y' D" Q, B; `& z+ f  _8 C- FC、 这里是硬件I2C时钟源,从图上可以看出,I2C可选时钟源为HSI、SYSCLK以及PCLKx。默认情况下I2C选用PCLKx作为时钟源。/ ]& t$ d$ }) u5 i% n

' F/ i0 f" F" k! Z  P$ r* pD、 这是STM32F7独立看门狗IWDG时钟,来源为LSI。/ K$ ~' g6 ]; [  T$ O/ V" l
- i7 ]  [+ p2 @# |8 Z
E. 这里是RTC时钟源,可选LSI、LSE和HSE的2~31分频。
$ X5 a- @& f! W* U! R% m( K: s8 G1 S& Y
F. 这是SDMMC时钟源,来源为系统时钟SYSCLK或者PLL48CLK,其中PLL48CLK来源为PLLQ或者PLLSAIP。
' k; {  ~) l% l9 g% Y
: ?1 |5 w$ U+ R: FG、 这是STM32F7输出时钟MCO1和MCO2。MCO1是向芯片的PA8引脚输出时钟。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。
, G3 h. y/ d9 z+ S: u9 J% ]1 O$ |& f" M$ l) A$ o! ]
H、 这是系统时钟 SYSCLK时钟源,可选HSI、HSE和PLLCLK。HSI是内部16MHz时钟精度不够,HSE是外部晶振产生时钟频率较低,大部分情况下系统都会选择PLLCLK作为系统时钟。, c" x3 O" d) P. e

, u6 x7 u/ b! V' ~" VI、 这是以太网 PTP 时钟,来源为系统时钟 SYSCLK。, G7 [3 s' w) S8 N% R! N. F
1 Z5 n! U6 n4 K6 [* w# Z
J、 这是AHB总线预分频器,分频系数为2(N=0-9)。系统时钟SYSCLK经过AHB预分频器之后产生AHB总线时钟HCLK。
! d8 ^2 D; K/ E4 T: S+ X0 R% z
: j2 O1 _1 @0 RK、 这是APBx预分频器(分频系数可选1,2,4,8,16),HCLK(AHB总线时钟)经过APBx预分频器之后,产生PCLKx。这里大家还要注意,APBx定时器时钟是PCLKx经过倍频后得来,倍频系数为1或者2,如果APBx预分频系数等于1,那么这里的倍频系数为1,否则倍频系数为2。3 ~. V# V1 _0 l$ R% q- t2 e

, ?( h5 k. G6 w* A! P8 hL-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。
. W: B" a4 @* |# t6 V, L* g, c/ G$ Q2 h7 P5 m
O、 这是SPDIFRX时钟,由PLLI2SP提供。
! n: R( }  v$ i$ Z9 ?0 \
& U9 F6 s6 T7 _3 eP、 这是LCD-TFT时钟,由PLLSAIP提供。
* M' C9 |8 E& N' `: k. \: J) ~9 Q- D
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。
0 `$ m, p1 n; [1 b. q0 U8 @8 O  E1 S% z+ n) Z
R、 这里是指外部PHY提供的USB OTG HS(60MHZ)时钟。
( K- a5 f5 `! Y" P
; E; J' G" r! _, V5、STM32F7 总线时钟APB1和APB2
$ ?( N3 `+ d0 x1 P! {APB1和APB2都是总线时钟,一个是高速时钟,一个是低速时钟;他们下面挂的外设不同,因为不同的外设需要的时钟不同。
) p* x6 m& b- ]0 t
$ y, y- y$ a, w- W: x5 hAPB2是高速时钟,负责AD,I/O,串口1,高级定时器TIM;6 Z1 f6 T9 G# h1 g& v( h

' B5 X; }* V: G! RAPB1是低速时钟负责DA,串口2,3,4,5,普通定时器TIM, USB , IIC , CAN;) |1 d0 q9 e: M- _6 W9 C
/ v, [2 _+ y. V$ L
APB1和APB2的配置如下图所示:3 u# x9 s# A4 x3 |4 y" f
: @4 _! {; i  L
201911102019006.png
, L; W9 t! Q, C- L

, ^$ m! o5 W' M9 D/ e6、STM32F7 ADC时钟配置8 @1 [+ Z8 B# h6 B) M, C* h/ j- ]
6.1、ADC的最大工作频率
6 R/ W; ~( _( i* ]/ ]3 PSTM32F767IGT6包含有3个ADC。
$ }" O/ S( n8 _5 c4 x
. m& M2 U4 E! q, I. TSTM32F767的ADC最大的转换速率为2.4Mhz,也就是转换时间为0.4lus(在ADCCLK=36M,采样周期为3个ADC时钟下得到),不要让 ADC 的时钟超过36M,否则将导致结果准确度下降。
: I* l* v( q' u4 G, R1 \" z1 {& h) _
STM32F767的ADC最大工作频率是 36 Mhz,而ADC时钟(ADCCLK)来自APB2,APB2 频率一般是 108Mhz。
% K( A7 S8 d1 w+ \  k8 b) A: ~& j  R2 l( Q( w
ADC的工作频率主要通过通用控制寄存器 ADC_CCR 配置:
4 y1 `- e6 F7 S2 M' e下图是我从STM32F7中文参考手册中截取出来的。3 b7 g$ _$ ]4 F: I8 [

# J# K9 F' t/ W
20191110194944798.png

- I  W% o( n2 C' O% Y* w) o3 G1 I/ S1 w. S$ j5 t+ x
20191110195059481.png

4 U0 @3 A: N8 v6 \' ?
) X0 W8 I/ R, F0 ?4 |我们一般采用 4 分频配置ADC频率,得到ADC最大工作频率为 27 MHz。% |# M) ~1 M1 s* K& a/ T! E* [5 u( e
+ b, {/ m, I; h: g+ O8 t  f
6.2、ADC的采样频率! h  E4 J, r1 I4 C: Q9 s9 Q
ADC的采样时间由 ADC 采样时间寄存器(ADC_SMPR1和ADC_SMPR2)控制。3 J0 M# m' D& S% S5 f. l! @
20191110203608909.png
9 i3 E* C$ E8 j) _! W" D

" B2 @0 w, |2 o8 F3 J+ {
20191110203623133.png

/ X# t* b9 p3 d
! }! y7 K6 f( Z" y& @: V; G* ~" _; u+ [* @: S* h! b' W# O( D$ |
寄存器 ADC_SMPR2 与 ADC_SMPR1 类似。5 }& \& h7 X2 p/ Z& M8 |
& a! y. V* b* l: m8 R% X
ADC的转换时间:+ }2 c  ~" W: u( o: I2 J* m

+ j8 \" C$ a- m3 s$ z
20191110203826589.png
# K9 b' w# P& g

: L+ E$ A) |4 f( X* L# [0 B所以,ADC 的采样频率是:
& }4 K, a5 w1 ~& C  A9 D
9 D/ V4 S  E) D5 q+ S+ r
20191110204110197.png
) S3 `, S/ s. A5 D, s4 M9 Q: J# S  w
/ t  Z* Z6 x" O7 ]- i: N. L( [
以上主要是参考正点原子的资料,如有问题,欢迎指正。7 w/ G  B( W5 m( t# _
2 b1 y, H) M: I/ L' V: J

, j* K+ P- V, }9 {  w6 b  E
6 k6 r7 E$ g* @$ k; l
收藏 评论0 发布时间:2021-12-15 11:00

举报

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