◎ 高精度RTCモジュール RV-8803-C7 を搭載した小型のブレークアウト基板です。
◎ 簡単な設定のみ でRaspberryPIの高精度な外付けのHWCLOCKとしてもお使い頂けます。
(※Raspberry Pi にヒートシンク・ファンを取り付けていると構造的に干渉する場合がありますのでご注意下さい)
(1) バックアップ電池搭載 ..... 出荷時にCR1025 ・リチウムボタン電池を搭載しています(一次電池)
→ バックアップ一次電池の持ち時間について
(2) オフセット設定のため クロック出力を『1Hz』に設定 します。
→ CLOCK出力は基板上でO/E端子がプルダウンされているため待機時は出力『オフ』になり
消費電流を抑えます。→ RV-8803-C7 の消費電流について
(3) 基準測定器での測定値を元に1PPSオフセット設定値を書き込み
→ 電池搭載済のためオフセット調整値は次回電池交換時まで残ります。
(4) 時刻を書込み設定 ( sudo hwclock -w のコマンドを使用)
→ 出荷時はUTC時刻 = 日本時間+9時間 に設定されています。
ラズパイのタイムゾーン設定が『東京』になっていれば日本の時刻が表示されます。
・『 SCL / SDA / INT端子』は 基板上で Vddへプルアップされています。
・『CLKOE 端子』は このボードでは『10kΩ』にて GNDへプルダウンされています。
*実際のアプリケーションでクロック出力を使用しない場合にはCLKOE端子は直接GNDへ接続して下さい。
・『EVI端子』は子のボードではデフォルトでは 0Ωで GNDに短絡しています。
EVI端子を使用する場合は短絡抵抗を外して未実装部分にプルアップ抵抗(10kΩ)を実装して下さい。
*実際のアプリケーションでもこの端子はオープンにはしないで下さい。
・ ヘッドピンのVddに+5Vを印加される場合は 『#1:3v3』との間にある 0Ω を取り外してご使用下さい。
・ 角ピンソケットの #4端子は NCです(内部接続無し)。
・ 電源切替用のダイオードは『BAS70-05』(Vishay, Diodes 他 )を使用しています。
※ 設定方法は以下の2通りがあります。(1) の 『 /boot/config.txt』に設定を記述する方法が簡単です。
(最新のRaspberryPIのOS(ラズビアン)は RV-8803-C7 のドライバが組み込まれているため(※)リナックスドライバのビルドが不要です)
@ RaspberryPI* の I2C通信を『有効』にします
A 『sudo pcmanfm』 のコマンドを実行(管理者権限でファイルマネージャを開く)
B ≪RaspberryPI 4の場合≫
★ラズパイの設定ファイル 『 /boot/config.txt 』を開き、末尾に以下の『1行』の記述を追加して保存します
『 dtoverlay=i2c-rtc,rv8803 』
≪RaspberryPI 5の場合≫
★ラズパイの設定ファイル『 /boot/firmware/config.txt 』 を開き、末尾に以下の『2行』の記述を追加して保存します
『 dtparam=rtc=off 』※ラズパイ内蔵のRTCをオフにします
『 dtoverlay=i2c-rtc,rv8803 』
C Bの後にOSを再起動すると RV-8803-C7 がHWCLOCK に設定されます
D 正しくHWCLOCKに設定されているかの確認
RV8803-Raspi を接続した状態にて 『sudo i2cdetect -y 1』のコマンド (I2Cの接続確認)
にて 0x32アドレスに "UU" の表示が出ていれば 正しく設定されています。
(『sudo hwclock -r 』のコマンドを送るとRTC内部の時刻情報が返ってきます )
※一度 『 config.txt』に設定を書き込んだ後は、電源オフして再起動しても設定が残るため
次回以降は設定が不要になります。
@ RaspberryPI* の I2C通信を『有効』にしておく
A 『modprobe rtc-rv8803』とコマンドを実行
B 『sudo bash
echo rv8803 0x32 > /sys/class/i2c-adapter/i2c-1/new_device』
とコマンドを実行
C HWCLOCK に設定されているかの確認
Bのあと『sudo i2cdetect -y 1』のコマンド (I2Cの接続確認)にて 0x32アドレスに
"UU"の表示が出ていれば RV-8803-C7 が HWCLOCK に設定されています。
( 『sudo hwclock -r 』のコマンドでRTC内部の時刻情報が返ってきます )
一度では HWCLOCK に設定されず "32" と表示されてしまう場合があります。
その場合は再度ABのコマンドを繰返し実行してください。
この都度設定を行う方法では、電源オフして再起動した際に再度同じ設定を行う必要があります。
★ 動作確認した RaspberryPI* のバージョン等の情報
ハードウェア | RaspberryPi 4B |
OS / Kernel | OSバージョン = Devian 11.7/ Kernelバージョン = 6.1.21-V8+ (最終確認 2023/11/12) |
ハードウェア | RaspberryPi 5 |
OS / Kernel | OSバージョン = Devian 12.6/ Kernelバージョン = 6.6.31+rpt-rpi-2712 (最終確認 2024/08/05) |
→ 旧バージョンのOSでドライバのビルドが必要な場合はこちら
(1) RV-8803-C7 を HWCLOCK に設定し、RV-8803-C7 の時刻をラズパイ(OS)に設定する
modprobe rtc-rv8803
sudo bash
echo rv8803 0x32> /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s
電池交換直後の場合は上記の書き込みをするとエラーが返ってきます。
これは初期状態では 『RV-8803-C7』の "電圧低下検出フラグ"が立っているため 『hwclock-s』(時刻読み込み)の際に時刻情報が "無効" と判断されるためです。電池交換後には、まずラズパイをネット環境に接続してインターネット時刻になっている状態で『hwclock-w』(時刻書き込み)を実行します。その際にリナックスドライバの動作で時刻情報の書き込みと同時に"電圧低下検出フラグ"がクリアされます。 その後は『hwclock-s』で時刻が読み込めるようになります。
(ご購入直後は既に時刻情報が書き込まれているためこのエラーは起きません)
(2) ラズパイ(OS)の時刻(ネットワーク時刻など)を RV-8803-C7に書き込む
sudo hwclock -w
(3)RV-8803-C7に設定されている時刻を読み出す
sudo hwclock -r
(4) RV-8803-C7 (HWCLOCK)の保持時刻をラズパイ(OS)の時刻に設定する
sudo hwclock -s
(5)RV-8803-C7 を ラズパイ(OS) の HWCLOCK の設定から外す
( sudo i2c コマンドで直接レジスタを 読込み/書込み 出来るように戻す場合 )
sudo rmmod rtc-rv8803
以下はI2Cモードでの設定内容です。
(6) RV-8803-C7 の CLK出力を デフォルトの32.768kHz から 1Hz に変更する
sudo i2cset -y 1 0x32 0x0d 0x08
(7) 1Hzの精度をカウンタで測定して、オフセット値を設定する
※出荷時には電池装着後に既に個別にオフセット設定してあります。
+0.952ppm ....sudo i2cset -y 1 0x32 0x2c 0x04
+0.714ppm ....sudo i2cset -y 1 0x32 0x2c 0x03
+0.477ppm ....sudo i2cset -y 1 0x32 0x2c 0x02
+0.238ppm ....sudo i2cset -y 1 0x32 0x2c 0x01
0.000ppm ....sudo i2cset -y 1 0x32 0x2c 0x00
-0.238ppm ....sudo i2cset -y 1 0x32 0x2c 0x3F
-0.477ppm ....sudo i2cset -y 1 0x32 0x2c 0x3E
-0.714ppm ....sudo i2cset -y 1 0x32 0x2c 0x3D
-0.952ppm ....sudo i2cset -y 1 0x32 0x2c 0x3C
-1.190ppm ....sudo i2cset -y 1 0x32 0x2c 0x3B
-1.428ppm ....sudo i2cset -y 1 0x32 0x2c 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 0x32 0x2c 0x3F
と設定すると 『1.000000Hz』 ちょうどに近い値に設定されます
(この値はリセットがかかるまで保持されます。電源断やリセットで解除されます)
アラーム、タイマ、外部イベント検出、タイムスタンプなどの各機能を使用する場合には、一旦HWCLOCK の設定を外して I2Cモード の状態で直接レジスタに値を書き込んで設定します。
( sudo i2cset -y 1 0x32 0x** 0x** と送ります )
------------------------------------------------------------------------------
Raspberry PI は、RaspberryPI 財団の登録商標です。
※こちらの記事内容の作成及び 上記基板の提供等についてRaspberry PI財団 は一切関与はしておりません。
Arduino は、Arduino LLCおよびArduino SRLの登録商標です。
------------------------------------------------------------------------------
(免責事項)
当サイト上の情報・資料の掲載には細心の注意を払っておりますが、当サイトに掲載されている情報・資料をご利用されて直接または間接的に生じたいかなる損害についても当社は一切の責任を負うものではありません。