4.9. センサーのバス

カメラセンサーと、それと通信するMCUは、2種類の異なるデータを2つの異なるバスでやり取りします。

4.9.1. 制御バス

すべてのセンサー設定は、チップ上のレジスタに格納されています。ピクセルフォーマット、フレームサイズ、露出時間、ゲイン、ホワイトバランスのゲイン、自動制御のターゲットなどです。MCUはこれらのレジスタを I2Cバス 経由で読み書きします(一部のセンサーは代わりにSPIを使用します)。2本の線(SCLとSDA)がMCUのI2CペリフェラルをセンサーのI2Cインターフェイスに接続し、ユーザーが選択した各設定はドライバーによってこのバス上の1つまたは複数のレジスタ書き込みへと変換されます。

制御バスはゆったりとした速度で動作します。一般的には100 kHzまたは400 kHzです。1つのレジスタを設定するには数十マイクロ秒かかり、センサー全体の再構成(リセット、新しいフレームサイズ、新しいピクセルフォーマット)には数十から数百ミリ秒かかります。これは主に、各レジスタ書き込みの後、チップが新しいモードをクリーンな状態に立ち上げるために少し時間を必要とするためです。これらはいずれもピクセルストリームに追従する必要はありません。

4.9.2. ピクセルデータバス

ピクセルデータは、より幅広く、はるかに高速な別のバスを通ってセンサーから出ていきます。主に2つの系統が使われています。

パラレル は2つのうち古い方です。ピクセルビットのための8本または10本のデータ線に加え、ピクセルクロック(PCLK)、ライン有効信号(HSYNC)、フレーム有効信号(VSYNC)を伝送します。各クロックエッジでデータ線上に1ピクセルバイトが現れ、HSYNCとVSYNCが各行と各フレームの開始と終了の位置を受信側に伝えます。パラレルバスはシンプルですが、スループットはMCUのピンマトリクスがどれだけ高速にデータをクロックインできるかによって制限されます。上限で一般的に50~100 MHzのピクセルクロックです。

MIPI CSI-2 -- Mobile Industry Processor Interface Camera Serial Interface のバージョン2 -- は、新しいイメージセンサーにおいてパラレルをほぼ置き換えました。1組以上の差動レーンペアでピクセルを1ペアあたり毎秒数百メガビットで伝送し、より少ないピン数、はるかに高い帯域幅、より低いEMIを実現します。パラレルは主にレガシー設計や、シンプルさが依然として有利となる小型・低レートの部品に残っています。

左にセンサーブロック、右にMCUブロックを示した図。 それらの間にある双方向の矢印には「I2C (SCL, SDA)」 というラベルが付いています。センサーからMCUへ向かう より太い矢印には「パラレルまたはMIPI」というラベルが 付いています。

センサーとMCUは、低速な双方向I2Cバスで制御をやり取りし、より幅広く高速な一方向のパラレルまたはMIPIバスでピクセルデータをやり取りします。

センサーがどちらの系統を使用していても、MCU側には入ってくるピクセルを捕捉してメモリ内のフレームバッファに書き込む固定機能のペリフェラルがあります。Pythonコードがこのバスを直接駆動することはありません。そのハードウェアがフレームバッファを満たし終えた後で、フレームバッファを読み取るだけです。