現在、カメラストリーミングパイプライン(以前はESP32-S3で動作させていたもの)をFRDM-MCXN947に移植しています。目標解像度は1080pで、OV5640カメラモジュールからのキャプチャ、MCXN947ハードウェアアクセラレータによるプロセッシング、そしてSPI経由でESP32-C5へのストリーミングによるWi-Fi伝送が可能です。
ハードウェアパイプライン:
OV5640カメラ(DVP 8ビット)→ MCXN947(FlexIO / SmartDMA)→ 外部PSRAM→ SPI→ ESP32-C5→ Wi-Fi
現在の進捗状況とセットアップ
問題1:FlexIOピンのリマッピングとD4/D5の無効なデータ
FlexIO を介して 8 ビット並列キャプチャを試みると、データライン D4 と D5 は有効なピクセルデータを読み取ることができませんが、ライン D0~D3、D6、および D7 は正しく動作します。
初期ピンマッピング:
トラブルシューティングの試み:
D4とD5を別のピンに再マッピングし、対応するFlexIOとピンマルチプレクサの設定を更新しました。
この再マッピングを行っても、D4とD5は依然として有効なデータを取得できません。
問題2:1080pにおける外部PSRAMへのSmartDMAルーティング
1080pのフレームバッファは内部SRAMの容量を超えるため、フレームはリアルタイムで外部PSRAMにバッファリングする必要がある。
SmartDMAを設定して、受信したFlexIOカメラデータをCPUの介入やフレームティアリングなしに外部PSRAMに直接ルーティングするための最適な方法と設定手順を探しています。
ご意見、ピン配置に関するご提案、参考コードなどございましたら、ぜひお聞かせください!
こんにちは、 @DocMonster7さん
公式SDKの例は、FRDM-MCXN947ボード上でfrdmmcxn947_smartdma_camera_flexio_mculcd_cm33_core0されており、J9カメラインターフェースを通じてOV7670カメラが接続されていることを検証しました。このリファレンスデザインでは、CAMERA_D4とCAMERA_D5がそれぞれP3_4とP3_5にマッピングされ、画像キャプチャは正しく動作します。
この検証に基づくと、P3_4とP3_5はカメラデータ入力として正しく機能しているようです。したがって、この問題はこれらのMCUピン自体の制限による可能性は低いです。
OV5640のハードウェア接続、信号の完全性、ピン多重化構成、および元のSmartDMAカメラキャプチャ実装に加えられた変更点について、さらに確認することをお勧めします。
Harry_Zhang_0-1786329719002.pngHarry_Zhang_0-1786329719002.png
BR
ハリー
こんにちは、ハリーさん。
J9のSmartDMA OV7670 SDK例を検証してくれてありがとうございます。これで違いが明確になった。
この不一致の理由は、使用されているキャプチャ ペリフェラルにあります
SmartDMA (EZH エンジン): GPIO/EZH ポートを直接サンプリングします (J9 上の P3_4 および P3_5 が EZH_LCD_D4/D5 として正しく機能する場合)。
FlexIOパラレルエンジン(fsl_flexio_camera):連続する8つのFlexIOシフターデータピン(FLEXIO0_D12~FLEXIO0_D19)が必要です。FRDM-MCXN947では、J9上のP3_4とP3_5にはFlexIOピンの多重化機能がありません。連続したFlexIO D16/D17回線を取得するには、それらをP3_8(TP16)とP3_9(TP15)にルーティングする必要があります。
FlexIOキャプチャのためにD4をP3_8(TP16)にルーティングする際、P3_8がオンボードQSPIフラッシュ(U8 Winbond W25Q64、FlexSPI0_A_DATA0)と共有されているため、P3_8でアクティブなハードウェア競合が発生しました(アクティブドライブGPIOテストは0.15V~1.3Vにクランプされています)。