UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 -
以前作成したLPC810を使って作成した「UART-I2Cブリッジ」ですが、
用途としてIC2デバイスの動作確認ツールとして活用しています。
ちょっとした調査ならプログラムを作成しないで行えます。
その活用方法のご紹介です。
試しに、Aliexplressで購入したI2C接続のリアルタイムクロックの動作確認をしてみます。
実物はこんな感じです。送料無料で$1.20(150円)で購入できます。
使い方や仕様については、デジットさんのブログの
「I2Cバス接続のリアルタイムクロックモジュール入荷!」の記事が参考になります。
基板上にはI2C接続デバイスである、リアルタイムクロック DS1307 と
EEPROM AT24C32 (4キロバイトEEPROM)が搭載されています。
早速、UART-I2Cブリッジに接続してみます。
動作確認のツールとしてTeraTermを使います。
通信条件と、端末設定は次の通りです。
端末の設定では改行コード、ローカルエコーの設定をします。
@vと入力してバージョンが正常に表示されることを確認します。
これで準備終了です。
まずは、リアルタイムクロックモジュール上の「リアルタイムクロック DS1307」の
動作確認をしてみます。
デジットさんのブログで公開している「取扱説明書(PDF)」と、DS1307のメーカーの
公開資料を参考にします。
Maxim S1307 64 x 8、シリアル、I2Cリアルタイムクロック
Maximの資料によると、I2CアドレスはD0でレジスタの内容は下記の通りです。
I2C接続によるこのデータのは受信は下記の通りです。
I2Cアドレスが0xD0で、取得したいレジスタのアドレスを送信してデータを
受信する仕様です。
早速やってみます。
00hから3Fhの64バイトを取得してみます。
UART-I2Cブリッジのコマンドにすると次のようになります。
@rd040@h00
一括データ送受信を使います。書式は下記の通りです。
@r[I2Cアドレス][受信データ長][送信データ指定部][改行]
受信データ長は0x40は64バイトを指定、受信前に送信するデータは00です。
@hはデータを16進数で指定するコマンドです。
実行すると下記の結果となります。
00が実行結果(正常終了)、その下の128桁の文字列が取得データです。
デフォルトでは、16進数の連続文字列として返されます。
これだと結果が分かりにくいので、出力形式を16進ダンプ形式に変更してみます。
@o2@rd040@h00
出力形式を指定する@oコマンドを頭につけて実行します。
こんな感じでちょっと分かりやすくなります。
時間も進まず止まっています。レジスタ00のCHに1がセットされているために
時計が止まった状態です。
次にデータの設定を行ってみます。
コマンドとしては、
一括データ送信 @w[I2Cアドレス][送信データ指定部][改行]
を利用します。
現在の時刻 2015/05/17 (日) 21:00 を設定してみます。
レジスタと設定する値は次の通りとなります。00~07のレジスタに設定すます。
レジスタアドレス:設定値、説明
00: 00 CH=0, SEC = 00秒
01: 00 00分
02: 21 21時
03: 01 日曜
04: 17 17日
05: 05 05月
06: 15 2015年
07: 00 外部出力なし
UART-I2Cブリッジのコマンドにすると次のようになります。
上記のデータの前に書き込みアドレスの00を付けて送信します。
@wd0@h000000210117051500
@o2@rd008@h00
時計が動いているかを確認するため、3回実行してみます。
また3回の実行で秒が進んでいるのが分かります。
リアルタイムクロックはちゃんと動作しているようです。
次にEEPROM AT24C32を使ってみます。I2Cアドレスは0xA0です。
EEPROM内アドレス0000に"Hello,World"を書き込んでみます。
データ部の@h0000がアドレスを16進数で指定、@sがデータを文字で指定しています。
AT24C32の仕様では、ページ単位(1ページ32バイト)の書き込みとなります。
書き込み
@wA0@h0000@sHello,World.
@oで出力形式をバイナリ(無変換)を指定、@ra00cがI2CアドレスA0から12バイトを
データ送信後に読みだす命令です。読み出す前のデータを@hで16進数で指定して
います。ここではアドレスを指定しています。
@o1@ra00c@h0000
一度に読み出せるデータはコマンドの仕様上、255バイト(0xFF)となります。
ちょっと試すとこんな感じです。
@o2@ra0ff@h0000
アドレス00から255バイトを読んで見ました。
このリアルタイムクロック、コマンド的にはシンプルなので
IchigoJamでも使えそうですね。
接続しているデバイスをスキャンしてリスト表示する機能と
モニター機能(I2Cバス上のデータを表示)も欲しくなってきました。
改造の余地ありです。
関連記事
LPC810を使ったUART-I2Cブリッジの改良版が出来ました (16/07/21)
LPC810を使ったUART-I2Cブリッジの機能拡張の検討中 (16/07/13)
UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 (15/05/17) [この記事です]
Wiiヌンチャクの動作確認しました (15/05/17)
LPC810を使ったUART-I2Cブリッジがやっと出来ました (15/04/15)
ATtiny13AでUART-I2Cブリッジを試作したが微妙 (15/03/29)
ATtiny13AでUART-I2Cブリッジの製作 - まずその準備3 (15/03/26)
ATtiny13AでUART-I2Cブリッジの製作 - まずその準備2 (15/03/25)
ATtiny13AでUART-I2Cブリッジの製作 - まずその準備 (15/03/24)
公開・ダウンロードサイト
GitHub - LPC810 UART-I2Cブリッジモジュール
« Wiiヌンチャクの動作確認しました | トップページ | IchigoJamのファームウェアのアップデートについて »
「LPC810」カテゴリの記事
- MCUXpresso IDEのインストール(2019.02.12)
- LPC810を使ってIchigoJamで赤外線リモコン受信を行う(4)(2016.08.17)
- LPC810を使ってIchigoJamで赤外線リモコン受信を行う(3)(2016.08.15)
- LPC810を使ったUART-I2Cブリッジの改良版が出来ました(2016.07.21)
- LPC810を使ったUART-I2Cブリッジの機能拡張の検討中(2016.07.13)
« Wiiヌンチャクの動作確認しました | トップページ | IchigoJamのファームウェアのアップデートについて »
コメント