[][mobile][Homepage][BBS][Blog][YouTube][asablo]

秋月I2C接続キャラクタLCDモジュールをリカバリーできるファーム公開2012/07/11 23:59:02


秋月I2C LCDをリカバリするファーム公開

以前、秋月I2C接続キャラクタLCDモジュールをシリアル入力タイプに改造では、このLCDモジュールにはPIC16F689が搭載されていて、これを書き換えることで、I2Cのインターフェースをシリアルに変更出来る事を書いた。

電子工作においてLCDは、試作で使いまわされることが良くあるので、目的を達成したら、また買った状態に戻したいと思う事もあるだろう。

搭載PICはライトプロテクトが掛かっているので、同じファームウェアをバックアップ出来ず、PICマイコンを交換して書き込むという面倒な方法しかなかった。

いくら秋月にPIC16F687があるとはいえ、SSOPチップをハンダで交換するのはあまり簡単ではない。そこで、同じ機能に戻せられるプログラム(ファームウェア)を作ってみた。これなら、チップを交換しなくても、そのまま書き込めばOKである。

また、I2Cのデバイスを複数使う時、デバイスのアドレスが重なりあっていて、それが固定アドレスな場合でも、LCDの方のアドレスを変更が可能だ。このアドレス、24C04などのシリアルEEPROMのアドレスと同等の様であるから、変更したいニーズも多いと思われる。



内部回路図はLCD手前までは解析が終わっており、単純にPICのピンが外に出ている格好だ。
ハードウェアは16行2桁であるが、SC2004などの20行4桁など、各種キャラクターLCDに置き換えられるので、ハードウェアの互換が保てるという恩恵に授かることが出来る。



ACM1602NIのデータシートを見ると、フォーマットは意外にも明解。
アドレスは0x50、ライト固定でリード操作がない。続いてのデータはRS信号の制御。贅沢にも1ビットだけしか使用しておらず、bit7の状態がそのままRS信号となる様だ。最後は1バイトのデータで通信が終了。良くあるLCDイニシャライズやタイミング制御は、繋げる側が管理するので、一切不要。I2Cスレーブ動作だけ出来れば良いことになる。


秋月I2C LCDをリカバリするファーム公開

I2Cスレーブ動作は、きむ茶工房ガレージハウスこちらや、nobchaの電子回路日記こちらを参考に、コードを書いていった。そして、動作確認は、arduinoで行い、構想100年のサイトではarduinoの規律に則ったACM1602NIの専用ライブラリーがあるので、それを基準としてデバッグを進めていった。



パソコンにはMPLAB IDEと arduino IDEが起動と、なんとも滑稽なデバッグである。
余談であるが、arduinoは最近バージョンアップして1.0.1になり、日本語メニュー対応になった。
相変わらずシリアルのバグがあるが、対処方法が分かっているから特に問題は無かった。



これが以前にシリアル入力に改造したLCD。PIC16F687が張り替えられている。これに書いていきながらデバッグを行う。



最終的には、製品に手を加えていないACM1602NIに書き込んでテストする。
私が提供するHexファイルはPIC16F687であるため、ROM容量が倍の4KWあるPIC16F689に書き込むときは、一度プログラマでイレース処理が必要である。



追記 Ver.1.10では、ビルドし直さなくても、 ジャンパー処理だけでアドレスを変更できるように対応。通常使用では。アドレスは初期値と同様0x50(0xA0~A1)であるが、RXをGNDに落としながら電源を入れると別のアドレスが設定される。その時のアドレスは0x3D (0x7A~0X7B)になるので、一般的なI2CEEPROMのアドレス0x50を簡単に避ける事が可能となった。



ご注意:ACM1602N1の機能とほぼ同等の機能に回復になるが、全ての機能を検証しているわけではないので悪しからず。書き替えると元に戻せない。完全に購入時の通りに元に戻したい場合はチップを交換して対応。入手が容易なPIC16F687I-SSなどがある。








[][admin][mobile][Homepage][BBS][Blog][YouTube][asablo]