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

如何校准 STM32L1xx 内部 RC 振荡器

[复制链接]
STMCU小助手 发布时间:2022-7-17 22:41
前言
% ?+ U# a4 M( H" c, q5 A2 n; qSTM32L1xx 微控制器有两个内部 RC 振荡器可做为系统时钟源。它们是 HSI(高速内部)和MSI(多速内部)振荡器。HSI 振荡器的典型频率为 16 MHz。MSI 振荡器为低速、低功耗时钟源。
  p( i7 \9 j6 S: t+ C9 F工作温度对 RC 振荡器的精度有影响。在 25 ℃时,HSI 和 MSI 振荡器的典型精度为 ±1%,但在 -40 到 105 ℃温度范围,精度会降低。
. ]5 n7 S: [: n3 h6 O1 m  j( T为补偿温度对内部 RC 振荡器精度的影响,STM32L1xx 微控制器的内置一些功能可帮您校准HSI 和 MSI 振荡器及测量 MSI 和 LSI (低速内部)振荡器频率。) e" q0 ^' v* Y% F6 s+ z
本应用笔记侧重如何校准内部 RC 振荡器:HSI 和 MSI。它展示了两个方法:第一个方法基于寻找具有最低误差的频率,第二个方法是寻找具有最大允许误差的频率。两个方法都通过提供精确参考信号的方式实现。5 q5 S) [% Q4 L2 D9 r/ M6 l* ^
MSI 和 LSI 振荡器的测量都是通过将振荡器连至定时器输入捕获执行。
  W  q, J* n" H( s/ O! p注 : 1在本文中, STM32L1xx 指超低功耗大容量、中容量增强型、中容量器件。
5 f% ]  N! R$ d4 k1 {5 d5 ~9 K8 M" k2超低功耗中容量器件为 STM32L151xx 和 STM32L152xx 微控制器,其闪存密度范围为 64至 128K 字节。
& E; G$ k; h% A) ]- v3 b; ?' |3超低功耗中容量增强型器件为 STM32L151xx、 STM32L152xx 和 STM32L162xx 微控制器,其闪存密度为 256 K 字节。
  @8 |+ d; P2 {5 }# {9 A, H7 M1 }6 n4超低功耗大容量器件为 STM32L151xx、STM32L152xx 和 STM32L162xx 微控制器,其闪存密度为 384 K 字节。
  a2 _7 W4 A- ], f
* e, E+ {: t/ _& o% n
' r0 o# ^) K, ~- ~5 g* b! b
1 STM32L1xx 系统时钟  \7 B% v1 J3 k  t  m
STM32L1xx 微控制器系列有多个时钟源可用于驱动系统时钟:8 k" V5 G* j, X* O7 i; @
●16 MHz 高速内部 (HSI) RC 振荡器时钟! l& Z& ^1 y9 ^% V! v; e6 Y" E
●1 至 24 MHz 高速外部 (HSE)振荡器时钟# B% m) ^" T5 z8 X* B. o9 N8 q
●65.5 kHz 至 4.2 MHz 多速内部 (MSI) RC 振荡器时钟4 V8 W0 k$ n- G7 b! N  Q
●2 至 24 MHz 锁相环 (PLL),由 HSI 或 HSE 振荡器提供时钟$ u  A- j+ w* q
高速内部 (HSI) RC 振荡器一般频率为 16 MHz,耗电 100 µA。. ~3 C& ~1 d1 C# {! f
多速内部(MSI)RC 振荡器提供了七个频率范围:65.5 kHz、131 kHz、262 kHz、524 kHz、1.05 MHz、 2.1 MHz (默认值)和 4.2 MHz。它的设计为工作电流与频率成正比 (请参考产品手册以获得 MSI 耗电与所选频率范围之间关系的更详细信息),因此当 CPU 在低频运行时,内部振荡器耗电可最小化。在从复位重启、从停止唤醒、待机低功耗模式后, MSI 时钟被用作系统时钟。
* t9 l% M. L3 ^" |! L内部 RC 振荡器 (HSI 和 MSI)提供了低成本时钟源 (不需外部元件),这是其优点。它还具有比外部振荡器更快的启动时间和更低的功耗。可校准 HSI 和 MSI 振荡器以提高其精度。
/ X+ F7 Q" S+ h但即使校准后,内部RC振荡器频率也不如外部晶振或陶瓷谐振器的频率精度(几十ppm)高。
5 N! w$ }) L9 _  A7 r" K0 v' j/ ]注 :若外部振荡器发生故障,内部 RC 振荡器 (HSI 和 MSI)还可作为备份时钟源 (辅助时钟)使用。
3 m4 c6 u/ _) B& @% x/ P1 w. o1 ^% G( A: t) V( }7 A; S0 f, @; ]

