こんにちは、みんな、
現在、MPC5604P MCUを使ってFlexRay通信を開発しており、ダイナミックセグメントで異なるペイロードの長さをフレーム単位で送信する実装が必要です。
NXPの公式FlexRay Unified Driverの例では、ダイナミックセグメントの設定には次のようなパラメータが含まれていることに気づきました G_NUMBER_OF_MINISLOTS、 GD_MINISLOT、そして P_PAYLOAD_LENGTH_DYN_MAX。しかし、これらのパラメータはフレームごとの設定ではなく、グローバルな設定のように見えます。この機能を実現する解決策はありますか?
ご意見やご提案をいただければ大変ありがたいです。どうもありがとうございます!
こんにちは、
FlexRayクラスタパラメータであるG_NUMBER_OF_MINISLOTS、GD_MINISLOT、およびP_PAYLOAD_LENGTH_DYN_MAXはグローバルなタイミングパラメータであり、クラスタ全体で一貫している必要があります。P_PAYLOAD_LENGTH_DYN_MAXは、動的フレームが使用できる最大ペイロード長を定義します。すべての動的フレームにその長さを強制するものではありません。
ダイナミックセグメントフレームは、異なる長さのペイロードを搭載できる。実際の長さは、個々のフレームヘッダーのペイロード長フィールドに指定され、16ビットワード単位で表されます。したがって、必要な最大フレームサイズに合わせてP_PAYLOAD_LENGTH_DYN_MAXを設定し、送信前に送信メッセージバッファのペイロード長フィールドを更新してください。奇数バイトの長さは、次の偶数バイトになるようにパディングする必要があります。
もし使用されているFlexRay Unified DriverバージョンがLPDU設定時にペイロードの長さを固定し、送信APIを通じてこのフィールドを公開しない場合、設定済みのLPDUで長さを自由に変更することは、そのドライバーインターフェースで直接サポートされていません。その場合は、異なる長さの複数の動的LPDUを設定するか、低レベルのメッセージバッファ処理を修正・利用してフレームヘッダーを更新しつつ、MPC5604Pメッセージバッファのロック手順を観察してください。
よろしくお願いいたします。
ピーター