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

如何校准 STM32L1xx 内部 RC 振荡器

[复制链接]
STMCU小助手 发布时间:2022-7-17 22:41
前言, C$ V* U. @1 N# [$ v! |$ q
STM32L1xx 微控制器有两个内部 RC 振荡器可做为系统时钟源。它们是 HSI(高速内部)和MSI(多速内部)振荡器。HSI 振荡器的典型频率为 16 MHzMSI 振荡器为低速、低功耗时钟源。$ M  W9 V! a: g4 K; F
工作温度对 RC 振荡器的精度有影响。在 25 ℃时,HSI 和 MSI 振荡器的典型精度为 ±1%,但-40 105 ℃温度范围,精度会降低。- W1 h# o% ~  z2 Y9 C
为补偿温度对内部 RC 振荡器精度的影响,STM32L1xx 微控制器的内置一些功能可帮您校准HSI MSI 振荡器及测量 MSI LSI (低速内部)振荡器频率3 o: I! Y) K1 ^/ s
本应用笔记侧重如何校准内部 RC 振荡器:HSI 和 MSI。它展示了两个方法:第一个方法基于寻找具有最低误差的频率,第二个方法是寻找具有最大允许误差的频率。两个方法都通过提供精确参考信号的方式实现。
9 L$ e, J) C& y* t' ?# K+ i( y6 zMSI 和 LSI 振荡器的测量都是通过将振荡器连至定时器输入捕获执行。
8 p- P  L+ n1 e# }! h! i# i: 1在本文中, STM32L1xx 指超低功耗大容量、中容量增强型、中容量器件。
; D' M2 H2 i% d" V2超低功耗中容量器件为 STM32L151xx STM32L152xx 微控制器,其闪存密度范围为 64128K 字节。' \  N0 N9 c  @* E# c9 |& i
3超低功耗中容量增强型器件为 STM32L151xxSTM32L152xx STM32L162xx 微控制器,其闪存密度为 256 K 字节。, k: d# B: H- i6 e8 z" I( q( t
4超低功耗大容量器件为 STM32L151xxSTM32L152xx STM32L162xx 微控制器,其闪存密度为 384 K 字节。/ p3 N" ~4 `9 x" w! U! E$ p

