/var/log/messages

debugging with sixth sense

I2C 自分メモ

諸々のドキュメントを確認しつつ、つらつらと列挙。

  • 2 線式のシリアル通信 (信号線二本)
  • SDA (Serial DAta) と SCL (Serial CLock)
  • I2C デバイスには master と slave という役割分担
  • 複数の slave が接続できる模様
  • なのでアドレス持ってるのか
  • slave が固有のアドレス持ってて master がそれを使って slave を個別に駆動
  • 7bit address mode と 10 bit adress mode がある模様
  • master が slave に対して read/write の要求をして slave がそれに応じた動作を行なう
  • SDA に載せるデータは 1 byte が基本

RasPI における

どうも RasPI には I2C なバスが二つあるようです。ちなみに P1 ヘッダに出てるのは 1 番のバスとのことです。i2cdetect に渡す番号ってバスの番号だったのですね。

実機確認していないのですが、以下な出力になるようです。

$ ls /dev/i2c*
/dev/i2c-0 /dev/i2c-1

Linux の I2C ドライバ

汎用ドライバとして i2c-dev ドライバというものがあるようです。

  • アプリケーションからドライバの i/f を介してアクセスできる模様
  • 個別のドライバを作らなくても良い
  • Documentation/i2c/dev-interface 参照

python-smbus なナニ

見てみるに 1 番のバスを取り扱う場合は

self.bus = smbus.SMBus(1)

としてやれば良いのか。成程。あとは

  • read_byte_data
  • read_word_data
  • write_byte_data
  • write_word_data

あたりの python-smbus な i/f を使って読み書きをしているようです。ということは python-smbus を使う場合は i2c-dev なドライバを load しとく必要があるのかな。

Comments