LPC1114FN28にI2C機器を複数ぶら下げる実験。
今回はLCD、メモリー、時計を接続。
当初LCDとメモリーのI2Cアドレス衝突の事態を解決できずにいましたが、メモリーのI2Cアドレスを変える方法を教示していただきました。
リアルタイムクロックには
RX8025NB、メモリーに
24FC1025、LCDには
ACM1602NIを使用。
メモリーアドレスのA2はHi固定なのでA1をHi、A0をLoにしてLCDとの衝突を回避しました。IchigoJamでメモリーとこのLCDが衝突してつかえないという話から思い出したのですが、当初アドレス変更が反映されず、結局EEPROMのライブラリでアドレスを書き換える必要がありました。
mbedで使ったライブラリは
I2cLCD16_ACM1601NI
M24LC64
PS2
RX8025
です。
この内M24LC64ライブラリのM24LC64.hのなかで指定されるアドレスを0xA4にへんこうしました。
M24LC64ライブラリは24FC1025には最適化されていないものですし、もしかすると1Mb対応何かどうかも不明ですが、一応読み書きができています。まさかバンク切り替えで起きがちなゴーストイメージを読み書きしてるんじゃないと思いますが…
ただ24FC1025は512Mbチップを2つ搭載しているという話もあり、使い方が悪いと64KBしか使えないのかもしれません。
今の所、メモリーの読み書きと時計もどきを組み込んだに過ぎませんが、128KBのEEPROMを使って色々と実験したいと思います。
プログラミング環境は完全にFreeBSDに移行しました。lpc2ispがbinファイルそのままで書き込むため、工数を削減できます。書き込みモード切り替えとリセットスイッチをプッシュスイッチにしておけば、書き込み終了とともにリセットがかかり、プログラムが走ります。