+ `- o1 E. v% M: f) V ~`9Z9]ZE]GS4[AZ%7KPJX.png . D, d/ D$ E( `

# L, L. y; p. m5 [

4 y" R+ @* L# u8 U& F% W. L4 g# x9 ~4 r
STM32L1x 器件还有两个次级时钟源 (不能用作系统时钟源):
) d: f  _8 |" P6 D) ?; Z●37 kHz 低速内部 (LSI) RC,设计为驱动独立看门狗,也可驱动实时时钟 (RTC)。
0 u9 Z5 ]" m: E$ Z该 LSI 振荡器无法校准,但可对其测量以评估 (由温度和电压变化引起的)频率偏差
9 F1 M- q4 [9 h' B$ @* v9 p* e  C●32.768 kHz 低速外部晶振 (LSE 晶振),用于驱动实时时钟 (RTC)2 l0 z7 |" J0 f' c$ y

! o% ^; g: _5 s9 @

# V  t, {- Y5 J9 y3 @2内部 RC 振荡器校准0 g* D* T: Y( @0 V$ Q
由于生产过程的不同,每个芯片的内部 RC 振荡器的频率都可能不同。因此,MSI 和 HSI RC振荡器由 ST 工厂校准,以获得 TA = 25 ℃时 1% 的精度。复位后,工厂校准值自动加载到内部校准位中。
6 v/ H* D* w( R; X# ~- j5 o6 k, L可微调内部 RC 振荡器的频率,以在更宽的温度和供电范围内达到更好的精度。这就是微调位的作用。$ C8 A. `4 i4 [+ p: z/ z/ s
对于 HSI 振荡器,复位后校准值加载于 HSICAL[7:0] 位中。有五个微调位 HSITRIM[4:0] 用于微调。默认微调值为 16。增加 / 降低此微调值会增加 / 降低 HSI 频率。 HSI 振荡器微调步长为 0.5% (在 80 kHz 周围)。4 y4 P% R* \1 \
●将微调值写为 17 至 31 会增加 HSI 频率。" U9 d# ^8 t1 ^0 c$ P0 X: B% \
●将微调值写为 0 至 15 会降低 HSI 频率。+ a7 Y' j- d  a# D' t3 a
●将微调值写为 16, HSI 频率会保持为默认值。
& B3 t: T& |5 _下图显示了随校准值变化的 HSI 振荡器行为。HSI 振荡器频率随校准值增加(校准值 = 默认的 HSICAL[7:0]+ HSITRIM[4:0]),除了在模 16 处。在这些校准值处,负步进会达到正步进的三倍。
" u& u& j( ^, D8 R2 B# ~, a1 y* ]- n2 C1 B0 \
5 K) E' Z5 q2 n5 l& k  C, J" j- y
(Q6ATQ9{)2MKGV_M]T6AUYX.png
. i0 C, C8 Y8 i2 l7 {
9 B7 {2 B8 @2 p4 g
1 p8 B9 u) {- h; c

) h- n4 F4 k4 A. Y& e' R1 J●对于 MSI 振荡器,复位后校准值加载于 MSICAL[7:0] 位中。使用了八个微调位MSITRIM[7:0],因此有更宽的调整范围。校准基于将默认的 MSICAL[7:0] 位 (复位值)加上 MSITRIM[7:0] 位。0 Y% V# K9 Q7 T4 F+ u  Q
结果储存于 MSICAL[7:0] 中:7 {- V. r  I. x/ H3 b8 g
MSICAL[7:0] = 默认的 MSICAL[7:0] + MSITRIM[7:0]
0 x2 v( i$ A0 c- N6 _4 g; \" c6 [" v; g! T! w7 H
0 x  |  d' f: q: h( N
示例:! ~8 X3 D* l/ S! ?: h: s/ E
假设默认的 MSI 校准值 MSICAL[7:0] 为 0x80。
9 c' q$ _9 o) ~7 x: H7 j1.将 0x01 到 0x7F 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:
; U4 j( h* w1 a" j/ cMSICAL[7:0] = 0x80 + 0x01 = 0x81及 MSICAL[7:0] = 0x80 + 0x7F = 0xFF
; d; p9 e2 F; r4 E$ v+ K这些结果大于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率增加 1 步 (0x81 -0x80)至 127 步 (0xFF - 0x80)。
! Q* d1 @0 f9 W$ c2. 将 0x81 到 0xFF 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:
3 S% l5 D) l/ C1 m$ YMSICAL[7:0] = 0x80 + 0x81 = 0x01及 MSICAL[7:0] = 0x80 + 0xFF = 0X7F
7 E+ Y+ K2 q9 |+ O, a# M8 {* w4 ^这些结果小于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率降低 1 步 (0x01)至127 步 (0x7F)。, d! W: G4 T) F6 u1 d
3. 在 MSITRIM[7:0] 中写入默认校准值 (0x80)会导致校准值 MSICAL[7:0] 等于MSICAL[7:0] = 0x80 + 0x80 = 0x00,因此 MSI 频率会降低 128 步 (最低频率)。  o3 I$ g8 _9 d- I* C0 Q' ~

# @: Z" }" e% f, y* k3 S/ R+ {

1 j2 @+ n& ~' K8 ^9 |2 t7 {下面的图 3 显示了在范围 6 (4194304 Hz)处 MSI 行为随 MSICAL[7:0] 的变化。
* U+ r# Z5 H/ T  h1 {0 z, L% ^( w' p0 O. m( k, f
7 E4 {4 G, M5 C+ V# y) L% t
W2%OP3JG(%4YIJBYO4ILH%P.png
8 g7 b2 ~" \# U& O: a0 d1 m6 ^! ?3 g0 x
5 Y/ u6 X6 l- E7 k

: _0 }& `; F) a* D2.1校准原理) E! a9 g/ m5 m' B
校准原理包括:
  ^% c1 @% Y3 b( t1.将 (需要校准的)内部 RC 振荡器设置为系统时钟,( F  v' L3 k" b
2. 测量每个微调值的内部 RC 振荡器 (HSI 或 MSI)频率,
6 z: n% v1 K/ @2 g, H3. 计算每个微调值的频率误差,
# ?9 m7 x0 Y8 r! G# _6 K. V/ s; `4. 最后,将微调位设置为最优值 (对应于最低频率误差)。
' s( I, S% K4 O0 c+ V9 D内部振荡器频率并非直接测量,而是使用定时器计算时钟脉冲个数,与典型值比较。为此,必须有一个非常精确的参考频率,比如由外部 32.768 kHz 晶振或 50 Hz/60 Hz 电源频率(请参考第 2.2.2 章节 : 其它源用作参考频率的情况)。
' P& h; S$ ~5 i4 s; s, V  d! A下图显示了怎样使用定时器计数个数测量参考信号周期。
8 o/ _- a' Y6 t! N9 r6 o$ z2 W2 k0 U2 Z+ F* `% r# S
& v/ O& f3 w$ [' I3 B3 \* b
9{J2ET5Y5GDQ(4YY42G(IH2.png
; S; l+ a( @% q& ]2 q% j
% ?3 S( H2 W# z/ Q7 p" `启用定时器计数后,当第一个参考信号上升沿发生时,捕捉定时器计数值,储存于IC1ReadValue1 中。在第二个上升沿,又捕捉到定时器计数,储存于 IC1ReadValue2 中。在两个连续上升沿之间的时间 (IC1ReadValue2 - IC1ReadValue1)表示了参考信号的整个周期。+ p  Z7 ]' R/ D7 ~
因为定时器计数器的时钟由系统时钟提供 (内部 RC 振荡器 HSI 或 MSI),因此与参考信号5 `9 R" y* t2 R- P+ `
有关的内部 RC 振荡器生成的真正频率为:
, a* H- z. Y: {) Q; F1 g
4 D; W( {+ c4 r* A: w$ r

: |1 J- J" m& R& t2 ]$ ] H%DV`U(N$~$ZD0INB%Y5D_A.png
" D2 O8 Y/ n: U3 s- {6 B6 o& l3 A6 ~. _* d# f' }) Q
' ~$ K8 `7 ]8 b5 w5 H% n" p
误差 (单位 Hz)为测量频率与典型值之差的绝对值。
. X& }" L; F9 P, ~- s( V因此,内部振荡器频率误差表示为:( F5 E. n6 H: K( T& D8 G9 L/ `6 \0 h

2 A; M' R: g# f7 D* G

3 T  m5 {2 m6 t; `8 M GL(JF6C)_9NR}~QSQS[4F}M.png / X3 w" k* p! E  X2 {! `  q

" n8 _0 ?+ t) \* G
5 `1 Q- w9 [" f
对每个微调值计算误差之后,算法会决定最优微调值 (对应于最接近典型值的频率),编程于微调位中 (请参考第 2.3 章节 : 内部振荡器校准固件说明以获取更详细信息)。
+ }9 q1 _# D4 x* M$ j# |% w: N5 E1 }8 J: h% t
* ?5 u1 a7 x; o0 ]9 Y0 C

; P0 a) }$ L) I1 O/ _4 ~; _6 x
0 D+ `3 t. X- w完整版请查看:附件
7 a$ R' Y- g+ J

# b9 h& n8 [8 j5 T9 S1 D9 |9 S, r+ ~9 o2 h7 t% H

- W; U1 P  q9 l
7 Z& [2 Q, M" m, B/ t

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 手机版