AN-949: 精確なタイムキーピングのためのADE71XX / ADE75XXファミリーRTCの補償 (Rev. 0) PDF

AN-949
アプリケーション・ノート
精確なタイムキーピングのための
ADE71XX/ADE75XX ファミリーRTC の補償
著者:Meghan Baker、Aileen Ritchie
はじめに
このアプリケーション・ノートでは、ADE71xx/ADE75xx RTC
を温度変化に対して 25℃でキャリブレーションし、正確な時間
を維持する方法について説明します。リアルタイム・クロック
(RTC)ペリフェラルに内蔵されているハードウェア補償につい
て詳しく説明し、温度変化に対する補償を調整するアルゴリズ
ムを提供します。
キャリブレーション後、RTC は一定温度に対して 0.5 sec/day の
精度を持ち、温度変動に対しては 0.15 sec/day℃の精度を持ちま
す。このため、RTC の月間誤差は−40℃~+85℃の温度範囲で 30
sec を超えることはありません。
ADE75xx/ADE71xx は、アナログ・フロント・エンド、アナロ
グ・デバイセズの固定機能 DSP、機能強化された 8052 MCU コ
ア付きの電力計 IC(ADE)を内蔵しています。RTC、LCD ドライ
バ、ペリフェラルを内蔵することにより、統合電力計ソリュー
ションを構成しています。
抵抗やコンデンサなどの他の一般的な電気部品と同様に水晶も、
一定の許容偏差を持っています。25℃で 32.768 kHz の公称周波
数を持つ水晶は、実際には公称値に対して±20 ppm の周波数を
持ちます。水晶周波数も温度に対して変化します。これらの理
由により、正確な時間を維持するためには、水晶周波数の変動
を補償できることが重要です。ADE71xx/ADE75xx では、RTC
の周期的なハードウェア自動補償機能と内蔵の温度 ADC を使っ
てこれを容易に実現しています。
動作原理
デザイン目標
大部分の電力計では、ピーク時使用と非ピーク時使用に対して
異なるレートで課金する使用時間課金を採用しています。これ
らの電力計は 10~20 年間設置されるため、使用時間帯の区別を
行う正確なクロックを持つことが不可欠です。
RTCCOMP
TEMPCAL
32.768kHz
CRYSTAL
CALIBRATION
CALIBRATED
RTCEN
32.768kHz
ITS1
ITS0
8-BIT
PRESCALER
HUNDREDTHS COUNTER
HTHSEC
SECOND COUNTER
SEC
INTERVAL
TIMEBASE
SELECTION
MUX
ITEN
MINUTE COUNTER
MIN
HOUR COUNTER
HOUR
MIDNIGHT EVENT
8-BIT
INTERVAL COUNTER
ALARM EVENT
07159-001
EQUAL?
INTERVAL SFR
図 1.RTC の構成
Rev. 0
本
社/〒105-6891 東京都港区海岸 1-16-1 ニューピア竹芝サウスタワービル
電話 03(5402)8200
大阪営業所/〒532-0003 大阪府大阪市淀川区宮原 3-5-36 新大阪 MT ビル 2 号
電話 06(6350)6868
AN-949
目次
はじめに .............................................................................................. 1
実装...................................................................................................... 3
デザイン目標 ...................................................................................... 1
補償結果.............................................................................................. 6
動作原理 .............................................................................................. 1
Rev. 0
- 2/6 -
AN-949
実装
ADE71xx/ADE75xx RTC は、数百秒から数時間までのタイムキ
ーピング・レジスタを内蔵しています(図 1 参照)。ユーザーが
ソフトウェア・カレンダを更新できるように、1 日に 1 回割込
みが発生します。
ADE71xx/ADE75xx は、周期的なハードウェア自動補償機能を使
って 32.768 kHz の入力信号をキャリブレーションします。キャ
リブレーションは、100 万個のクロック・パルス・ストリーム
に対してパルスを追加または削除することにより実現されます。
これにより、通常モードで 30.5 sec のウインドウが構成されま
す。キャリブレーション・モードでは、0.244 sec の短いキャリ
ブレーション・ウインドウを使うことも可能です。通常モード
とキャリブレーション・モードで、補償対象の RTC に比例する
パルスが P0.2 に出力されます。このときの周波数オプションを
表 1 に示します。
INTPR レジスタは、キャリブレーション用の出力周波数の選択
に使います(表 1 参照)。 INTPR レジスタ内にある RTCCAL ビッ
トは、キャリブレーション出力をイネーブルします。RTC キャ
リブレーション出力モードは、通常の使用には推奨できません。
詳細については、ADE71xx/ADE75xx データ・シートを参照して
ください。
求める補償値は、シングル・パルス周波数出力のパーセント誤
差を計算して求めることができます。水晶の誤差を求めた後、
キャリブレーション値を内部 RTCCOMP レジスタに書き込みま
す。ADE71xx/ADE75xx は、RTCCOMP レジスタに書き込まれた
値を使って RTC 周波数を自動的に補償します。この補償は、
RTC モードで指定された時間ウインドウ内で実行されます(表 1
参照)。通常モードでは、このウインドウは 30.5 sec です。
求める RTC 調整値は、ファームウェア内で発生された出力パル
スから決定されます。RTC キャリブレーション・パルスは P0.2
に出力されます。この出力パルスから、周波数のパーセント誤
差が求められ、補償係数が計算されます。RTCCOMP レジスタ
は、2 ppm/LSB で補正値を表します。ここで、1 sec/ day は 11.57
ppm に該当します。
RTCCOMP 
RTCCOMP  5000  % error
キャリブレーションが通常モードで実行され、実際の RTC キャ
リ ブ レ ー シ ョ ン ・ パ ル ス が 1.000063 Hz で あ る と す る と 、
RTCCOMP 値は次のように計算されます。
RTCCOMP 
表 1.RTC 周波数のオプション
INTPR Register FSEL [1:0]
Calibration Window(sec)
fCAL (Hz)
Normal Mode 0
Normal Mode 1
Calibration Mode 0
Calibration Mode 1
30.5
30.5
0.244
0.244
1
512
500
16,384
RTCCOMP 
公称周波数のキャリブレーションは RTCCOMP スペシャル・フ
ァンクション・レジスタ(SFR)を使って、温度補償の調整は
TEMPCAL SFR を使って、それぞれ実行されます。この補償は、
2 ppm/LSB、すなわち 0.17 sec/day の分解能で行われます。
RTCCOMP SFR と TEMPCAL SFR に対する書き込みにより、最
大 248 ppm までの補償を調整することができます。
公称 32 kHz 周波数のキャリブレーション
RTC リファレンスまたは周波数カウンタを使って、周波数出力
の誤差を測定します。RTC リファレンスの例(Infotec Electronics
社製の ITP02)を図 2 に示します。このリファレンス電力計は、1
sec、5 sec、または 10 sec の設定可能なゲート時間を使って、
fCAL と期待周波数との間の sec/day 誤差を測定します。
1
 sec/day error
