|
カテゴリ:カテゴリ未分類
TWE-Liteで、LCD(AQM0802A)に表示することに成功しました。
苦労した! I2C通信が、初めて。 TWE-Liteも、初めて。 AQM0802Aも、初めて。 ということで、大変でした。 TWE-Liteに、出荷時に入っている標準アプリで、子機に表示するなら、下記のURLの情報を見れば、簡単にできます。 https://mono-wireless.com/jp/products/MoNoStick/control-I2C.html 自作のアプリで、表示する場合は、ライブラリに含まれるbSMBusWriteなどを使って、プログラムを組み立てることになります。 一番、はまったのが、スレーブアドレスの指定方法でした。 AQM0802Aの取扱説明書には、0x7C(0111 110 0)と書かれていますが、bSMBusWriteには、0x3E(011 1110)を指定する必要がありました。 0111 110 0 は、上位7ビットが、スレーブアドレスで、下位1ビットが、R/Wを指定するビットです。 AQM0802Aの取扱説明書では、これを、8ビットで表現しています。 TWE-Liteでは、上位7ビットと、下位1ビットを分けて扱います。 この違いに気付くのに、時間が掛かりました。 bSMBusWriteの内部で呼び出されているvAHI_SiMasterWriteSlaveAddrには、第二引数に、R/Wを与えるようになっています。 次に、悩んだのが、データの送信。 先のURLの情報と、本の「TWE-Liteではじめるカンタン電子工作」では、LCDの種類の違いもあり、記述が異なります。 また、そもそも、標準アプリのI2Cデータの扱いに関して、SDKとは異なりました。 プログラムの移植を気にして、混乱したのですが、結局、AQM0802Aの取扱説明書を見ながら、この通りにデータを送信するように心がけることで解決しました。 データを書き込む部分は、このような感じになりました。 LCD_ADDRESSは、0x3E data[0] = 0x69; // 'i'を表示させる bSMBusWrite(LCD_ADDRESS, 0x80 | 0x40, 1, data); 0x80は、最終データを意味し、 0x40は、送信データがコマンドではなく、データであることを意味します。 これで、表示されました。 しかし、そうなると、先のURLに従うと、どうして表示されるのか、疑問が残りました。 参考までに、6Pの電池を、マイコンの電源として使っています。 開発中に、マイコンにプログラムが書き込めなかったり、起動させると異常な動作をして悩みました。 これは、電池切れのためでした。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2017.05.16 11:20:43
コメント(0) | コメントを書く |