インターフェース・バス(有線)

MIPI(CSI/DSI)

カメラ・ディスプレイ用の高速インターフェース規格。

概要

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 に接続するための統一規格が存在せず、各社独自のインターフェースが乱立していた。

出来事
2003MIPI Alliance 設立
2005MIPI DSI 1.0 策定
2005MIPI CSI-2 1.0 策定
2009D-PHY 1.0 物理層規格化
2014C-PHY 1.0 策定(3線式、より高速)
2017CSI-2 v3.0・DSI-2 策定(より高速・4K 対応)
2022CSI-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説明
0x28YUV420 8bit
0x2BRAW10(10bit RAW)
0x2CRAW12(12bit RAW)
0x2ERAW16(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 側)

  1. D-PHY の HS モードで差動信号を受信し、バイトクロックを復元
  2. レーンマージャ(Lane Merger)が複数レーンのデータを統合
  3. パケットデコーダがヘッダを解析し、フレーム開始・終了パケットや行データを識別
  4. ピクセルフォーマット変換(RAW → RGB/YUV)
  5. 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-2USB 3.0 UVCGigE VisionMIPI DSIHDMI
主用途組み込みカメラ汎用カメラ産業カメラ組み込みディスプレイ映像出力全般
最大帯域10 Gbps(4レーン)5 Gbps1 Gbps10 Gbps(4レーン)48 Gbps(HDMI 2.1)
ケーブル最大長〜30cm〜3m(USB)〜100m〜30cm〜5m(パッシブ)
消費電力中〜高中〜高
価格(IF部品)安価高価安価
SoC 内蔵一般的一般的でない非内蔵一般的SoC 依存
標準化団体MIPI AllianceUSB-IFAIAMIPI AllianceHDMI Forum

MIPI CSI-2 は SoC への直接接続を前提とした設計であり、組み込み機器のカメラインターフェースとしては最も低コスト・低消費電力な選択肢である。USB カメラや GigE カメラは汎用性が高いが、回路規模・コスト・電力が増加するため、小型組み込み機器では CSI-2 が優位となる。

HDMI / LVDS と比較すると、MIPI DSI は SoC と LCD パネルを直結するための基板内配線向けインターフェースであり、外部接続コネクタとして使われる HDMI とは用途が明確に異なる。

関連用語

参考リンク