■ I2C通信に関するロジックアナライザのデータとC言語サンプル
MSC-MOD10をI2C通信で制御する場合の、サンプルとロジックアナライザのデータを示します。
■電源投入時の状態
http://www.microtechnica.tv/support/manual/msc-mod10/i2c_1st.jpg
電源投入時にMSC-MOD10からは、マニュアルにありますとおり、下記の文字列を送ってきます。
GHI Electronics, LLC ---------------------- Boot Loader 2.03 uALFAT(TM) 2.15 !00
電源投入時はDATARDYピンがHになっていると思いますが、それは、上記の文字列を出力するため、出力データがあることを通知しています。 最初にスレーブアドレスとして0xA4を送っています。マスター側が受信するので、Address+1としてRにしています。(濃い緑色R) Sは、スタートコンディションです。SCLがHで、SDAがLになったところからスタートコンディションです。
データの0x0Dは、最初のCRです。画面下は2バイト目でスペースの0x20です。(GHI・・・という文字列のGの前の部分に1つスペースがあります)同様にして、!00(CR)まで受信します。
■コマンドをホスト側から送信する場合
http://www.microtechnica.tv/support/manual/msc-mod10/i2c_2nd.jpg
マスター側からV(CR)コマンドを送信して、バージョン情報をスレーブ(MOD10)から受信した例です。 画面上はマスター側からの送信です。R/Wは、0にしてWとしています。0x56と0x0Dを送信します。 MOD10からの戻り値は下側です。戻り値の文字列は、uALFAT2.15 なので、最初の1バイト目のuとして0x75が、2バイト目のAとして0x41がスレーブからマスターへ送られてきています。 全データを取得すると、DATARDYピンはLになります。
■C言語サンプルプログラム 下記にC言語のサンプルプログラム例を示します。
http://www.microtechnica.tv/support/manual/msc-mod10/877A_i2c.c
(PIC16F877Aで制御した場合のサンプルです)
C言語のプロクラムをご覧頂けば分かるとおり、DATARDY(PORTC.0に接続)が1の間は、データを受信しつづけます。
|