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

如何校准 STM32L1xx 内部 RC 振荡器

[复制链接]
STMCU小助手 发布时间:2022-7-17 22:41
前言
; j' Z3 k7 }" v9 CSTM32L1xx 微控制器有两个内部 RC 振荡器可做为系统时钟源。它们是 HSI(高速内部)和MSI(多速内部)振荡器。HSI 振荡器的典型频率为 16 MHz。MSI 振荡器为低速、低功耗时钟源。
1 h: I+ |5 H6 ?3 n& J, C6 X( i: g7 M1 n工作温度对 RC 振荡器的精度有影响。在 25 ℃时,HSI 和 MSI 振荡器的典型精度为 ±1%,但在 -40 到 105 ℃温度范围,精度会降低。
, n+ u0 Y  U7 [& O6 y# Q. x* x为补偿温度对内部 RC 振荡器精度的影响,STM32L1xx 微控制器的内置一些功能可帮您校准HSI 和 MSI 振荡器及测量 MSI 和 LSI (低速内部)振荡器频率。5 G4 C. r' n5 V2 T; f$ h
本应用笔记侧重如何校准内部 RC 振荡器:HSI 和 MSI。它展示了两个方法:第一个方法基于寻找具有最低误差的频率,第二个方法是寻找具有最大允许误差的频率。两个方法都通过提供精确参考信号的方式实现。
! k  G; n2 r3 W6 Q4 Y/ bMSI 和 LSI 振荡器的测量都是通过将振荡器连至定时器输入捕获执行。0 l+ Z$ P9 |, n& l
注 : 1在本文中, STM32L1xx 指超低功耗大容量、中容量增强型、中容量器件。
' E$ x, i$ A3 l  V2超低功耗中容量器件为 STM32L151xx 和 STM32L152xx 微控制器,其闪存密度范围为 64至 128K 字节。: h" W5 H- R: Z
3超低功耗中容量增强型器件为 STM32L151xx、 STM32L152xx 和 STM32L162xx 微控制器,其闪存密度为 256 K 字节。
+ r( \# ]) l! X7 K, f4超低功耗大容量器件为 STM32L151xx、STM32L152xx 和 STM32L162xx 微控制器,其闪存密度为 384 K 字节。
& L$ Q; P' R6 {# n7 I( L7 Q3 t6 l0 U) C% c- u
/ _, Y$ e4 q" H0 b+ n
1 STM32L1xx 系统时钟5 T3 a) [: e) l9 m
STM32L1xx 微控制器系列有多个时钟源可用于驱动系统时钟:8 |7 [: r1 r8 b* o4 Q
●16 MHz 高速内部 (HSI) RC 振荡器时钟4 V# m% K0 v6 o* G" i4 }! u' {. ^
●1 至 24 MHz 高速外部 (HSE)振荡器时钟* V; X' l" `0 t& w0 j* I
●65.5 kHz 至 4.2 MHz 多速内部 (MSI) RC 振荡器时钟
5 h8 [$ h5 }4 Z0 S●2 至 24 MHz 锁相环 (PLL),由 HSI 或 HSE 振荡器提供时钟
( ~% j9 E( @% W; y高速内部 (HSI) RC 振荡器一般频率为 16 MHz,耗电 100 µA。
, p' e) r9 m: r- O; u多速内部(MSI)RC 振荡器提供了七个频率范围:65.5 kHz、131 kHz、262 kHz、524 kHz、1.05 MHz、 2.1 MHz (默认值)和 4.2 MHz。它的设计为工作电流与频率成正比 (请参考产品手册以获得 MSI 耗电与所选频率范围之间关系的更详细信息),因此当 CPU 在低频运行时,内部振荡器耗电可最小化。在从复位重启、从停止唤醒、待机低功耗模式后, MSI 时钟被用作系统时钟。5 F! m/ u* J3 W  ]$ S. ?
内部 RC 振荡器 (HSI 和 MSI)提供了低成本时钟源 (不需外部元件),这是其优点。它还具有比外部振荡器更快的启动时间和更低的功耗。可校准 HSI 和 MSI 振荡器以提高其精度。
: g( i9 B3 ~* ?* t但即使校准后,内部RC振荡器频率也不如外部晶振或陶瓷谐振器的频率精度(几十ppm)高。
% I9 T9 b; i" t, f注 :若外部振荡器发生故障,内部 RC 振荡器 (HSI 和 MSI)还可作为备份时钟源 (辅助时钟)使用。
  h: _5 |* e' v$ I, a% b4 M- t4 |0 `6 n6 ^

! M: e' E7 z/ S5 P ~`9Z9]ZE]GS4[AZ%7KPJX.png
( P# B, K# ~7 b  R( M
8 \" Z/ J- f, Y/ Q

  {# f, E# y6 F; q. b, [5 T! F) Y! {
STM32L1x 器件还有两个次级时钟源 (不能用作系统时钟源):
5 f% \$ u0 |6 C5 A* T●37 kHz 低速内部 (LSI) RC,设计为驱动独立看门狗,也可驱动实时时钟 (RTC)。
  x( Z' ^. e; Q6 v" C该 LSI 振荡器无法校准,但可对其测量以评估 (由温度和电压变化引起的)频率偏差7 S& M# F1 ?$ X/ e% L, `( I7 i
●32.768 kHz 低速外部晶振 (LSE 晶振),用于驱动实时时钟 (RTC)
! N- N# N0 C( G7 G3 ]4 \/ r' H
. L1 r/ a8 ~/ q5 Z& \& `% m
. y) t/ R5 j! E, I
2内部 RC 振荡器校准
: T; v2 `+ r* t5 a7 Q由于生产过程的不同,每个芯片的内部 RC 振荡器的频率都可能不同。因此,MSI 和 HSI RC振荡器由 ST 工厂校准,以获得 TA = 25 ℃时 1% 的精度。复位后,工厂校准值自动加载到内部校准位中。
% |: o& V/ J* L9 C可微调内部 RC 振荡器的频率,以在更宽的温度和供电范围内达到更好的精度。这就是微调位的作用。( {( f$ ]& y$ z2 e% Q' V
对于 HSI 振荡器,复位后校准值加载于 HSICAL[7:0] 位中。有五个微调位 HSITRIM[4:0] 用于微调。默认微调值为 16。增加 / 降低此微调值会增加 / 降低 HSI 频率。 HSI 振荡器微调步长为 0.5% (在 80 kHz 周围)。# `% b7 I2 z' @; R6 G; f% w3 X
●将微调值写为 17 至 31 会增加 HSI 频率。3 W: D" F% P4 W' M
●将微调值写为 0 至 15 会降低 HSI 频率。
6 u5 P9 O2 C: j7 c7 X3 ?●将微调值写为 16, HSI 频率会保持为默认值。
- t3 u( {1 q# Z* g, O下图显示了随校准值变化的 HSI 振荡器行为。HSI 振荡器频率随校准值增加(校准值 = 默认的 HSICAL[7:0]+ HSITRIM[4:0]),除了在模 16 处。在这些校准值处,负步进会达到正步进的三倍。
! D1 S/ e5 I9 ^, d& f5 Z6 L) e) m  C1 ^) ^: O' D
3 l4 f* x/ g/ o/ N7 \
(Q6ATQ9{)2MKGV_M]T6AUYX.png
7 j" }. i, B* @; z
( q+ t2 h! w9 o% u% l
( O6 H1 G- A* S5 A4 n  C, u

$ q. U% J9 O+ y& N●对于 MSI 振荡器,复位后校准值加载于 MSICAL[7:0] 位中。使用了八个微调位MSITRIM[7:0],因此有更宽的调整范围。校准基于将默认的 MSICAL[7:0] 位 (复位值)加上 MSITRIM[7:0] 位。
0 E7 a, ?/ c9 b1 N; g结果储存于 MSICAL[7:0] 中:
# [! v; \. m, |) kMSICAL[7:0] = 默认的 MSICAL[7:0] + MSITRIM[7:0]
% t) l9 t' X( L
0 A9 G1 i# g1 ^' b* l) h

* P0 v1 Q6 {. |6 \* o示例:
7 j1 D/ v" y1 n  c5 W3 c$ i9 y假设默认的 MSI 校准值 MSICAL[7:0] 为 0x80。8 J5 u4 X+ t, S, Q2 i: d
1.将 0x01 到 0x7F 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:2 B8 e& c1 p) P
MSICAL[7:0] = 0x80 + 0x01 = 0x81及 MSICAL[7:0] = 0x80 + 0x7F = 0xFF2 D% U9 a% Y# l( p; C
这些结果大于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率增加 1 步 (0x81 -0x80)至 127 步 (0xFF - 0x80)。
/ q* g1 l5 k2 w; _5 b7 ~' A% N2. 将 0x81 到 0xFF 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:+ Y9 `1 h7 _& |7 v, Z$ I, Q
MSICAL[7:0] = 0x80 + 0x81 = 0x01及 MSICAL[7:0] = 0x80 + 0xFF = 0X7F% o# c# c' m. @; c. v; ?/ W' \
这些结果小于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率降低 1 步 (0x01)至127 步 (0x7F)。
9 X+ [1 B+ N4 J* B7 k+ j- p3. 在 MSITRIM[7:0] 中写入默认校准值 (0x80)会导致校准值 MSICAL[7:0] 等于MSICAL[7:0] = 0x80 + 0x80 = 0x00,因此 MSI 频率会降低 128 步 (最低频率)。
, h( O' d+ w& d1 x5 R; C- J  q& ^& l1 I! S% {" G

9 u0 c) g5 Q% U; y9 O4 u, y下面的图 3 显示了在范围 6 (4194304 Hz)处 MSI 行为随 MSICAL[7:0] 的变化。
! B% A6 G+ E; t' q% ~9 e+ o) G. ]! [  y! y9 Y
* E/ c8 J( v& g
W2%OP3JG(%4YIJBYO4ILH%P.png
" i3 V, c  E* D; ~1 G' [7 X' P$ N0 K8 h! N! P: c) v6 k. H

- F- Z  @( j5 v% {( n6 F, W0 Q) L% W2 X2 Y
2.1校准原理8 {$ l- f0 G7 ^4 w: \; a
校准原理包括:8 L6 u6 T; Z+ X! T6 t$ T/ F
1.将 (需要校准的)内部 RC 振荡器设置为系统时钟,% U, z9 X6 L2 s; c/ b
2. 测量每个微调值的内部 RC 振荡器 (HSI 或 MSI)频率,5 P8 I1 ?# u, E9 |  e* J( W( O$ ~5 }# a
3. 计算每个微调值的频率误差,
$ e- e2 D% w8 i, Z7 M/ \4. 最后,将微调位设置为最优值 (对应于最低频率误差)。
/ }! j+ j2 b' b( b内部振荡器频率并非直接测量,而是使用定时器计算时钟脉冲个数,与典型值比较。为此,必须有一个非常精确的参考频率,比如由外部 32.768 kHz 晶振或 50 Hz/60 Hz 电源频率(请参考第 2.2.2 章节 : 其它源用作参考频率的情况)。
& n  N* n4 ^$ A  ~下图显示了怎样使用定时器计数个数测量参考信号周期。
. b& x5 M# {$ H; u8 r+ `' q. O
, B3 `3 z5 ?; i, Z$ `8 i
% D3 q+ X) E* E& I# i8 u* K9 K
9{J2ET5Y5GDQ(4YY42G(IH2.png : K/ ?# E& j6 g( U3 R
  }+ C  h2 l! S# ]! _
启用定时器计数后,当第一个参考信号上升沿发生时,捕捉定时器计数值,储存于IC1ReadValue1 中。在第二个上升沿,又捕捉到定时器计数,储存于 IC1ReadValue2 中。在两个连续上升沿之间的时间 (IC1ReadValue2 - IC1ReadValue1)表示了参考信号的整个周期。
- d% T, w6 W- ^# L因为定时器计数器的时钟由系统时钟提供 (内部 RC 振荡器 HSI 或 MSI),因此与参考信号" n2 x6 M( u8 z* h& X* ]
有关的内部 RC 振荡器生成的真正频率为:
8 G2 e8 M1 g# K' ^
! z6 _" K! f9 `6 v5 N7 K! Y0 q8 _  O' m4 `

- q  l& ~3 ]7 S8 I& I H%DV`U(N$~$ZD0INB%Y5D_A.png
5 A8 T& E( g2 g2 @4 u2 c4 u# [+ l
: O( K% ]% G0 U3 h/ L' }
误差 (单位 Hz)为测量频率与典型值之差的绝对值。
+ y+ t, _, {% W0 W因此,内部振荡器频率误差表示为:. ?1 w8 _+ l. z' I

$ m& s" G1 r' h: ]- {$ U
7 N" `* a8 ~4 F2 p. Y7 K
GL(JF6C)_9NR}~QSQS[4F}M.png ) B0 O3 d9 i5 m1 P! y# X  a- A1 t' w

$ e$ F" m. R2 l3 s. _* Y
0 e- N7 Z7 a* _0 y2 L
对每个微调值计算误差之后,算法会决定最优微调值 (对应于最接近典型值的频率),编程于微调位中 (请参考第 2.3 章节 : 内部振荡器校准固件说明以获取更详细信息)。( |/ Y# O9 ~) ?& s( j8 G, w

% g: C: N" {9 w# D% f  h
/ ?8 \) }" T. i- I, [
: t( x6 M- \  M, t3 _1 r% M
8 G8 U: H2 T4 s
完整版请查看:附件
0 D( B2 W% F: V% w
: N" W2 H! c  G( l+ ~
! _1 f" a4 w  v3 a# B: p
8 X+ h% m9 d4 ?& l& }
7 p- S, U7 L( e/ j% z0 P

CD00161561_ZHV11.pdf

下载

1.47 MB, 下载次数: 10

赞 收藏 评论0 发布时间:2022-7-17 22:41

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版