◎ 電源自動切り替え機能/超低消費電流/常温偏差:±1.0ppm以内(メーカー出荷時)の
RTCモジュール『 RV-3028-C7 』を搭載したテストボードです。
◎ 簡単な設定のみ で RaspberryPI の外付けのHWCLOCKとしてもお使い頂けます。
(※Raspberry Pi にヒートシンク・ファンを取り付けていると構造的に干渉する場合がありますのでご注意下さい)
◎ 後付けで小型SMDの電気二重層コンデンサを実装できるランドを設けています(写真右)。
@ sudo i2cset -y 1 0x52 0x0E 0x00---- PORFフラグ をクリア
A sudo i2cget-y 1 0x52 0x37 ---- 0x37のレジスタを読込み
("0x90" の場合)sudo i2cset -y 1 0x52 0x37 0x9C
("0x10" の場合) sudo i2cset -y 1 0x52 0x37 0x1C
-------- バックアップ電源切替えを有効に設定/トリクルチャージは一次電池なのでオフのままとします
B sudo i2cset -y 1 0x52 0x27 0x00 (最初に27hに"00"を書き込む)
sudo i2cset -y 1 0x52 0x27 0x11 ---- ミラーRAM→EEPROMへの書込み
C sudo hwclock-w ---- NTP時刻を RV-3028-C7 に書込み
※バックアップに一次電池を使用する場合の基本的な設定を行っています。
@ 起動直後、『PORF』のクリア
・リナックスドライバで運用する場合は、このフラグは時刻書き込み動作 (sudo hwclock -w)を行った際にドライバの動作でクリアされます。このフラフがクリアされていない状態で『sudo hwclock -w 』の時刻読み込みを行うとエラーになります。
・RV-3028-C7を用いたマイコン制御のアプリケーションの場合には必ず最初にこのフラグをクリアして下さい。
A EEPOMレジスタ操作の準備、 オートリフレッシュをオフに (EERDビット)
・以下のDで『ミラーRAM』→『EEPROM』への書込みを行う際に、万一、オートリフレッシュが実行されているとエラーになってしまうため、一旦オートリフレッシュ機能を『オフ』にしておきます。
・オートリフレッシュは日付の変わり目(午前零時)に自動で実施されます。そのため全く違う時間に操作する場合にはオフにする必要はありません。
(オートリフレッシュ機能については RV-3028-C7 のマニュアル 54/116ページをご参照下さい。
B バックアップ電源切替えの設定(レベル切替モードへ設定)
・RV-3028-C7 はデフォルトでは バックアップ電源切り替え機能 が『オフ』になっているため『レベル切替モード』の電源切り替え機能を『オン』に設定します。
・バックアップ電源切り替え機能には『レベル切替モード』と『ダイレクト切替モード』があります。
バックアップ電源に一次電池を使用している場合は『レベル切替モード』に設定します。
電気二重層コンデンサなど充電電源を使用している場合は『ダイレクト切替モード』に設定します。
C CLKOUT出力の設定について
・電源切り替え機能を使用する場合は Vddがオフになり Vbackupモードになると RV-3028-C7 の機能で自動でCLKOUTはオフになります。CLKOUT出力を使用せずVdd動作時でも消費電流を抑えたい場合には CLKOUTの出力をオフ (マニュアル37ページを参照)にします。
CLKOUT端子が無負荷の状態でもCLKOUTをオフにすることで 約0.5μAの電流の低減 になります。
D EEPROMへの書込み動作 (★重要★)
・EEPROMレジスタへ書き込みした場合はミラーRAMに書き込まれ、EEPROMの値は変わっていないため、上記@Aの設定値(ミラーRAMレジスタの値)をEEPROMに書き込む動作を行います。
・この書き込みを行っていないと一日一回自動で実行されるオートリフレッシュの際に設定が元に戻ってしまい電源切替が『オフ』に戻ってしまうため必ず実行する必要があります。
・この書き込みにより電源断でパワーオンリセットが発生した場合でも設定値が残ります。
E オートリフレッシュ機能を『オン』に戻す設定
・上記DのEEPROMへの書込み動作が終了後にオートリフレッシュ機能を『オン』(デフォルト)に戻します。
F 時刻情報の書込み
・RV-3028-C7 をHWCLOCK に設定し、Raspberry PI* がインターネットに接続されている状態でRaspberry PI*の時刻情報を RV-3028-C7 に書き込みます。
『sudo hwclock -w 』と送信して書き込みすると、時刻はUTC時刻=日本時間+9時間 にて書き込まれます。
ラズパイの場合はタイムゾーンの設定が日本になっていれば日本の時刻を表示します。
◆バックアップ一次リチウム電池 (CR1025)は出荷時に搭載済みです。
→ バックアップ電池の持ち時間について
◆EVI端子は消費電流を抑えるために0Ω短絡抵抗でGNDに接続しています。外部イベント入力をご使用になる場合はこの短絡抵抗を外して未実装ランド部分にプルアップの10kΩ抵抗(1005サイズ)をはんだ付けして下さい。
→ 外部イベント入力・タイムスタンプ機能について
◆INT端子(割り込み信号出力端子)はこの基板ではVDDにプルアップされていますが、実際に RV-3028-C7 を用いた機器の基板設計の際には バックアップ電源側にプルアップすることを推奨します。それによりバックアップモード時も割り込み信号を出力できるようになります。
(1) 裏面のリチウム一次電池は取り外します
(2) (矢印部・左側)1.8kΩの保護抵抗は0Ω(短絡)へ付け替えます
(3) (矢印部・右側)へ3225サイズの電気二重層コンデンサを取り付けます
(4)レジスタ設定を以下に変更します。
・レベル電源切替→ダイレクト電源切替
・トリクルチャージをオンへ
<RV-3028-C7 での電気二重層コンデンサのバックアップ持ち時間の実測例>
(3225チップ・11mF/室温環境/3.3Vdd/トリクルチャージ抵抗:3kΩ)
( RV-3028-C7の時刻保持最低電圧 ≧1.1V )
→ RV-3028-C7 で電気二重層コンデンサを用いる場合の回路接続例
二次電源を使用される場合にINT端子をVbackup側にプルアップしているとバックアップ電源の電圧低下時にINT端子の電位が不定になってしまいます。
バックアップ電源動作時には割り込み信号を使用されない場合はINT端子をVdd側にプルアップ接続して下さい。
RV3028-Raspi基板 の場合はデフォルトでINT端子は Vdd側 にプルアップされています。
逆にバックアップ電源動作時に割り込み信号を使用される場合は、INT端子のプルアップ抵抗を取り外して、外部でVbackup側にプルアップ接続する必要があります。
その際に上記のバックアップ電源電圧低下時に発生する電位不安定の状態に対応するための外部回路処理が必要になります。
※ 設定方法は以下の2通りがあります。『 /boot/config.txt』に設定を記述する方法が簡単です。
最新のRaspberryPIのOS(ラズビアン)ではリナックスドライバの組み込みは不要です(※)。
@ RaspberryPI* の I2C通信を『有効』にします
A 『sudo pcmanfm』 のコマンドを実行(管理者権限でファイルマネージャを開く)
B ≪RaspberryPI 4 の場合≫
★ラズパイの設定ファイル 『 /boot/config.txt』に以下の『1行』の記述を追加し保存する
『 dtoverlay=i2c-rtc,rv3028 』
≪RaspberryPI 5 の場合≫
★ラズパイの設定ファイル 『 /boot/firmware/config.txt』に以下の『2行』の記述を追加し保存する
『 dtparam=rtc=off 』※ラズパイ内蔵のRTCをオフにします。
『 dtoverlay=i2c-rtc,rv3028 』
C ラズパイを再起動します
D 再起動後『sudo i2cdetect -y 1』のコマンド(I2Cの接続確認)にて 0x52アドレスに"UU"の表示が出ていれば HWCLOCK に設定されています。
( 『sudo hwclock -r 』でRTC内部の時刻情報が返って来る様になります )
@ RaspberryPI* の I2C通信を『有効』にします
A 『modprobe rtc-rv3028』とコマンドを実行
B 『sudo bash
echo rv3028 0x52 > /sys/class/i2c-adapter/i2c-1/new_device』
とコマンドを実行
C Bのあと『sudo i2cdetect -y 1』のコマンド(I2Cの接続確認)にて 0x52アドレスに
"UU"の表示が出ていれば HWCLOCK に設定されています。
( 『sudo hwclock -r 』でRTC内部の時刻情報が返ってきます )
もし表示が "52" と出ている場合は、再度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) |
(1) RV-3028-C7 を HWCLOCK に設定し、RV-3028-C7 の時刻をラズパイ(OS)に設定する
modprobe rtc-rv3028
sudo bash
echo rv3028 0x52 >
/sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
電池交換直後の場合は上記の書き込みをするとエラーが返ってきます。
これは初期状態では 『RV-3028-C7』の "電圧低下検出フラグ"が立っているため 『hwclock-s』(時刻読み込み)の際に時刻情報が "無効" と判断されるためです。電池交換後には、まずラズパイをネット環境に接続してインターネット時刻になっている状態で『hwclock-w』(時刻書き込み)を実行します。その際にリナックスドライバの動作で時刻情報の書き込みと同時に"電圧低下検出フラグ"がクリアされます。 その後は『hwclock-s』で時刻が読み込めるようになります。
(ご購入直後は既に時刻情報が書き込まれているためこのエラーは起きません)
(2) ラズパイ(OS) の時刻(ネットワーク時刻など)を RV-3028-C7 に書き込む
sudo hwclock -w
(注)初回の書き込み時に PORFフラグ (0Eh:0bit) がクリアされて、時刻の読み出しが出来るようになります。
(3)RV-3028-C7 に設定されている時刻を読み出す
sudo hwclock -r
(注)時刻書込み後にVdd及びVbackupの両方の電圧降下があるとPORFフラグが立ち、その状態で時刻を読み込むとエラーになります。その場合は再度時刻を書き込むとPORFフラグがクリアされて時刻が読み込めるようになります。
(4) RV-3028-C7 (HWCLOCK)の保持時刻をラズパイ(OS)の時刻に設定する
sudo hwclock -s
(5)RV-3028-C7 を ラズパイ(OS) の HWCLOCK の設定から外す
( sudo i2c コマンドで直接レジスタを 読込み/書込み 出来るように戻す場合 )
sudo rmmod rtc-rv3028
※その他のタイマやアラーム、タイムスタンプなどの機能を使う場合には 同様に I2Cモードでの設定が必要です。
------------------------------------------------------------------------------
*Raspberry PI は、RaspberryPI 財団の登録商標です。
※こちらの記事内容の作成及び 上記基板の提供等についてRaspberry PI財団 は一切関与はしておりません。
------------------------------------------------------------------------------