助け:マスターモードとして設定S32K314 LIN機能を使用すると、フレームヘッダーのみが送信されます。スレーブが応答しない場合、マスターはフレームヘッダーを再度送信できません。構成は以下のとおりです。
_0-1787127326823.png_0-1787127326823.png
こんにちは@杨工
あなたが投稿したスクリーンショットを見る限り、LIN_FRAMERESPONSE_RXはマスターノードがLINフレームの応答部分を受け取ることを示しています。特定のフレームIDのサブスクライバーとして設定されている場合、ノードはブレーク+同期+PIDヘッダーを送信し、スレーブからデータ+チェックサムを受信します。
スレーブが何も送信しない場合、マスターはフレームを自動的に終了しません。Lpuart_Lin_Ip_SendFrame() をそれ以降に呼び出すと、STATUS_BUSY が返されます。アプリケーションは移転の終了を担当します。
RTD LINドライバーはまさにこの状況に対応するLin Frame Timeout機能を提供します。設定ツールでこれを有効にし、タイマー通知(LinLpuartStartTimerNotification / LinLpuartStopTimerNotification)を実装すると、タイムアウトの期限切れ時にLpuart_Lin_Ip_TimerExpiredService()を呼び出すとドライバーの状態がIDLEに戻ります。
簡単な診断として、Lpuart_Lin_Ip_SendFrame()が返STATUS_BUSYした際にアプリケーションから直接Lpuart_Lin_Ip_TimerExpiredService()またはLpuart_Lin_Ip_GoToIdleState()を呼び出して、これが根本原因であることを確認し、フルタイマー機構を配線するのが良いでしょう。
よろしくお願いいたします。
ダニエル