, Y. o# I1 i- \0 y) m3 S
+ J' `% u" c5 D8 _9 Q
1 STM32L1xx 系统时钟
' K$ d7 l6 N! i8 `' fSTM32L1xx 微控制器系列有多个时钟源可用于驱动系统时钟:
9 ~/ F. N0 S. f  Y& x3 P$ H16 MHz 高速内部 (HSIRC 振荡器时钟
, f* B; W& m4 v, U1 24 MHz 高速外部 (HSE)振荡器时钟8 z4 s4 u5 F7 k$ K& Y; Z0 J
65.5 kHz 4.2 MHz 多速内部 (MSIRC 振荡器时钟
/ L9 K4 T9 o' w4 Z! Q2 24 MHz 锁相环 (PLL),由 HSI HSE 振荡器提供时钟* i6 B# G9 }) k: S7 B0 f1 \
高速内部 (HSI) RC 振荡器一般频率为 16 MHz,耗电 100 µA。
, r$ N( P3 p% J  _/ B多速内部(MSI)RC 振荡器提供了七个频率范围:65.5 kHz、131 kHz、262 kHz、524 kHz、1.05 MHz2.1 MHz (默认值)和 4.2 MHz。它的设计为工作电流与频率成正比 (请参考产品手册以获得 MSI 耗电与所选频率范围之间关系的更详细信息),因此当 CPU 在低频运行时,内部振荡器耗电可最小化。在从复位重启、从停止唤醒、待机低功耗模式后, MSI 时钟被用作系统时钟。
& P, c! G0 Z6 M  r# P  t7 d内部 RC 振荡器 (HSI 和 MSI)提供了低成本时钟源 (不需外部元件),这是其优点。它还具有比外部振荡器更快的启动时间和更低的功耗。可校准 HSI MSI 振荡器以提高其精度。
. o9 U5 X; D- }3 H7 V但即使校准后,内部RC振荡器频率也不如外部晶振或陶瓷谐振器的频率精度(几十ppm)高。$ V1 K( @2 q* S/ Q4 S# |" O
:若外部振荡器发生故障,内部 RC 振荡器 (HSI MSI)还可作为备份时钟源 (辅助时钟)使用。
1 y' n- x( B1 k) O
' h8 V" r$ M8 P
- S) ~5 s' `" g( o9 D# t9 `
~`9Z9]ZE]GS4[AZ%7KPJX.png 8 u9 d4 ~4 E  x2 B! b( G8 m

* d% i7 w% C3 F# q, x

5 B, o4 O/ W: F- H
, Q3 c# y1 s6 H; DSTM32L1x 器件还有两个次级时钟源 (不能用作系统时钟源):6 z6 `7 ~: `% H0 f
37 kHz 低速内部 (LSIRC,设计为驱动独立看门狗,也可驱动实时时钟 (RTC)。1 {  t) y# O3 c2 i
该 LSI 振荡器无法校准,但可对其测量以评估 (由温度和电压变化引起的)频率偏差, Z6 G- M* Q+ f
32.768 kHz 低速外部晶振 (LSE 晶振),用于驱动实时时钟 (RTC)
6 y4 v% ^9 }4 I6 P
, M. f% T* M& I- A

& H& S  K& h5 V* K& r2内部 RC 振荡器校准
1 `% v% I6 `7 {: s3 ~9 t由于生产过程的不同,每个芯片的内部 RC 振荡器的频率都可能不同。因此,MSI 和 HSI RC振荡器由 ST 工厂校准,以获得 TA = 25 ℃时 1% 的精度。复位后,工厂校准值自动加载到内部校准位中。0 `5 H0 b; g! N, U# b
可微调内部 RC 振荡器的频率,以在更宽的温度和供电范围内达到更好的精度。这就是微调位的作用。$ Y( |* Y- S0 v; q+ T. _& P/ ?* f
对于 HSI 振荡器,复位后校准值加载于 HSICAL[7:0] 位中。有五个微调位 HSITRIM[4:0] 用于微调。默认微调值为 16。增加 / 降低此微调值会增加 / 降低 HSI 频率。 HSI 振荡器微调步长0.5% (在 80 kHz 周围)。
* I' ?+ h* p  _1 c3 L* }将微调值写为 17 31 会增加 HSI 频率。
: [# F1 k# {9 s( T将微调值写为 0 15 会降低 HSI 频率。* d% _' @+ U- {& O+ T& T: y7 c4 |
将微调值写为 16HSI 频率会保持为默认值。& U$ v" x3 w$ ~/ d
下图显示了随校准值变化的 HSI 振荡器行为。HSI 振荡器频率随校准值增加(校准值 = 默认HSICAL[7:0]+ HSITRIM[4:0]),除了在模 16 处。在这些校准值处,负步进会达到正步进的三倍。  J1 r! ]* ~- e
. ~4 Z! \7 J) Z& m, b  R- T/ c

3 y: L3 T* d6 l; d9 Y  u (Q6ATQ9{)2MKGV_M]T6AUYX.png
/ Q0 h, x  t3 ~9 Z# D$ J3 }
- {, S( m: \5 P) G) J

+ R/ u, w) V4 @5 o4 F! \7 F) Z+ U2 T* s: Z# N
对于 MSI 振荡器,复位后校准值加载于 MSICAL[7:0] 位中。使用了八个微调位MSITRIM[7:0],因此有更宽的调整范围。校准基于将默认的 MSICAL[7:0] 位 (复位值)加上 MSITRIM[7:0] 位。
% j4 y$ ?" `0 R5 x! E- P结果储存于 MSICAL[7:0] 中:0 I) k. @, |2 {: @" S& t* g1 C
MSICAL[7:0] = 默认的 MSICAL[7:0] + MSITRIM[7:0]- [9 G1 [; T3 d9 u) B* ?) E

