I2C
I2C:Inter-Integrated Circuit
アイツーシーやアイスクエアドシーと呼ばれる通信規格。
双方向通信の規格であり、信号線は一本のみという特徴を持つ。
SPI通信に比べ、
- 信号線は一本
- スレーブセレクトがいらない
- 127個程度接続できる
- 同時送信も可能
- マルチマスターモードがある
という長所を持つが、
- アドレス設定が必要
- 通信速度は比較的遅い
- プルアップで吊っているため、少々ノイズに弱い。
という弱点を持っている。
SPI通信とI2C通信の簡単な使い分けは次の通り。
通信頻度が高い、高速動作が要求される、スレーブ数が少ない、アドレス設定が不要。
配線を気にせずつなぎたい、スレーブが多い、スレーブ数を変化させたい、どれもマスターにしたい
配線としては、
の最低3本があれば動く。
信号規格
SPI機能に対応しているPICならば、I2C機能に対応していることが多い。
ソフトウェアで実現しようとすると結構面倒だったりする。
双方向でありながら信号線は一本であり、SPIのように同時に送受信することはできない。
SCKおよびSDAはどちらもプルアップのある引き込み出力となっている。
よって1を送るときは開放、0を送るときはGNDと短絡することで、出力のショートが発生しないようになっている。
同期式通信であり、クロックをマスターのSCK端子より供給する。
ただし、供給するマスターを自由に変更できるのがマルチマスターモードである。
まずマスターを含むそれぞれのデバイスにI2C用のアドレスを設定する。
マスターからのクロックに合わせてUSART信号と同様にビット列で送受信を行う。
ただし、マスターから送られる最初の1byte(2byteの場合もある)の信号はアドレスと送受信の情報であり、どこにデータを送受信するかを指定する。
次のbyteデータからが実際に送信するデータとなる。
マスターのクロック出力を1(開放)にし続けると、すべてのスレーブは待機状態となる。
一方データ送信後クロック出力を0にし続けると、次の情報はデータとなり連続送信となる。
信号衝突も検知できるらしいが、あまり使う機会はないだろう。
最終更新:2011年03月08日 10:27