自動運転におけるカメラソリューション(1)カメラリンクフレームワーク

概要: この記事は、自動運転における主流のカメラ ソリューションに焦点を当てています。完全なカメラ リンク ソフトウェア フレームワークと、メイン制御 Soc 上の mipi_csi2 および max96712 の実装ソリューションについて主に説明しています。主に GMSL1 と GMSL2 について説明しています。この記事は、私の研究中の記録です。デバッグ プロセス。間違っている場合は、ローカルでご相談ください: [email protected]

1. カメラリンクの完全なフレームワーク:  

1.1 リンクフレーム図:

GMSL1方式:3Gbps 

ノート:

カメラモジュールはSenyun SG2-AR0231C-0202-GMSLを採用

GMSL2ソリューション: 6Gbps

ノート:

カメラモジュールはSenyun SG2-AR0233C-5200-GMSL2を採用

1.2 カメラモジュール情報:

SG2-AR0231C-0202-GMSL(GMSL1):

モジュールのブロック図:

デフォルトのアドレス情報 (8 ビットの場合、7 ビットの場合は自分で変換する必要があります):     

MAX96705: 7ビットに変換された0x80は0x40に対応します

AP0202 : 0xBA

AR0231 : 0X20

キーパラメータ:

HDRのサポート

1920*1080/22fps

YUV422@8bit出力

SG2-AR0233C-5200-GMSL2(GMSL2):

モジュールのブロック図:

デフォルトのアドレス情報 (8 ビットの場合、7 ビットの場合は自分で変換する必要があります):     

MAX9295A: 7ビットに変換された0x80は0x40に対応します

GW5200 : 0xDA

AR0233 : 0X20

キーパラメータ:

HDRのサポート

LFM サポート ---- LED ちらつき抑制

道路におけるLEDの普及により、「LEDのちらつき」という現象が発生しています。「LED ちらつき」は LED の駆動方法に起因する現象で、LED ランプは AC で駆動され、駆動周波数は一般に 90Hz 以上、つまり最も遅いパルス周期は約 11 ミリ秒で、LED は 1 回以内に 1 回点灯します。 11 ミリ秒。省エネと耐用年数の延長のため、デューティ サイクルは通常 50% を超えません。カメラの露出時間が短い場合 (たとえば、3 ミリ秒)、露出時間が LED の消灯と一致する可能性があります。このとき、イメージセンサーがLEDを捉えます。画像が消灯している場合、LEDアレイの場合、この場合、取り込んだ画像の一部が明るく、一部が暗くなります。これが「LEDのちらつき」という現象です。

1920*1080/30fps

YUV422@8bit出力

2. I2C アドレスの決定: GMSL1 を例に挙げます。

最大96712:

最初の電源投入は CFG0 のプルアップ状態によって決まり、具体的には以下のとおりです。

回路構成は 0xD6 で、bit0 は方向ビットなので、1 ビット右にシフトした後の 7 ビット アドレスは0x6Bです。

DEV_ADDR (0x00) はアドレス レジスタであり、新しいアドレスは 0x6B を介して書き込むことができます。たとえば、0x90 が書き込まれると、実際のアドレスは右にシフトされ、方向 bit0 は 0x48 に変更され、その後max96712このアドレスを通じて運営されます。

最大96705:

デフォルトのアドレス: 0x80、右に 1 ビットシフトすると、0x40 になります。i2c 構成がレーン チャネルを順番にオープンすると、新しいアドレスが reg (0x00) に書き込まれます。LaneA、LaneB、LaneC、および LaneD はそれぞれ0x41、0X42、0X43、0X44に設定します。

次のように:

regArray[0] = 0x00 ;
sendBuf[0] = 0x80 + 2 * (i + 1);
i2c_ptr->I2cWrite(0x40, regArray, 1, sendBuf, 1); //ABCD チャネル max96705 i2c アドレスを設定します

注: max96705 には i2c アドレス変換機能があります

// i2c_source A を設定します

regArray[0] = 0x09;         
sendBuf[0] = 0xba + 2 * (i + 1);
i2c_ptr->I2cWrite(0x41 + i, regArray, 1, sendBuf, 1);

// i2c dst A
regArray[0] = 0x0a を設定します。
sendBuf[0] = 0xba;
i2c_ptr->I2cWrite(0x41 + i, regArray, 1, sendBuf, 1);