2  11.57
1 Hz actual  1 Hz
1 Hz
 5000
1.000063 Hz  1 Hz
1 Hz
 5000  31
RTCCOMP レジスタまたは TEMPCAL レジスタを非ゼロ値に調
整した後にキャリブレーションを確認するときは、キャリブレ
ーションをキャリブレーション・ウインドウ内で確認する必要
があります。これは、RTC リファレンスまたは周波数カウンタ
のゲート時間を、周波数出力モードに応じて、30 sec または
0.244 sec の倍数に設定する必要があることを意味します。ある
いは、30 sec のゲート時間が使用できない場合、10 sec ゲートに
よる 3 回の誤差計測から平均を求めて最終誤差を決めることが
できます。
水晶温度変動の測定
水晶の温度変動は結晶の物理により支配され、図 3 に示す放物
線になります。この動作補償に温度補償を適用しない場合、
RTC は屋外環境ですぐ精度を失ってしまいます。
T (°C) –20 –10
0
10
20
30
40
50
60
70
–10
–20
–30
–40
–60
07159-002
Δf/f (ppm)
図 3.水晶の温度放物線
図 2.Infotec 製の ITP02 RTC リファレンス
Rev. 0
- 3/6 -
07159-003
–50
AN-949
この曲線は一般に、変曲点(To)と曲率(k)を使って水晶メーカが
提供します。周波数変動は、これらパラメータの関数として式
1 のように表されます。
f  f o  k   T  To 2
ADE71xx/ADE75xx の TEMPADC は 0.78℃/LSB の分解能を持ち
ます。
T  0.78 C/ LSB TEMPADC
(1)
曲率 k は水晶の機械的な特性に固有であり、メーカごとに異な
ります。製造時の温度キャリブレーションは好ましくないため、
曲率をデザインで固定する必要があります。水晶のデータ・シ
ートでは、曲率(typ)を規定しています。誤差が許容できる場合、
この値を使うことができます。あるいは、複数の電力計につい
て、周波数出力変化をテストすることにより、このパラメータ
を実験的に決定することもできます。
水晶の係数を求めたら、電力計の温度に基づいて適切な補正を
加えるアルゴリズムを制定します。ADE71xx/ADE75xx に内蔵の
温度 ADC を使うと、温度値を容易に読み出すことができます。
f  0.0306 ppm  0.78  2 TEMPADC 2
TEMPCOMP レ ジ ス タ に よ り 与 え ら れ る RTC 補 償 値 は 2
ppm/LSB の重みを持つため、
TEMPCOMP
0.0306 ppm
2
 0.78 2 TEMPADC2
