フォト
2017年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
無料ブログはココログ

« Wiiヌンチャクの動作確認しました | トップページ | IchigoJamのファームウェアのアップデートについて »

2015年5月17日 (日)

UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 -

以前作成したLPC810を使って作成した「UART-I2Cブリッジ」ですが、
用途としてIC2デバイスの動作確認ツールとして活用しています。
ちょっとした調査ならプログラムを作成しないで行えます。

その活用方法のご紹介です。
試しに、Aliexplressで購入したI2C接続のリアルタイムクロックの動作確認をしてみます。

05_2

実物はこんな感じです。送料無料で$1.20(150円)で購入できます。

Dscn3824

使い方や仕様については、デジットさんのブログ
「I2Cバス接続のリアルタイムクロックモジュール入荷!」の記事が参考になります。

基板上にはI2C接続デバイスである、リアルタイムクロック DS1307 と
EEPROM  AT24C32 (4キロバイトEEPROM)が搭載されています。

早速、UART-I2Cブリッジに接続してみます。

Dscn3826

動作確認のツールとしてTeraTermを使います。
通信条件と、端末設定は次の通りです。

01_2

端末の設定では改行コード、ローカルエコーの設定をします。

03_2

@vと入力してバージョンが正常に表示されることを確認します。

04_3

これで準備終了です。

まずは、リアルタイムクロックモジュール上の「リアルタイムクロック DS1307」の
動作確認をしてみます。

デジットさんのブログで公開している「取扱説明書(PDF)」と、DS1307のメーカーの
公開資料を参考にします。
  Maxim S1307 64 x 8、シリアル、I2Cリアルタイムクロック

Maximの資料によると、I2CアドレスはD0でレジスタの内容は下記の通りです。

06_2

I2C接続によるこのデータのは受信は下記の通りです。

10

I2Cアドレスが0xD0で、取得したいレジスタのアドレスを送信してデータを
受信する仕様です。

早速やってみます。
00hから3Fhの64バイトを取得してみます。
UART-I2Cブリッジのコマンドにすると次のようになります。
 @rd040@h00

一括データ送受信を使います。書式は下記の通りです。
  @r[I2Cアドレス][受信データ長][送信データ指定部][改行]

受信データ長は0x40は64バイトを指定、受信前に送信するデータは00です。
@hはデータを16進数で指定するコマンドです。

実行すると下記の結果となります。

08_3

00が実行結果(正常終了)、その下の128桁の文字列が取得データです。
デフォルトでは、16進数の連続文字列として返されます。

これだと結果が分かりにくいので、出力形式を16進ダンプ形式に変更してみます。
 @o2@rd040@h00

出力形式を指定する@oコマンドを頭につけて実行します。
こんな感じでちょっと分かりやすくなります。

09

データを確認すると、このモジュールは正しい時刻が設定されていないようです。
時間も進まず止まっています。レジスタ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

11_2

設定した値を読んでみます。
  @o2@rd008@h00

時計が動いているかを確認するため、3回実行してみます。

12

右から 15年、5月、17日、01(日曜)、21時、01分、25秒と読めます。
また3回の実行で秒が進んでいるのが分かります。

リアルタイムクロックはちゃんと動作しているようです。

次にEEPROM  AT24C32を使ってみます。I2Cアドレスは0xA0です。

EEPROM内アドレス0000に"Hello,World"を書き込んでみます。
データ部の@h0000がアドレスを16進数で指定、@sがデータを文字で指定しています。
AT24C32の仕様では、ページ単位(1ページ32バイト)の書き込みとなります。

書き込み
@wA0@h0000@sHello,World.

13_2

書き込んだデータの読出し

@oで出力形式をバイナリ(無変換)を指定、@ra00cがI2CアドレスA0から12バイトを
データ送信後に読みだす命令です。読み出す前のデータを@hで16進数で指定して
います。ここではアドレスを指定しています。

@o1@ra00c@h0000 

14

一度に読み出せるデータはコマンドの仕様上、255バイト(0xFF)となります。
ちょっと試すとこんな感じです。
@o2@ra0ff@h0000

アドレス00から255バイトを読んで見ました。

15

ここは仕様的に00を指定すると256バイト表示出来るように修正したいですね。

このリアルタイムクロック、コマンド的にはシンプルなので
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」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/61604189

この記事へのトラックバック一覧です: UART-I2Cブリッジの使い方 - リアルタイムクロックの調査 -:

« Wiiヌンチャクの動作確認しました | トップページ | IchigoJamのファームウェアのアップデートについて »