LPC810のROM APIのI2C

LPC810のROM APIのI2Cのスレーブを割り込みで動かす方法がだいたいわかってきた。完全にはわかっていないけれど、何はともあれ動くプログラムができたから、これを解析して、どうして動くのかを調べようと思う。ボクと一緒に調べてくれる人がいたら嬉しいので、ここに公開する。このブログはバイナリを保存できないためOneDriveの公開フォルダに保存して埋め込んだ。苦し紛れのやり方であり、いちおう自分のパソコンにダウンロードできることは確認したが、ほかの人がうまくダウンロードできなかったらごめんなさい。

[2014.11.3追記]「LPC810のROM APIのI2Cを理解した」にもう少しマシなソースがあります。

開発環境はLPCXpresso IDE、公開したファイルにはそのプロジェクトがふたつ含まれる。ひとつはlpcopen_2_01_lpcxpresso_lpc812max.zipの中のライブラリlpc_chip_8xx_libのバグを修正したもの、もうひとつはサンプルlpc812max_periph_i2c_rom_slaveを書き換えたもの。LPCXpresso IDEがあればzipのままインポートできるし、LPCXpresso IDEがなくてもzipを展開してReleaseフォルダのlpc812max_periph_i2c_rom_slave.hexをLPC810に書き込んでもらえれば動作する。

動作条件は次のとおり。

LPC810のピンアサイン
ピン番号1-RESET(パワーオンリセットあり)
ピン番号2-P0_4
ピン番号3-I2C0_SCL
ピン番号4-I2C0_SDA
ピン番号5-P0_1
ピン番号6-VDD
ピン番号7-VSS
ピン番号8-P0_0(I2Cアクセス時にH。LEDを接続すると短く点灯)

I2Cアドレス0x24(7ビット)、0x48(8ビット | r/w)
I2Cクロック不明(Arduinoの標準設定で通信に成功)

機能
1バイトを書き込み、1バイトを読み出すと、書き込んだ値が読み出される。

これがたぶん世界ではじめてインターネットに公開されたLPC810のROM APIのI2Cのスレーブを割り込みで動かすプログラムだと思う。ここへくるまでさんざん苦労させられたから、かえってうまく動かすコツを掴みやすいと思う。これからこのプログラムの内容を調べ、随時、報告しようと思う。問題は、ただ書き込んだ値を読み出すだけのプログラムでフラッシュメモリを3700バイトも使ってしまうこと。残りが300バイト強しかなく、ほかにたいしたことができない。無駄な手順を突き止め、ダイエットに励むことが当面の目標になる。

広告
カテゴリー: LPC810 パーマリンク

LPC810のROM APIのI2C への2件のフィードバック

  1. shesee より:

    助かります。やっと作成中のガラクタが進展しそうです。
    サンプルと同様の startbit,Addr+wbit,Data(Registor Addr),startbit,Addr,Data from slave,stopbit で動作しました。
    startbit,Addr+wbit,Data(Registor Addr),Data(Value),stopbit で動くように試行錯誤中です。

  2. vintagechips より:

    いくらかでもお役に立てたのなら何よりです。ボクもOneDriveの公開フォルダのバイナリをダウンロードできることがわかってよかったです。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中