本チュートリアルでは、Unit PoE-P4 と AddOn Display In For PoE-P4 を組み合わせて使用するサンプルプログラムのビルド方法を紹介します。本サンプルを基に二次開発を行うことができます。
v5.5.2 の使用を推奨します。v5.5.2 より新しいバージョンを使用すると、ESP-IDF の MIPI DSI 下位レイヤーにおけるタイミング計算ロジックの変更により、画面がちらつく場合があります。. ./export.sh コマンドの "." とスクリプトの間にはスペースがあります。このコマンドは source ./export.sh と同等です。git clone -b v5.5.2 --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh esp32p4
. ./export.sh Unit PoE-P4 と AddOn Display In For PoE-P4 に加えて、本例では 5.0 インチ、解像度 1280 x 720 の 24P FPC ST7123 ディスプレイアセンブリも使用します。別のディスプレイを使用する場合は、インターフェースの詳細について Unit PoE-P4 MIPI DSI+TP+BL FPC インターフェース を参照してください。
以降のチュートリアルで使用する idf.py コマンドはすべて ESP-IDF に依存します。コマンドを実行する前に、ESP-IDF の export.sh を実行して関連する環境変数を有効化してください。詳細については、ESP-IDF - ESP32-P4 クイックスタート を参照してください。
Unit PoE-P4 と AddOn Display In For PoE-P4 を組み合わせて使用するためのサンプルソースコードをダウンロードし、展開します。
M5Unit-PoE-P4-AddOn-Display-In-Example プロジェクトフォルダに移動し、esp-idf プロジェクト内の export.sh を実行して関連する環境変数を有効化します。(実際の esp-idf パスに応じてコマンドを変更してください。)
cd M5Unit-PoE-P4-AddOn-Display-In-Example
. ~/.espressif/v5.5.2/esp-idf/export.sh
Unit PoE-P4 をデータケーブルでコンピュータに接続し、緑色のインジケータが点灯するまでリセットボタンを長押しします。ボタンを離すと、デバイスはダウンロードモードに入り、ファームウェアの書き込み待機状態になります。
この状態で以下のコマンドを実行して、ターゲットチップとポートを設定し(実際の環境に応じて最後のコマンドを変更してください)、プログラムをビルドして書き込みます。
idf.py set-target esp32p4
idf.py build
idf.py -p /dev/ttyACM0 flash monitor
電源を切った状態で行ってください。実際の出力信号の解像度がシステムで設定した解像度と一致しない場合があり、プログラムが正常に動作しないことがあります:書き込み完了後、以下の手順でデバイスを接続し、HDMI 入力映像を表示します:
1280 x 720 @ 60Hz に設定します。Intel® Graphics Command Center (Beta)(インストールされていない場合は Microsoft Store からダウンロードしてください)を開き、Display をクリックして、以下の図のように関連パラメータを設定します:
M5DisplayIn -> Current Resolutions をクリックして、Resolution 欄で 1280 x 720 を選択します:
アクティブ信号モードの解像度が以下の図のように表示されていれば正常に表示できます:
本サンプルでは、LT6911D を使用して HDMI 入力信号を 2-Lane MIPI-CSI YUYV422 データに変換し、1280 x 720 @ 60Hz と 1920 x 1080 @ 30Hz の 2 種類の入力解像度に対応します。ESP32-P4 は、LT6911D が検出した有効解像度と MIPI-CSI Lane レートに基づいて CSI コントローラを設定し、CSI DMA を介して画像フレーム全体を PSRAM に書き込みます。入力が 1280 x 720 @ 60Hz の場合は画面全体を表示し、1920 x 1080 @ 30Hz の場合はスケーリングを行わず、画面中央から 1280 x 720 の領域を切り出します。その後、プログラムはデュアルコア CPU を使用して YUYV422 を BGR565 に変換し、PPA で画像を反時計回りに 90° 回転させ、最終的に 2-Lane MIPI-DSI 経由で解像度 720 x 1280 の ST7123P ディスプレイに出力して HDMI 入力映像を表示します。実際の CSI DMA キャプチャフレームレートは、シリアル出力の Status: DMA=... (... FPS) ログを参照してください。MIPI-DSI ディスプレイの走査リフレッシュレートは、HDMI 入力のリフレッシュレートとは独立しています。