! `; C. S: I" L7 w

/ D4 W6 f4 U3 ]$ ^, l  _% V示例:
1 ~1 M% d  i) v3 N6 u假设默认的 MSI 校准值 MSICAL[7:0] 为 0x80。0 i, {+ E# V8 ?' J; d
1.0x01 0x7F 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:& E' L$ m+ j' G: g
MSICAL[7:0] = 0x80 + 0x01 = 0x81MSICAL[7:0] = 0x80 + 0x7F = 0xFF& I2 G4 ~3 _4 C2 y4 C- a9 T' B6 p
这些结果大于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率增加 1 步 (0x81 -0x80)至 127 步 (0xFF - 0x80)。
) q5 c$ B. ~% x! e( F2. 将 0x81 到 0xFF 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:' x( s5 a1 y& i! W, p$ V% U
MSICAL[7:0] = 0x80 + 0x81 = 0x01MSICAL[7:0] = 0x80 + 0xFF = 0X7F1 Y: F2 }% w: Y& ^1 z0 h
这些结果小于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率降低 1 步 (0x01)至127 步 (0x7F)。
* u) G) T9 v  q3. 在 MSITRIM[7:0] 中写入默认校准值 (0x80)会导致校准值 MSICAL[7:0] 等于MSICAL[7:0] = 0x80 + 0x80 = 0x00,因此 MSI 频率会降低 128 步 (最低频率)。, _$ N- C+ z, B# v7 y
8 U. r2 b/ m. n' P5 M

" n/ c9 C5 ]* Q" g# R0 |- @9 ?' j+ m+ k下面的3 显示了在范围 6 (4194304 Hz)处 MSI 行为随 MSICAL[7:0] 的变化。
7 Y1 m$ V$ B+ G# Y, w/ {" J4 H+ ]# J! ]$ W# s

6 ?# x5 y/ n. f  o9 G8 m W2%OP3JG(%4YIJBYO4ILH%P.png ) ?/ w" ~# i: w% o7 }9 R2 z+ z
3 Z2 a% b, O: S; V- _4 c
* Q/ h- t2 h5 E" i4 N* N
5 r+ D9 g1 N6 F
2.1校准原理# Y- C; M* s5 p+ [4 r' v3 z
校准原理包括:
  B2 \' l8 N) a+ n) f& p0 p; x; S+ f1.将 (需要校准的)内部 RC 振荡器设置为系统时钟,& ^" ^) n2 Y/ n$ _4 \4 j
2. 测量每个微调值的内部 RC 振荡器 (HSI 或 MSI)频率,( d9 P# N4 g( g6 L9 `, ?% j
3. 计算每个微调值的频率误差,
4 Z* Y" X/ T: o5 P" _6 Q4. 最后,将微调位设置为最优值 (对应于最低频率误差)。
% w" S, o; |3 w. e1 [内部振荡器频率并非直接测量,而是使用定时器计算时钟脉冲个数,与典型值比较。为此,必须有一个非常精确的参考频率,比如由外部 32.768 kHz 晶振或 50 Hz/60 Hz 电源频率(请参2.2.2 章节 : 其它源用作参考频率的情况)。4 T: w3 W# d0 M( Y
下图显示了怎样使用定时器计数个数测量参考信号周期。' @8 @( s1 e  z8 f
) k5 c" I  Y4 e  K/ L+ p
+ J1 M" I$ p7 ]3 r% j3 s2 @5 D; [' z
9{J2ET5Y5GDQ(4YY42G(IH2.png
3 C% d  q8 L7 i
& H) n/ ?; b4 M; e& f: y( M启用定时器计数后,当第一个参考信号上升沿发生时,捕捉定时器计数值,储存于IC1ReadValue1 中。在第二个上升沿,又捕捉到定时器计数,储存于 IC1ReadValue2 中。在两个连续上升沿之间的时间 (IC1ReadValue2 - IC1ReadValue1)表示了参考信号的整个周期。* ?2 \3 |1 q% ]( K
因为定时器计数器的时钟由系统时钟提供 (内部 RC 振荡器 HSI 或 MSI),因此与参考信号
) U2 Y7 E# F( M6 t+ K! r) K5 t有关的内部 RC 振荡器生成的真正频率为:
& `( e, W) e4 _; p0 C/ ^
( D/ U8 w  o  y. i2 X2 n5 O
" n1 {; c) n) `7 ]& n: v
H%DV`U(N$~$ZD0INB%Y5D_A.png
3 c, D1 {$ Y' V5 }8 @/ n# _
6 q& h! }* R) h" D
9 c0 U4 D5 }1 b( x
误差 (单位 Hz)为测量频率与典型值之差的绝对值。
( j- p; P! V! p因此,内部振荡器频率误差表示为:
. Y( ~) h) Z7 ^1 t; O- W& o/ O, i) j& \4 I- l1 m7 b" Q

8 s' y3 ^  g2 n GL(JF6C)_9NR}~QSQS[4F}M.png
" u$ v3 A: q$ m: r$ }5 }5 B
# s) _: ^) V3 S* ~

9 v+ M6 n, D. [! n; _2 }. S对每个微调值计算误差之后,算法会决定最优微调值 (对应于最接近典型值的频率),编程于微调位中 (请参考2.3 章节 : 内部振荡器校准固件说明以获取更详细信息)。/ `" G8 W3 k- c2 W. p

" I# x/ Z7 t3 t9 a5 `) H5 z' x3 ~2 Q/ X4 Y1 R" ~4 @
; D1 F! y' k' ~- [

3 S5 P+ t' {. \+ x: ]" h完整版请查看:附件
! a0 w, ]* j4 P$ a/ i
2 |0 |6 L8 W' [" z  b

% ?) ?3 x+ I2 H7 J2 ?) u$ _* E6 k

" H# b3 a0 q, @7 U8 l) \. U" r3 _9 v  I/ P) e9 r9 ~2 l+ k

CD00161561_ZHV11.pdf

下载

1.47 MB, 下载次数: 8

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

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版