2332702_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2332702_ja-JP

2332702_ja-JP

IMXRT1171向けSDK 2.16.100 - 25.1 2.00では、複数のスレーブデバイスに対してLPSPI EDMAドライバが正常に動作しません。

IMXRT1171において、LPSPI EDMAを使用して複数のスレーブデバイスを使用しようとすると、SDKが正しく動作しません。誤ったコールバックが呼び出され、誤ったユーザーデータが渡されました。

これは、LPSPI_MasterTransferCreateHandleEDMA のバグが原因です。このバグでは、内部の静的状態 (s_lpspiMasterEdmaPrivateHandle[]) を使用して lpspi_master_edma_handle を追跡しますが、SPI バス インスタンスごとに 1 つしか含まれません。同じSPIバス上に、それぞれ異なるlpspi_master_edma_handle、コールバック、およびPCSを持つ複数のスレーブが存在する場合、その状態は最後に設定した状態によって上書きされ、すべての受信/送信完了時に誤ったコールバックが呼び出されることになります。

Re: LPSPI EDMA driver is broken for multiple slaves in SDK 2.16.100 - 25.1 2.00 for IMXRT1171

こんにちは、 @nxp16 さん

NXP Semiconductors製品にご関心をお寄せいただき、また、弊社をご利用いただける機会をいただき、誠にありがとうございます。

ご質問ありがとうございます。

1つのLPSPIマスターと複数のSPIスレーブを使用するアプリケーションの場合、これはアプリケーションレベルで処理できます。

LPSPI EDMAハンドル自体には、スレーブ固有の情報は格納されません。転送が開始されるたびに、ハンドルは現在の転送の設定で更新されます。したがって、各取引は独立している。

転送を開始する前に、通信したいスレーブ(PCS)を記録しておくことができます。そして、共通コールバック内で、この記録を使用して、どのスレーブの転送が完了したかを把握します。

この方法を使えば、ドライバを変更することなく複数のスレーブをサポートできます。

お役に立てれば幸いです

よろしくお願いいたします。

メイリュー

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎03-18-2026 05:25 AM
更新者: