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

如何校准 STM32L1xx 内部 RC 振荡器

[复制链接]
STMCU小助手 发布时间:2022-7-17 22:41
前言& a" d/ U( z7 ]5 k6 l9 [
STM32L1xx 微控制器有两个内部 RC 振荡器可做为系统时钟源。它们是 HSI(高速内部)和MSI(多速内部)振荡器。HSI 振荡器的典型频率为 16 MHzMSI 振荡器为低速、低功耗时钟源。  U- r8 I5 ?2 B1 `( o) {5 ~
工作温度对 RC 振荡器的精度有影响。在 25 ℃时,HSI 和 MSI 振荡器的典型精度为 ±1%,但-40 105 ℃温度范围,精度会降低。$ q2 a0 ]% ]9 j. \* z# t
为补偿温度对内部 RC 振荡器精度的影响,STM32L1xx 微控制器的内置一些功能可帮您校准HSI MSI 振荡器及测量 MSI LSI (低速内部)振荡器频率0 e2 `- Q8 m( s" B0 A6 _# R
本应用笔记侧重如何校准内部 RC 振荡器:HSI 和 MSI。它展示了两个方法:第一个方法基于寻找具有最低误差的频率,第二个方法是寻找具有最大允许误差的频率。两个方法都通过提供精确参考信号的方式实现。
1 A+ i, c9 ^- RMSI 和 LSI 振荡器的测量都是通过将振荡器连至定时器输入捕获执行。2 z1 }/ `* D4 `; ?0 c
: 1在本文中, STM32L1xx 指超低功耗大容量、中容量增强型、中容量器件。
; ^$ w- x% t4 k; F2超低功耗中容量器件为 STM32L151xx STM32L152xx 微控制器,其闪存密度范围为 64128K 字节。$ s0 B6 t! D' `' L, E# a7 W/ _
3超低功耗中容量增强型器件为 STM32L151xxSTM32L152xx STM32L162xx 微控制器,其闪存密度为 256 K 字节。
$ A) x+ W1 D4 e" \/ y9 s4超低功耗大容量器件为 STM32L151xxSTM32L152xx STM32L162xx 微控制器,其闪存密度为 384 K 字节。4 e: m2 l3 Q. n: `7 M( B5 `% Z

9 y; _" w5 Q4 @8 S$ u- Z' V# n

