I2C¶
概要¶
I2C(Inter-Integrated Circuit)は、複数のデバイスを少ない配線で接続するためのシリアル通信規格である。
STM32やRaspberry Piなどのマイコンで広く利用されており、センサやOLEDディスプレイとの通信によく使用される。
特徴¶
- 配線はSDA(データ線)とSCL(クロック線)の2本のみ
- 複数のデバイスを同じバスに接続可能
- 各デバイスは固有のアドレスを持つ
- マスター・スレーブ方式で通信を行う
- 半二重通信
信号線¶
| 信号名 | 説明 |
|---|---|
| SDA | Serial Data Line(データ線) |
| SCL | Serial Clock Line(クロック線) |
| VCC | 電源 |
| GND | グランド |
通信方式¶
I2Cでは、マスターが通信を開始し、スレーブに対してアドレスを送信する。
STM32 (Master)
│
├── SDA
└── SCL
│
┌───────┼────────┐
│ │ │
IMU OLED EEPROM
通信手順¶
- スタートコンディション送信
- スレーブアドレス送信
- 読み取り/書き込み指定
- データ送受信
- ストップコンディション送信
ACK/NACK¶
I2Cでは1バイト送信するごとに受信側が応答を返す。
| 信号 | 意味 |
|---|---|
| ACK | 正常受信 |
| NACK | 受信失敗または通信終了 |
通信速度¶
代表的な通信速度は以下の通り。
| モード | 速度 |
|---|---|
| Standard Mode | 100 kHz |
| Fast Mode | 400 kHz |
| Fast Mode Plus | 1 MHz |
| High Speed Mode | 3.4 MHz |
プルアップ抵抗¶
I2CのSDAおよびSCLにはプルアップ抵抗が必要である。
一般的な値:
- 4.7 kΩ
- 2.2 kΩ
- 10 kΩ
配線長や通信速度に応じて選定する。
利点¶
- 配線数が少ない
- 複数デバイスを接続可能
- 実装が容易
- センサとの接続に適している
欠点¶
- 通信速度はSPIより遅い
- 配線が長いとノイズの影響を受けやすい
- 同一アドレスのデバイスはそのままでは共存できない
Asterでの利用¶
AsterではI2Cを使用して各種センサや表示デバイスとの通信を行う。
接続デバイス¶
| デバイス | 用途 |
|---|---|
| IMU | 姿勢・加速度取得 |
| OLED | 状態表示 |
| その他センサ | 状態監視 |
通信方向¶
STM32 (ALEO)
│
├─ I2C → IMU
├─ I2C → OLED
└─ I2C → センサ
I2Cは主に機体内部のデバイス制御および状態取得に使用される。