◎ ±2.5ppm(@-40〜+85℃)の高精度温度補償タイプのRTCモジュールです。
◎ 0.16〜0.23μATyp. (@+25℃/@+3.0V)の低消費電流のRTCモジュールです。
◎ 0.0625℃の分解能の温度センサ機能を搭載。
上下限の温度閾値を設定して温度アラーム割込み信号発生、
及びアラーム発生時のタイムスタンプを残すことが出来ます。
◎ 全個体電池にも対応した3段階の充電圧を設定できるトリクルチャージ機能付き。
◎ 後付けでSMDの全個体電池を実装できるランドパターンを設けています。
◎ このボードとは別に USB接続でファームウェア動作確認が行えるツール もご用意しています。
◎ リナックスドライバは こちらからダウンロード 出来ます。
@バックアップバッテリ(リチウム一次電池)を装填します。
A 1Hzのオフセット設定を行うため以下の設定にします。
sudo i2cset -y 1 0x51 0xC0 0x20 ---- CLKOUTを『オン』に
sudo i2cset -y 1 0x51 0xC3 0x60 ---- CLKOUTを『1Hz』に設定
B 上記設定にて1Hzの周波数偏差を測定し、測定値に従ってオフセット設定値を書き込みます。
(オフセットの例)
・測定値が1.000000476Hz(+0.476ppm)だった場合
sudo i2cset -y 1 0x51 0xC1 0x02 ---- 『+2』の補正
・測定値が 0.999999524Hz(-0.476ppm)だった場合
sudo i2cset -y 1 0x51 0xC1 0x3E ---- 『-2』の補正
※オフセット感度は若干の個体差があります。
〜(参考)〜 オフセット設定を行わない場合は以下からが通常の設定になります 〜〜〜
C 通常の一次電池での電源バックアップの設定をします。
sudo i2cset -y 1 0x51 0xC0 0x60 ---- CLKOUTを『オフ※1』、電源切替を『オン』(レベル切替 ※2)、
トリクルチャージを『オフ※3』
D ミラーRAM→EEPROMへの書込みを行います(※4)
sudo i2cset -y 1 0x51 0x3F 0x00 (最初に3Fhに"00"を書き込む)
sudo i2cset -y 1 0x52 0x3F 0x11 ---- ミラーRAM→EEPROMへの書込み
sudo i2cset -y 1 0x51 0x3F 0x00 (3Fhを"00"に戻しておきます)
E sudo i2cset-y 1 0x51 0x0D 0x00 ---- 0x0Dのフラグを全てクリア
★上記の設定後にRTCをラズパイのHWCLOCK 設定にし『sudo hwclock -w』コマンドでNTP時刻を書き込みます。
(NTP時刻なので日本時間−09:00の時差がありますが、ラズパイなどの場合はタイムゾーンを日本とすると時差は補正されて時刻表示します)
<注釈>
※1 --- CLKOUTは『オフ』に設定していなくてもバックアップモード時は自動でオフに切り替わります。
レジスタでオフに設定していた方が若干(〜10nA程度)消費電流が少なくなるため一応設定しています。
※2 --- 電源切替えはバックアップ電源が一次電池の場合は『レベル切替』、二次電池の場合は『ダイレクト切替』を選択します。
※3 --- トリクルチャージはバックアップ電源が一次電池の場合は『オフ』、二次電池の場合は『オン』に設定します。オンの場合はチャージ電圧の設定をTCMビット(C0h/bit1:0) で設定します。
※4 --- 書き込みの時間が0時近い場合には『0x17』として念のためEERDビット(オートリフレッシュ)をオフにする必要があります。
・『 SCL / SDA端子』は 基板上で Vddへプルアップされています(10kΩ)。
・『 INT端子』は 基板上で Vbackupへプルアップされています(10kΩ)。
・『EVI端子』はデフォルトでは 0Ωで GNDに短絡しています(外部イベント入力を使わない設定)。
この端子を使用する場合は短絡抵抗を外して未実装部分にプルアップ抵抗(10kΩ)を実装して下さい。
*実際のアプリケーションでもこの端子は決してオープンにはしないで下さい。
・ 角ピンソケットの #4端子は NCです(内部接続無し)。
・ 基板上面の空きランドにはSMDの『全個体電池』や『電気二重層コンデンサ』をバックアップ電源
として実装出来ます。その際には基板裏面のリチウム一次電池は取り外してご使用ください。
(レジスタの設定で『トリクルチャージをオン』/電源切替を『ダイレクト切替え』へ変更します)
※ラズパイのOSにドライバは組み込まれているため、リナックスドライバのビルドは不要です。
@ RaspberryPI* の I2C通信を『有効』にします
A 『sudo pcmanfm』 のコマンドを実行します
(設定ファイルを編集するため管理者権限でファイルマネージャを開きます)
B ラズパイの設定ファイル 『 /boot/config.txt』に以下の記述を追加し保存します
『 dtoverlay=i2c-rtc,rv3032 』
C OSを再起動します
D 再起動後『sudo i2cdetect -y 1』のコマンド (I2Cの接続確認)にて 0x51アドレスに
"UU"の表示が出ていれば HWCLOCK に設定されています。
( 『sudo hwclock -r 』でRTC内部の時刻情報が返ってきます )
★ 動作確認した RaspberryPI* のバージョン等の情報
ハードウェア | RaspberryPi 3B |
OS / Kernel | OSバージョン = Devian 11.7/ Kernelバージョン = 6.1.21-V7+ (最終確認 2023/6/5) |
(1) ラズパイ(OS) の時刻(ネットワーク時刻など)を RV-3032-C7 に書き込む
sudo hwclock -w
(注)初回の書き込み時に PORFフラグ/VLFフラグ (0Dh:1〜0bit) がクリアされて、時刻の読み出しが出来るようになります。
(2)RV-3032-C7 に設定されている時刻を読み出す
sudo hwclock -r
(注)時刻書込み後にVdd及びVbackupの両方の電圧降下があるとPORFフラグが立ち、その状態で時刻を読み込むとエラーになります。その場合は再度時刻を書き込むとPORFフラグがクリアされて時刻が読み込めるようになります。
(3) RV-3032-C7 (HWCLOCK)の保持時刻をラズパイ(OS)の時刻に設定する
sudo hwclock -s
(4)RV-3028-C7 を ラズパイ(OS) の HWCLOCK の設定から外す
( sudo i2c コマンドで直接レジスタを 読込み/書込み 出来るように戻す場合 )
sudo rmmod rtc-rv3032
以下 、I2Cモードでの設定のコマンドです
(5) RV-3032-C7 の CLK出力を オンにする
sudo i2cset -y 1 0x51 0xC0 0x20
(6) RV-3032-C7 の CLK出力を 1Hz に変更する
sudo i2cset -y 1 0x51 0xC3 0x60
(6) RV-3032-C7 の CLK出力を デフォルトの32.768kHzに変更する
sudo i2cset -y 1 0x51 0xC3 0x00
(7) 1Hzの精度をカウンタで測定して、オフセット値を設定する
※出荷時には電池装着後に既に個別にオフセット設定してあります。
+0.952ppm ....sudo i2cset -y 1 0x51 0xC1 0x04
+0.714ppm ....sudo i2cset -y 1 0x51 0xC1 0x03
+0.477ppm ....sudo i2cset -y 1 0x51 0xC1 0x02
+0.238ppm ....sudo i2cset -y 1 0x51 0xC1 0x01
0.000ppm ....sudo i2cset -y 1 0x51 0xC1 0x00
-0.238ppm ....sudo i2cset -y 1 0x51 0xC1 0x3F
-0.477ppm ....sudo i2cset -y 1 0x51 0xC1 0x3E
-0.714ppm ....sudo i2cset -y 1 0x51 0xC1 0x3D
-0.952ppm ....sudo i2cset -y 1 0x51 0xC1 0x3C
-1.190ppm ....sudo i2cset -y 1 0x51 0xC1 0x3B
-1.428ppm ....sudo i2cset -y 1 0x51 0xC1 0x3A
-1.666ppm ....sudo i2cset -y 1 0x32 0x2c 0x39
-1.904ppm ....sudo i2cset -y 1 0x32 0x2c 0x38
-2.142ppm ....sudo i2cset -y 1 0x32 0x2c 0x37
-2.380ppm ....sudo i2cset -y 1 0x32 0x2c 0x36
-2.618ppm ....sudo i2cset -y 1 0x32 0x2c 0x35
オフセットの分解能は 『 0.238ppm 』 です。
マイナスの場合はマイナスに設定します。
例えば 1Hzの測定値が 『0.999999750Hz』 (-0.25ppm) だった場合は、
sudo i2cset -y 1 0x51 0xC1 0x3F
と設定すると 『1.000000Hz』 ちょうどに近い値に設定されます。
オフセット分解能は若干の個体差があります。
(このオフセットレジスタへは ミラーRAMを伴うEEPROMレジスタのため、
EECMDレジスタに"11h"と書き込むことで EEPROMに設定値が保存されます)
(8) HF(High Frequency モード:8.192kHz〜67.108864MHz)のクロック出力を使う
HFモードでは『8.192kHz』の『13ビット倍数分』(8192倍)までの出力を設定することが出来ます。
(C3h/7bitのOSビットで "1" HFモードを選択します)
(RV-3032-C7のアプリケーションマニュアル 47〜48ページ/149ページ中 をご参照下さい)
sudo i2cset -y 1 0x51 0xC0 0x20(RV-3032-C7のクロック出力をオンに)
↓
sudo i2cset -y 1 0x51 0xC2 0x00 0x80 i ....... 8.192kHz (8.192kHz×1)を出力
sudo i2cset -y 1 0x51 0xC2 0x00 0x81 i ....... 16.384kHz (8.192kHz×2)を出力
sudo i2cset -y 1 0x51 0xC2 0x00 0x82 i ....... 24.576kHz (8.192kHz×3)を出力
・
・
sudo i2cset -y 1 0x51 0xC2 0xFF 0xFE i ....... 67.100672MHz (8.192kHz×8191)を出力
sudo i2cset -y 1 0x51 0xC2 0xFF 0xFF i ....... 67.108864Hz (8.192kHz×8192)を出力
※その他のタイマやアラーム、タイムスタンプなどの機能を使う場合には 同様に I2Cモードでの設定が必要です。
------------------------------------------------------------------------------
*Raspberry PI は、RaspberryPI 財団の登録商標です。
※こちらの記事内容の作成及び 上記基板の提供等についてRaspberry PI財団 は一切関与はしておりません。
------------------------------------------------------------------------------