TEMPCOMP  0.0093  TEMPADC 2
(2)
式 2 を式 3 のように整理すると、8052 コア・プロセッサに必要
とされる簡素化された式が得られます。
ADE71xx/ADE75xx の温度 ADC
ADE71xx/ADE75xx 温度 ADC は、LSB あたり 0.78℃と正確です。
ADE71xx/ADE75xx は、温度計測値を取得する 2 つの方法を提供
します。1 つ目の方法では、温度計測を要求するとレジスタか
ら読み出されます。2 つ目の方法では、バックグラウンドで温
度計測が行われているため、温度変化がユーザー指定のスレッ
ショールドを超えると、割り込みが発生します。たとえば、温
度 ADC が 1 LSB 以上変化すると(0.78℃単位で変化)、割込みが
発生します。これは、ユーザー・コードから温度を追跡する際
に、目立たないように実行できる方法を提供します。温度 ADC
の計測については、ADE71xx/ADE75xx のデータ・シートを参照
してください。
温度補償アルゴリズム
温度補償を実行する最も容易な方法は、温度 ADC の変換結果が
変 化 し た と き TEMPCOMP SFR を 更 新 す る 方 法 で す 。
ADE71xx/ADE75xx の参考デザインで使用した水晶は、−0.0306
ppm/℃ 2 の曲率と 25℃の変曲点を持っています。これから、
TEMPADC コードと該当する TEMPCOMP との間の関係を求め
て、式 2 を導出します。
TEMPCOMP  38  212  TEMPADC 2
f  0.0306 ppm  T 2
- 4/6 -
(3)
この式から、2 回の 8 × 8 乗算と複数のシフトが必要なことが分
かります。ただし、8052 コアには乗算命令があるため、コード
または時間を多く要することはありません。
あるいは、簡単なルックアップ・テーブルを使用して補償を実
現することもできます。水晶周波数の変化は放物線であり、y
軸に関して対称であるため、補償値の半分を保存するだけで済
みます。 このようにして得たルックアップ・テーブルを表 2 に
示します。温度 ADC を読み出し、25℃での値 139 を減算するこ
とにより、インデックスとそれによる補償値を求めることがで
きます。たとえば、70℃で TEMPADC 値は 207 であるため、イ
ンデックスは 207 − 139 = 68 と計算されます。したがって、求め
る TEMPCOMP 値は 70℃で 37 になります。水晶の温度応答は
対称であるため、インデックスはその温度での ADC 測定値と
25℃での ADC 測定値との差の絶対値として定めることができま
す。
Table Index = TEMPADC TEMPADC25o C
式 1 とこの水晶の固有な特性から、水晶周波数の変化が温度の
関数として得られます。
Rev. 0
これを代入すると、TEMPADC レジスタの関数としての水晶周
波数の変化は次のように表されます。
AN-949
表 2.RTC の温度補償ルックアップ・テーブル
Index
Temp (°C)
TEMPADC Code
TEMPCOMP Value
Index
Temp (°C)
TEMPADC Code
TEMPCOMP Value
0
25.12863
139
0
46
55.67514
185
16
1
25.79268
140
0
47
56.3392
186
17
2
26.45674
141
0
48
57.00325
187
17
3
27.12079
142
0
49
57.66731
188
18
4
27.78485
143
0
50
58.33136
189
19
5
28.4489
144
0
51
58.99542
190
20
6
29.11296
145
0
52
59.65947
191
20
7
29.77701
146
0
53
60.32353
192
21
8
30.44107
147
0
54
60.98758
193
22
9
31.10512
148
1
55
61.65164
194
23
10
31.76917
149
1
56
62.31569
195
24
11
32.43323
150
1
57
62.97975
196
24
12
33.09728
151
1
58
63.6438
197
25
13
33.76134
152
1
59
64.30786
198
26
14
34.42539
153
1
60
64.97191
199
27
15
35.08945
154
2
61
65.63597
200
28
16
35.7535
155
2
62
66.30002
201
29
17
36.41756
156
2
63
66.96407
202
30
18
37.08161
157
2
64
67.62813
203
31
19
37.74567
158
3
65
68.29218
204
32
20
38.40972
159
3
66
68.95624
205
33
21
39.07378
160
3
67
69.62029
206
34
22
39.73783
161
4
68
70.28435
207
35
23
40.40189
162
4
69
70.9484
208
36
24
41.06594
163
4
70
71.61246
209
37
25
41.73
164
5
71
72.27651
210
38
26
42.39405
165
5
72
72.94057
211
39
27
43.0581
166
5
73
73.60462
212
40
28
43.72216
167
6
74
74.26868
213
41
29
44.38621
168
6
75
74.93273
214
42
30
45.05027
169
7
76
75.59679
215
44
31
45.71432
170
7
77
76.26084
216
45
32
46.37838
171
8
78
76.9249
217
46
33
47.04243
172
8
79
77.58895
218
47
34
47.70649
173
9
80
78.253
219
48
35
48.37054
174
9
81
78.91706
220
49
36
49.0346
175
10
82
79.58111
221
51
37
49.69865
176
10
83
80.24517
222
52
38
50.36271
177
11
84
80.90922
223
53
39
51.02676
178
11
85
81.57328
224
54
40
51.69082
179
12
86
82.23733
225
56
41
52.35487
180
13
87
82.90139
226
57
42
53.01893
181
13
88
83.56544
227
58
43
53.68298
182
14
89
84.2295
228
60
44
54.34703
183
15
90
84.89355
229
61
45
55.01109
184
15
91
85.55761
230
62
Rev. 0
- 5/6 -
AN-949
補償結果
公称水晶周波数は、0.5 sec/day のデザイン目標に対して、0.17
sec/day (2 ppm)以内にキャリブレーションされました。表 2 を使
用すると、0.085 sec/day℃の対温度ワーストケース誤差が得られ
ます。温度に対してキャリブレーションされた誤差を図 5 に示
します。表 2 と直接計算による方法は、同じ誤差を得ており、
目標の 0.15 sec/day を満たしています。対温度水晶変動の部品間
の変動により、図 5 に示す補償プロットで誤差が少し増えてい
ます。
温度補償がない場合、10 sec/day の誤差が 85℃で発生します(図
4 参照)。これは、10 sec/day/(85℃ − 25℃) = 0.167 sec/day℃であ
るため、デザイン目標の 0.15 sec/day℃に近い値です。ただし、
温度補償を行わない電力計は、屋外環境で 30 sec/month の全体
仕様を容易に満たさなくなってしまいます。
0.10
0.06
ERROR (Seconds/Day)
12
8
6
0.04
0.02
0
–0.02
–0.04
–0.06
–0.08
4
–0.10
2
0
10
20
30
40
50
60
70
80
90
10
20
30
40
50
60
70
80
図 5.温度補償した場合の sec/day 誤差
100
TEMPERATURE (°C)
図 4.温度補償がない場合の sec/day 誤差
©2008 Analog Devices, Inc. All rights reserved.
0
TEMPERATURE (°C)
07159-004
0
07159-005
ERROR (Seconds/Day)
10
Rev. 0
AN07159-0-4/08(0)-J
0.08
商標および登録商標は各社の所有に属します。
- 6/6 -
90
100