7 s) }8 |& w' Q) F8 g: V& v1 STM32L1xx 系统时钟
; I9 G4 y" [' Z" USTM32L1xx 微控制器系列有多个时钟源可用于驱动系统时钟:% \) V, h8 n) N$ o5 U* c
16 MHz 高速内部 (HSIRC 振荡器时钟
5 \/ U% l" O1 H0 b# B1 24 MHz 高速外部 (HSE)振荡器时钟
* V0 o% `  l" a+ G65.5 kHz 4.2 MHz 多速内部 (MSIRC 振荡器时钟
! e3 H) l! A7 m9 E/ [- j: F/ Y2 24 MHz 锁相环 (PLL),由 HSI HSE 振荡器提供时钟2 Z6 ]; m) b$ ]( X
高速内部 (HSI) RC 振荡器一般频率为 16 MHz,耗电 100 µA。3 t/ a( i7 W5 ~0 [
多速内部(MSI)RC 振荡器提供了七个频率范围:65.5 kHz、131 kHz、262 kHz、524 kHz、1.05 MHz2.1 MHz (默认值)和 4.2 MHz。它的设计为工作电流与频率成正比 (请参考产品手册以获得 MSI 耗电与所选频率范围之间关系的更详细信息),因此当 CPU 在低频运行时,内部振荡器耗电可最小化。在从复位重启、从停止唤醒、待机低功耗模式后, MSI 时钟被用作系统时钟。) B' D% p8 X- B3 {" G
内部 RC 振荡器 (HSI 和 MSI)提供了低成本时钟源 (不需外部元件),这是其优点。它还具有比外部振荡器更快的启动时间和更低的功耗。可校准 HSI MSI 振荡器以提高其精度。
1 }) O( ?: L& U  V5 W( ~; `+ n但即使校准后,内部RC振荡器频率也不如外部晶振或陶瓷谐振器的频率精度(几十ppm)高。; o) l8 v9 Z0 T- r$ N5 M9 z5 T; Z" I
:若外部振荡器发生故障,内部 RC 振荡器 (HSI MSI)还可作为备份时钟源 (辅助时钟)使用。( w8 c9 s, \# I  g/ [6 v  P; \

$ {7 b. T( D- D
* ~  l3 O! o$ J4 c% q! i: ^( r
~`9Z9]ZE]GS4[AZ%7KPJX.png 3 A# @1 m) {7 m6 |; q
- G$ {" `" b( Y3 Z' l
5 L* {6 V# Q; O0 g) X* N! f
7 Z- u0 B2 Y1 W2 I" R: h
STM32L1x 器件还有两个次级时钟源 (不能用作系统时钟源):" u+ G) |. s" m, w7 f% z6 C5 r/ [
37 kHz 低速内部 (LSIRC,设计为驱动独立看门狗,也可驱动实时时钟 (RTC)。
) [* [9 ]% b: P# I* n该 LSI 振荡器无法校准,但可对其测量以评估 (由温度和电压变化引起的)频率偏差2 c  s5 |7 ^6 H, f: m* t/ j7 ~3 ]
32.768 kHz 低速外部晶振 (LSE 晶振),用于驱动实时时钟 (RTC)
2 G2 j9 {3 |; q6 [
4 t8 F+ Z, C; \  f

/ s1 h& J7 J% H) s2内部 RC 振荡器校准0 A* i4 s; O4 e+ e1 x
由于生产过程的不同,每个芯片的内部 RC 振荡器的频率都可能不同。因此,MSI 和 HSI RC振荡器由 ST 工厂校准,以获得 TA = 25 ℃时 1% 的精度。复位后,工厂校准值自动加载到内部校准位中。
0 M. J3 g4 C6 }可微调内部 RC 振荡器的频率,以在更宽的温度和供电范围内达到更好的精度。这就是微调位的作用。4 [- P( P/ d. W* {  t. z  N' H* k
对于 HSI 振荡器,复位后校准值加载于 HSICAL[7:0] 位中。有五个微调位 HSITRIM[4:0] 用于微调。默认微调值为 16。增加 / 降低此微调值会增加 / 降低 HSI 频率。 HSI 振荡器微调步长0.5% (在 80 kHz 周围)。. A: h4 V: K! P
将微调值写为 17 31 会增加 HSI 频率。9 i- Y3 }; Z0 V: }1 S- R& a" E& U  i
将微调值写为 0 15 会降低 HSI 频率。& d5 N( O, b9 a& {
将微调值写为 16HSI 频率会保持为默认值。
3 n% X4 i* d7 I1 g下图显示了随校准值变化的 HSI 振荡器行为。HSI 振荡器频率随校准值增加(校准值 = 默认HSICAL[7:0]+ HSITRIM[4:0]),除了在模 16 处。在这些校准值处,负步进会达到正步进的三倍。" w: ^; B" m5 G6 o  k3 O: ~% w
; l- h, A1 _/ f2 n/ N, h. ^) m

+ Z* y9 u2 ^7 Q5 E2 h (Q6ATQ9{)2MKGV_M]T6AUYX.png
5 Q: J3 }$ A3 i3 ]% E' g. `( s+ O
) {5 P: y5 B% K" |

& _' H0 V+ k+ |$ z
7 ]) D7 _3 X4 m对于 MSI 振荡器,复位后校准值加载于 MSICAL[7:0] 位中。使用了八个微调位MSITRIM[7:0],因此有更宽的调整范围。校准基于将默认的 MSICAL[7:0] 位 (复位值)加上 MSITRIM[7:0] 位。
  `( [1 A( v# ^$ l结果储存于 MSICAL[7:0] 中:
+ t# f% I0 C, X0 }+ nMSICAL[7:0] = 默认的 MSICAL[7:0] + MSITRIM[7:0]1 Q! s7 i' W* l4 c
2 E% T( S/ X- J/ Z2 i/ O
9 i; I1 f* I3 b0 i
示例:! k! w- h& D' N* P- B
假设默认的 MSI 校准值 MSICAL[7:0] 为 0x80。
1 E  o4 r- M2 Y" ]: t$ x) X1.0x01 0x7F 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:/ l8 \- g# L+ n5 h* i  X0 R1 v
MSICAL[7:0] = 0x80 + 0x01 = 0x81MSICAL[7:0] = 0x80 + 0x7F = 0xFF; W* I. y2 {& r( p" x* D
这些结果大于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率增加 1 步 (0x81 -0x80)至 127 步 (0xFF - 0x80)。
5 O6 P8 o7 [5 I4 g& z0 G5 G2. 将 0x81 到 0xFF 之间的值写入 MSITRIM[7:0] 会导致校准值 MSICAL[7:0] 的范围为:
' n" l1 S, X4 n" i8 CMSICAL[7:0] = 0x80 + 0x81 = 0x01MSICAL[7:0] = 0x80 + 0xFF = 0X7F: T$ V$ l2 ]  G+ |* q0 @+ U/ S
这些结果小于 0x80 (默认的 MSI[7:0] 值),因此 MSI 频率降低 1 步 (0x01)至127 步 (0x7F)。2 H/ b: H% Z# v" m6 a' l! v2 h( G+ \2 v
3. 在 MSITRIM[7:0] 中写入默认校准值 (0x80)会导致校准值 MSICAL[7:0] 等于MSICAL[7:0] = 0x80 + 0x80 = 0x00,因此 MSI 频率会降低 128 步 (最低频率)。
5 Y% r0 v( E: ?1 e( u/ l  E, B
% i& F4 x! x% \% c. p0 K0 b

# i9 k8 o" W% \0 A下面的3 显示了在范围 6 (4194304 Hz)处 MSI 行为随 MSICAL[7:0] 的变化。
/ Z) J0 ?- s3 G; G* l5 c
! x6 _* x  D* R+ \: E/ @5 g
  U$ L0 [& [# ^- O+ b. e( E
W2%OP3JG(%4YIJBYO4ILH%P.png
4 x, ^2 d! [( v  k  w- }" c1 ^0 r! }' t/ m
+ `" u( \$ J4 O9 c4 n$ G
- T! u( _  |, g! k) q4 l
2.1校准原理2 K4 b( {! P+ M2 n$ y0 e
校准原理包括:. y' b8 j5 t% g+ P. y
1.将 (需要校准的)内部 RC 振荡器设置为系统时钟,/ `4 @  ?* a7 i8 Z; @  _1 X
2. 测量每个微调值的内部 RC 振荡器 (HSI 或 MSI)频率,
7 B- |6 ^0 i3 u0 ?3. 计算每个微调值的频率误差,' R% j) M1 u; J# {/ G2 ]4 U% l4 P- a
4. 最后,将微调位设置为最优值 (对应于最低频率误差)。
( y' n2 }5 f& k1 o内部振荡器频率并非直接测量,而是使用定时器计算时钟脉冲个数,与典型值比较。为此,必须有一个非常精确的参考频率,比如由外部 32.768 kHz 晶振或 50 Hz/60 Hz 电源频率(请参2.2.2 章节 : 其它源用作参考频率的情况)。
( M8 P) N+ P, X下图显示了怎样使用定时器计数个数测量参考信号周期。
+ V7 x* g) e. |) `1 ]8 D: A+ z+ Z- t
6 d; f3 j& z( a& D
9{J2ET5Y5GDQ(4YY42G(IH2.png 9 g) q$ p# |* j* Y6 @8 Q

3 s! e" F7 E( c9 e9 V3 \启用定时器计数后,当第一个参考信号上升沿发生时,捕捉定时器计数值,储存于IC1ReadValue1 中。在第二个上升沿,又捕捉到定时器计数,储存于 IC1ReadValue2 中。在两个连续上升沿之间的时间 (IC1ReadValue2 - IC1ReadValue1)表示了参考信号的整个周期。
) {. h3 ^1 N; ~* G因为定时器计数器的时钟由系统时钟提供 (内部 RC 振荡器 HSI 或 MSI),因此与参考信号
! i  H  [  [8 n有关的内部 RC 振荡器生成的真正频率为:
8 c8 V8 C4 x9 C$ d' ^9 o* C# `
$ P8 O9 i" a( q+ }$ O: k3 E% ?
/ {/ n3 u& G8 r0 ^/ j+ c6 c
H%DV`U(N$~$ZD0INB%Y5D_A.png 0 y" ?2 T& h, `
- i6 \8 x: x0 X, e' ~9 G& p% M
. `; J) _+ p. u& [
误差 (单位 Hz)为测量频率与典型值之差的绝对值。) R  m7 x; i- o0 E
因此,内部振荡器频率误差表示为:
  S0 X( h) B$ z# M0 S
' A* `2 a" x6 f8 I! x8 w$ A
; n, x* x3 _' N: m
GL(JF6C)_9NR}~QSQS[4F}M.png
. P  C  W6 r! A# r" f9 b1 T( Q
0 R  w: V5 P" p' K( `' V
1 u+ \" h+ Y, E" C! J  Z0 V7 }
对每个微调值计算误差之后,算法会决定最优微调值 (对应于最接近典型值的频率),编程于微调位中 (请参考2.3 章节 : 内部振荡器校准固件说明以获取更详细信息)。( E' C* p4 u- \" V" h2 S# }. z  r
7 {! R* _$ |1 v" `4 n

6 j$ ?3 o1 n; U8 t8 w, Q

/ g$ q) ~7 X0 H) M& `- {9 u0 z4 O" q  C6 y1 T/ g) z- r: [2 t
完整版请查看:附件
9 u7 J2 x* @- t7 Z% A( z, {
1 t; p5 ^) A( _, q  A

  d* d4 O8 }( M9 i4 G
% R7 \1 g  @8 t( t( @7 b9 P

0 c3 L' Y- _! w9 k& Z% e2 d  w# t

CD00161561_ZHV11.pdf

下载

1.47 MB, 下载次数: 8

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

举报

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