こんにちは@DanNguyenDuy
以下に示すように、LPSPI DMA モードで予期しない CS トグルが発生しました。
デフォルト設定では、フレーム サイズは 8 ビット、DMA 転送サイズは 1 バイトです。SPI ボーレートは 10 Mbps です。
緑色の信号は CS を表し、「Keep」オプションを使用する場合は転送中にアサートされたままになる必要があります。しかし、予期せず切り替わりました。割り込みモードでは、CS は予想どおりにアサートされたままでした。また、PCS の代わりに GPIO ベースの CS を使用すると、切り替えなしでも正常に動作しました。
この現象は、低いボー レートよりも高いボー レートで頻繁に発生するため、原因は SPI 側での TX アンダーランである可能性があります。
スキャッターギャザーモードを有効にして SPI タイミングを調整してみましたが、問題は解決しませんでした。
私の意見では、デフォルトの DMA 構成では、高速 LPSPI 転送を処理できない可能性があります。
予期しない CS トグルを解決する方法についてアドバイスをいただけますか?
ありがとう。
BR、
アレックス・ヤン
Mobis の arxml ファイルを共有します。
RTDのバージョンは4.0.0_HF04です(香港MC
@DanNguyenDuy
LPSPI DMA 構成の Mobis のスクリーンショットを共有します。キャプチャ画像で使用しているチャネル名は Vsp です。
こんにちは@alexyang 、
どのパッケージバージョンを使用しましたか?
サンプルファイルまたは設定ファイル(.xdmまたは.arxml)を送っていただけますか?ファイルですか?
よろしくお願いいたします。
ダン
こんにちは@alexyang 、
1.構成を確認しましたが、問題は見つかりませんでした。
2. 私は S32K314 を持っていないので、S32K344 でこの問題を確認しましたが、私の側ではこの問題は発生していません (送信プロセス中に PCS が LOW に維持されていました)。
3. 呼び出しの前後のLPSPI2_TCRレジスタの値を確認してください。
Spi_AsyncTransmit() 関数?
よろしくお願いいたします。
ダン
こんにちは@alexyang 、
私の見解では、 TXウォーターマークが0の場合にこの問題が発生する可能性があります。DMA割り込みの優先度を上げ、Lpspi_ErrataHandle()関数の後にTXウォーターマークを3(最大値)に変更するステートメントを追加してテストすることをお勧めします。
よろしくお願いいたします。
ダン
@DanNguyenDuy
TCR[CONT]が設定されているSO、予期しないCSトグルの原因にはなりません。
LPSPI の TX ウォーターマークに関して懸念があり、私の推測ではこれが TX FIFO が空になる原因である可能性があります。
TX ウォーターマークは、以下のように Lpspi_Ip_Init で 2 に設定されます。
しかし、ERR_IPV_LPSPIV2_0001 の Lpspi_ErrataHandle(Base, State) によって 0 に設定されており、これは私の推測では予期しないアクションです。
したがって、私のレビューでは、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 である可能性がありますか?
こんにちは@alexyang 。
RTD チームにお問い合わせする前に、次の 2 つのテスト シナリオを試してもらいたいと思います。
よろしくお願いいたします。
ダン
こんにちは@DanNguyenDuy
CS トグル レートが TX ウォーターマークによって低下したため、CS トグルの原因は TX FIFO が空になったことと思われます。
ただし、この変更によって CS の切り替えの問題は完全に解決されませんでした。CS の切り替えを完全に防止するために、TX ウォーターマークに基づいた追加の提案はありますか?
また、 Lpspi_ErrataHandle() 関数の後に TX ウォーターマーク = 0 が予期しない動作である場合、これを修正する予定はありますか? Autoever は、TX ウォーターマークの処理について NXP に確認を取り、修正が必要な場合は NXP のパッチ計画を入手したいと考えています。
ありがとう。
BR、
アレックス・ヤン