LTC3219評価
と、いうよりSTM32のI2C評価。
I2Cは最大クロックスピードが400kbpsとうたっているのだけれど、実際には色々オーバーヘッドが大きくて、期待するほどのスピードを出すのが難しい印象があった。
別の話で、I2Cが悪いわけではないのだけれど、一時期使おうとしたH8tinyのI2C I/Fは、なんだか直接I/Oポートを叩いた方が話が早いくらいで、結局挫折したり。
そうこうしているうちに、SDとかのおかげか、世間的にシリアルバスとしてはSPIの方が主流になってきたようで、さらに遠ざかることに。
------
今回STM32のI2Cを使ってみたけれど、シンプル&直感的で使いよい。
・スタートコンディション発生(CR1)
・スタートコンディション確認(SR1.bit0)
・アドレスデータセット(DR)
・アドレス送信確認(SR1.bit1)
・データセット(DR)
・ACK確認(SR1.bit2)
:
・ストップコンディション発生(CR1)
基本、これの繰り返しでバスにデータが載せられる。
適時SR2も読み込まなければいけないようだけれど、SR1を読み込むときに同時に読めばいいようだ。
------
LTC3219の場合、1個のLEDのON/OFFにつき3バイトのデータを送る必要がある。
大体70usecの間に、5イベントを行わなければならない。
割り込みで処理するのも、なんだかもったいない気がする。
DMAが使えればいいのだけれど、うまく動かすことができなかった。
とりあえず処理を割って、バックグラウンドにてポーリングで回すことにする。
これで、表示用LEDをI2Cバス経由で動かすのに目処が立った。
9本の出力があるので、LED8個と、なにかモータードライバイネーブルとかかな。
これで、I/Oを7本も節約できる。
LED用の電流制限抵抗もいらなくなるので、トータルの実装面積も稼げる。
| 固定リンク | 0

コメント