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 TEMPADC2 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 212 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