上記例で i=0 の場合、0xba+2 (0xbc、対応する i2c アドレスは 0x5e) を、後述する ap0202 のデフォルトアドレスである 0xba に変換することになります。i 0 ~ 3 はそれぞれ 0x5e、0x5f、0x60、0x60 を 0xba に変換します

AP0202:

 私たちのモジュールはデフォルトで VDDIO_H に接続されているため、0xBA になっており、上記の max96705 の i2c アドレス変換機能と組み合わせることで、ap0202 を構成する目的を達成できます。

最大9295A:

デフォルトのアドレス: 0x80、右に1ビットシフトすると0x40になり、96712でlaneA~laneDチャネルを順番にオープンするときに、対応するMAX9295Aを0x41~0x44に変更します。コードは次のとおりです。

Linux では i2c-tools ツールが使用されます。

Linux 上のオープン ソース コード i2c-tools ツールキットは、ツールキットに基づいてアドレスをスキャン (i2c-detect) したり、i2c レジスタの読み取りと書き込みをテストしたりできる複数の i2c ツールを提供します。

3. パイプラインの説明

GMSL1 パイプライン図:

例証します:

GMSL1 モードでは、各シリアライザーに複数のパイプを含めることはできず、max96712 を入力した後は、内部パイプを任意に一致させることはできません。固定された接続は、上の赤い部分に示されているとおりです。

GMSL1 A -->パイプ 0

GMSL1 B -->PIPE1

GMSL1 C -->パイプ 2

GMSL1 D -->PIPE3

GMSL2 パイプライン図:

例証します:

シリアライザーは、パイプ X/パイプ Y/パイプ Z/パイプ U の 4 つの出力パイプとして構成できます。通常は 1 つとして構成できます (パイプ Z として構成します)。ただし、RAW オリジナル データまたは HDR データを出力する必要がある場合は、上に示すように、複数のパイプがあり、GMSL2 A/GMSL2 D は 2 つの出力パイプで構成されています

96712 デシリアライザーは、pipe0-pipe7 の入力 PORTA-PORTD で Pipex/y/z/u を選択できます。詳細については、レジスタ 0xF0、0xF1、0xF2、0xF3 を参照してください。

Pipe、map_src、map_dst、mipi-csi2 関連レジスタとチャネル選択設定、VC 仮想チャネル設定などについては、0x90a/0x90b/0x92d/0x90d/0x90e など、0X90A から始まる関連レジスタを参照してください。

96712 の 4 チャネル データに対して VC 0/1/2/3 などの 4 つの仮想チャネル番号を割り当て、2 ビットを占有します。

4. PWMトリガーフレーム同期

デフォルトのスキーム: FSYNC をトリガーするために外部 GPIO を使用せず、内部 FSYNC 信号を使用します。

構成は次のとおりです。

reg : 0x4a0 val : 0x02

FSYNC をトリガーする PWM 外部 GPIO 入力 96712

構成は次のとおりです。

reg : 0x4a0 val : 0x08

reg : 0x4af val : 0x9f

ノート:

このモードでは、SoC は PWM をトリガーし、複数のカメラの画像トリガー時間、同期、およびフレーム レートを制御できる max96712 の FSYNC 同期ピンに出力する必要があります。次の図は、それぞれ 20Hz/25Hz のテスト条件を示しています。

20Hz: アプリケーション層で 10 フレームの画像を取得するための 500ms 間隔

 25Hz:アプリケーション層で10フレームの画像を取得する間隔は400ms

5. 画像の基本

YUVの簡単な紹介

3 つの要素に分割され、「Y」は明るさ (輝度またはルーマ)、つまりグレー値を表し、「U」と「V」は彩度 (クロミナンスまたはクロマ) を表し、画像の色と色を説明するために使用されます。彩度。ピクセルの色を指定します。

YUV は、プラナー形式とパック形式の 2 つの形式に分かれており、プラナー形式は最初にすべてのピクセルの Y を格納し、次に UV を格納し、2 プラナー/3 プラナーに分けられます。パック形式では、各ピクセル Y、U、V が交互かつ連続的に格納されます。

YCbCrのCbはU、CrはVをマーク

YUV422 8bit: 主要な説明、他の形式を自分で学習してください

凡例の例:

 転送スタイル:

 フレーム形式:

ノート:

YUV422形式のデータは送信順序が合わないと色異常が発生する場合がありますのでご注意ください。

おすすめ

転載: blog.csdn.net/kimginginging/article/details/127963368