概要
MIPI(Mobile Industry Processor Interface)Alliance は、モバイル機器向けのインターフェース規格を策定する業界団体であり、同団体が定める規格群の総称として「MIPI」とも呼ばれる。組み込み・IoT 開発で特によく使われるのは以下の 2 つである。
- MIPI CSI-2(Camera Serial Interface 2) — カメラモジュールと SoC を接続するための高速シリアルインターフェース
- MIPI DSI(Display Serial Interface) — ディスプレイパネルと SoC を接続するための高速シリアルインターフェース
どちらも D-PHY(差動 2 線式シリアル物理層)または C-PHY(3 線式物理層)を物理層として使用し、数百 Mbps から数 Gbps の帯域幅を少ない信号線で実現する。スマートフォンの普及とともに業界標準として確立され、現在では Raspberry Pi、NVIDIA Jetson、Qualcomm・MediaTek SoC など組み込み SoC の大半が搭載している。
歴史・背景
MIPI Alliance は 2003 年に ARM、Nokia、Texas Instruments などが設立した。当時のスマートフォン黎明期には、カメラとディスプレイを SoC に接続するための統一規格が存在せず、各社独自のインターフェースが乱立していた。
| 年 | 出来事 |
|---|---|
| 2003 | MIPI Alliance 設立 |
| 2005 | MIPI DSI 1.0 策定 |
| 2005 | MIPI CSI-2 1.0 策定 |
| 2009 | D-PHY 1.0 物理層規格化 |
| 2014 | C-PHY 1.0 策定(3線式、より高速) |
| 2017 | CSI-2 v3.0・DSI-2 策定(より高速・4K 対応) |
| 2022 | CSI-2 v4.0・D-PHY 2.5 Gbps/lane 対応 |
スマートフォン市場を超えて、現在では自動車(ADAS カメラ)、産業用機械ビジョン、医療機器、ドローンなど幅広い組み込み分野で採用されている。
技術仕様
物理層(D-PHY)
D-PHY は 1 クロックレーン + 最大 4 データレーン の差動ペア構成を取る。各レーンは送受信の向きが固定されており、High-Speed モード と Low-Power モード の 2 つの動作モードがある。
| モード | 用途 | 最大速度(D-PHY 2.0) |
|---|---|---|
| High-Speed(HS) | 映像データ転送 | 2.5 Gbps/レーン |
| Low-Power(LP) | 制御コマンド | 10 Mbps |
レーン数と速度の関係(CSI-2 D-PHY 2.0 の例):
| レーン数 | 最大帯域幅 |
|---|---|
| 1 レーン | 2.5 Gbps |
| 2 レーン | 5.0 Gbps |
| 4 レーン | 10.0 Gbps |
MIPI CSI-2
CSI-2 はカメラから SoC の ISP(Image Signal Processor)へ映像データを送る一方向インターフェースである。
カメラセンサー(Sony IMX477 等)
│
│ CSI-2 レーン(D-PHY)
│ CLK+ CLK- DATA0+ DATA0- DATA1+ DATA1- ...
▼
SoC の MIPI CSI-2 受信ポート
│
▼
ISP(Image Signal Processor)→ RAW → YUV/RGB → DMA → フレームバッファ
パケット構造(ショートパケット・ロングパケット):
[パケットヘッダ (4B)] [ペイロード(ピクセルデータ)] [パケットフッタ (2B)]
ヘッダ内訳: Data Type(6bit) | Virtual Channel(2bit) | Word Count(16bit) | ECC(8bit)
サポートされる Data Type(RAW フォーマット等):
| Data Type | 説明 |
|---|---|
| 0x28 | YUV420 8bit |
| 0x2B | RAW10(10bit RAW) |
| 0x2C | RAW12(12bit RAW) |
| 0x2E | RAW16(16bit RAW) |
MIPI DSI
DSI はコマンドモード(フレームバッファ内蔵ディスプレイ向け)とビデオモード(外部フレームバッファが必要なディスプレイ向け)の 2 つの動作モードを持つ。
SoC の MIPI DSI 送信ポート
│
│ DSI レーン(D-PHY)
│ CLK+ CLK- DATA0+ DATA0- ...
▼
ディスプレイパネル / DSI→LVDS ブリッジ IC
│
▼
LCD/OLED パネル
コマンドモード vs ビデオモード:
| 項目 | コマンドモード | ビデオモード |
|---|---|---|
| ディスプレイ内蔵 GRAM | 必要 | 不要 |
| 転送タイミング | 任意(差分更新可能) | Vsync 同期必須 |
| 消費電力 | 低(静止画に有利) | 高め |
| 代表用途 | スマートウォッチ | スマートフォン・タブレット |
動作原理
CSI-2 の受信フロー(SoC 側)
- D-PHY の HS モードで差動信号を受信し、バイトクロックを復元
- レーンマージャ(Lane Merger)が複数レーンのデータを統合
- パケットデコーダがヘッダを解析し、フレーム開始・終了パケットや行データを識別
- ピクセルフォーマット変換(RAW → RGB/YUV)
- DMA でフレームバッファへ転送 → CPU/GPU 処理へ
D-PHY 受信器 ──▶ レーンマージャ ──▶ パケットデコーダ ──▶ ピクセルフォーマット変換 ──▶ DMA
Virtual Channel(仮想チャネル)
CSI-2/DSI は 2 ビットの Virtual Channel ID を持ち、1 つの物理インターフェースで最大 4 系統の論理チャネルを多重化できる。例えば RGB カメラと深度カメラを 1 つの CSI-2 ポートでまとめて受信するような設計が可能になる。
用途・ユースケース
Raspberry Pi カメラモジュール
Raspberry Pi シリーズは CSI-2 対応の FPC コネクタ(15ピン または 22ピン)を備えており、専用のカメラモジュール(Camera Module v2、v3、HQ Camera 等)を接続できる。
Raspberry Pi 5
├── CSI-2 ポート 0(15ピン FPC)── カメラモジュール
└── CSI-2 ポート 1(15ピン FPC)── 追加カメラモジュール(Pi 5 のみ)
Linux カーネル上では V4L2(Video for Linux 2) ドライバとして認識され、以下のようにキャプチャできる。
import cv2
cap = cv2.VideoCapture(0) # /dev/video0 = CSI カメラ
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("CSI Camera", frame)
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
NVIDIA Jetson シリーズ
NVIDIA Jetson は最大 6 系統の MIPI CSI-2 カメラポートを持つ製品があり、AI 推論と組み合わせたマルチカメラシステムに使われる。
# Jetson での MIPI CSI-2 カメラ確認(libargus/GStreamer 使用)
gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! \
'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1' ! \
nvvidconv ! xvimagesink -e
産業用カメラ・ADAS
自動車の ADAS(先進運転支援)向けに、CSI-2 は GMSL(Gigabit Multimedia Serial Link) シリアライザと組み合わせて長距離伝送(最大 15m)する構成が一般的になっている。
CSI-2 カメラ ── MAX9295(シリアライザ)──[同軸ケーブル 最大15m]── MAX9296(デシリアライザ)── SoC CSI-2 ポート
DSI ディスプレイ接続
小型 LCD パネル(タッチスクリーン内蔵)や OLED ディスプレイを SoC に直接接続する用途に使われる。DSI → HDMI や DSI → LVDS のブリッジ IC(例: TC358867XBG)を介することで、一般的なディスプレイパネルへの接続も可能になる。
実装・開発のポイント
Linux カーネルドライバ構成
MIPI CSI-2 を Linux で扱う場合、以下のドライバスタックが必要になる。
Application(OpenCV、GStreamer等)
│ V4L2 API
▼
V4L2 サブデバイスドライバ
├── カメラセンサードライバ(例: imx477.c)
└── CSI-2 ホストドライバ(SoC 固有: bcm2835-unicam.c 等)
│
▼
メモリ(DMA バッファ)
デバイスツリー設定例(Raspberry Pi)
/* ラズパイ向けカメラ DTS 例(概略) */
&csi1 {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
port {
csi1_ep: endpoint {
remote-endpoint = <&imx477_0>;
clock-lanes = <0>;
data-lanes = <1 2>;
clock-noncontinuous;
};
};
};
&i2c0 {
imx477: imx477@1a {
compatible = "sony,imx477";
reg = <0x1a>;
port {
imx477_0: endpoint {
remote-endpoint = <&csi1_ep>;
data-lanes = <1 2>;
clock-lanes = <0>;
link-frequencies = /bits/ 64 <450000000>;
};
};
};
};
FPC ケーブルの扱い
MIPI インターフェースは高速差動信号であるため、FPC ケーブルの品質と長さが重要である。
- 長さ — D-PHY では一般に 30cm 以内が推奨。それ以上はシリアライザ/デシリアライザが必要
- インピーダンス — 差動ペアは 100Ω の制御インピーダンスが必要
- クロストーク対策 — レーン間にグランドを挟むペア設計
他技術との比較
| 項目 | MIPI CSI-2 | USB 3.0 UVC | GigE Vision | MIPI DSI | HDMI |
|---|---|---|---|---|---|
| 主用途 | 組み込みカメラ | 汎用カメラ | 産業カメラ | 組み込みディスプレイ | 映像出力全般 |
| 最大帯域 | 10 Gbps(4レーン) | 5 Gbps | 1 Gbps | 10 Gbps(4レーン) | 48 Gbps(HDMI 2.1) |
| ケーブル最大長 | 〜30cm | 〜3m(USB) | 〜100m | 〜30cm | 〜5m(パッシブ) |
| 消費電力 | 低 | 中 | 中〜高 | 低 | 中〜高 |
| 価格(IF部品) | 安価 | 中 | 高価 | 安価 | 中 |
| SoC 内蔵 | 一般的 | 一般的でない | 非内蔵 | 一般的 | SoC 依存 |
| 標準化団体 | MIPI Alliance | USB-IF | AIA | MIPI Alliance | HDMI Forum |
MIPI CSI-2 は SoC への直接接続を前提とした設計であり、組み込み機器のカメラインターフェースとしては最も低コスト・低消費電力な選択肢である。USB カメラや GigE カメラは汎用性が高いが、回路規模・コスト・電力が増加するため、小型組み込み機器では CSI-2 が優位となる。
HDMI / LVDS と比較すると、MIPI DSI は SoC と LCD パネルを直結するための基板内配線向けインターフェースであり、外部接続コネクタとして使われる HDMI とは用途が明確に異なる。