« 外仕事 | トップページ | 作業中 »

2009年1月11日 (日)

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用の電流制限抵抗もいらなくなるので、トータルの実装面積も稼げる。

|

« 外仕事 | トップページ | 作業中 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: LTC3219評価:

« 外仕事 | トップページ | 作業中 »