2268809_ja-JP

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

2268809_ja-JP

2268809_ja-JP

S32K314 LPSPI - DMA での予期しない CS トグル

こんにちは@DanNguyenDuy

以下に示すように、LPSPI DMA モードで予期しない CS トグルが発生しました。

alexyang_0-1766638396051.png

デフォルト設定では、フレーム サイズは 8 ビット、DMA 転送サイズは 1 バイトです。SPI ボーレートは 10 Mbps です。

緑色の信号は CS を表し、「Keep」オプションを使用する場合は転送中にアサートされたままになる必要があります。しかし、予期せず切り替わりました。割り込みモードでは、CS は予想どおりにアサートされたままでした。また、PCS の代わりに GPIO ベースの CS を使用すると、切り替えなしでも正常に動作しました。

この現象は、低いボー レートよりも高いボー レートで頻繁に発生するため、原因は SPI 側での TX アンダーランである可能性があります。

スキャッターギャザーモードを有効にして SPI タイミングを調整してみましたが、問題は解決しませんでした。

私の意見では、デフォルトの DMA 構成では、高速 LPSPI 転送を処理できない可能性があります。
予期しない CS トグルを解決する方法についてアドバイスをいただけますか?

ありがとう。
BR、
アレックス・ヤン


RTDRe: S32K314 LPSPI - Unexpected CS toogle under DMA

@DanNguyenDuy

Mobis の arxml ファイルを共有します。
RTDのバージョンは4.0.0_HF04です(香港MC

Re: S32K314 LPSPI - Unexpected CS toogle under DMA

@DanNguyenDuy

LPSPI DMA 構成の Mobis のスクリーンショットを共有します。キャプチャ画像で使用しているチャネル名は Vsp です。

alexyang_1-1766712372307.png

alexyang_2-1766712402162.png

alexyang_0-1766712585362.png

alexyang_1-1766712607621.png

alexyang_2-1766712649220.png

alexyang_3-1766712657986.png


Re: S32K314 LPSPI - Unexpected CS toogle under DMA

こんにちは@alexyang

どのパッケージバージョンを使用しましたか?

サンプルファイルまたは設定ファイル(.xdmまたは.arxml)を送っていただけますか?ファイルですか?

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

ダン

Re: S32K314 LPSPI - Unexpected CS toogle under DMA

こんにちは@alexyang

1.構成を確認しましたが、問題は見つかりませんでした。

2. 私は S32K314 を持っていないので、S32K344 でこの問題を確認しましたが、私の側ではこの問題は発生していません (送信プロセス中に PCS が LOW に維持されていました)。

DanNguyenDuy_0-1766988650045.png

3. 呼び出しの前後のLPSPI2_TCRレジスタの値を確認してください。

Spi_AsyncTransmit() 関数?

  • 送信プロセス中にTCR[CONT] = 0になると、PCSピンはハイレベルになります。
  • そうでない場合、FIFO が空になる前に DMA が TX FIFO にデータを転送しなかったため、LPSPI が TX FIFO が空になった状態でデータをシフトしているときにこの問題が発生する可能性があります。この状況では、LPSPI が送信終了信号を検出するため PCS がトリガーされ、これはデザイン上の制限のように見えます。

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

ダン


Re: S32K314 LPSPI - Unexpected CS toogle under DMA

こんにちは@alexyang

私の見解では、 TXウォーターマークが0の場合にこの問題が発生する可能性があります。DMA割り込みの優先度を上げ、Lpspi_ErrataHandle()関数の後にTXウォーターマークを3(最大値)に変更するステートメントを追加してテストすることをお勧めします

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

ダン

Re: S32K314 LPSPI - Unexpected CS toogle under DMA

@DanNguyenDuy
TCR[CONT]が設定されているSO、予期しないCSトグルの原因にはなりません。
LPSPI の TX ウォーターマークに関して懸念があり、私の推測ではこれが TX FIFO が空になる原因である可能性があります。

TX ウォーターマークは、以下のように Lpspi_Ip_Init で 2 に設定されます。

alexyang_1-1767319532749.png

しかし、ERR_IPV_LPSPIV2_0001 の Lpspi_ErrataHandle(Base, State) によって 0 に設定されており、これは私の推測では予期しないアクションです。

alexyang_0-1767319360552.png

したがって、私のレビューでは、ERR_IPV_LPSPIV2_0001 の回避策によって TX ウォーターマークが予期せず 0 になります。そして、別のお客様であるAutoeverからも報告がありました。
Autoever レポートでは、SPI TX アンダーランが発生し、autoever は Lpspi_TransmitTxInit によって TX ウォーターマークがクリアされていることを検出しました。SO、Autoever は「Base->FCR = LPSPI_FCR_TXWATER((uint32)LPSPI_IP_FIFO_SIZE_U8 - (uint32)2u);」を強制的に追加して TX ウォーターマークを 2 に戻し、TX アンダーランを削減しました。

TX ウォーターマークについてどう思いますか?TX ウォーターマークが 0 であることが、DMA による予期しない CS トグルの原因として CAN である可能性がありますか?

Re: S32K314 LPSPI - Unexpected CS toogle under DMA

こんにちは@alexyang

RTD チームにお問い合わせする前に、次の 2 つのテスト シナリオを試してもらいたいと思います。

  • シナリオ 1: Lpspi_ErrataHandle() 関数の後に、DMA 優先度割り込みを最高に設定し、TX ウォーターマーク = RX ウォーターマーク = 3 に設定します。
  • シナリオ 2: シナリオ 1 + RX DMA を無効にし、ポーリング方法でデータを受信します。

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

ダン


Re: S32K314 LPSPI - Unexpected CS toogle under DMA

こんにちは@DanNguyenDuy

CS トグル レートが TX ウォーターマークによって低下したため、CS トグルの原因は TX FIFO が空になったことと思われます。
ただし、この変更によって CS の切り替えの問題は完全に解決されませんでした。CS の切り替えを完全に防止するために、TX ウォーターマークに基づいた追加の提案はありますか?


alexyang_0-1767336705906.png


alexyang_1-1767336768724.png

また、 Lpspi_ErrataHandle() 関数の後に TX ウォーターマーク = 0 が予期しない動作である場合、これを修正する予定はありますか? Autoever は、TX ウォーターマークの処理について NXP に確認を取り、修正が必要な場合は NXP のパッチ計画を入手したいと考えています。

ありがとう。
BR、
アレックス・ヤン

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