私はS32K314を使っていますが、最近テスト中に発振器がショートしてしまい、CANに関する問題が発生しました。
回復後、SPI、ADCを監視しました。これらのモジュールは正常に動作しますが、CANモジュールは通常通り動作しません。
デバッカはこれらの情報を表示しますが、この状態ではCANの受信や送信ができません。
どうしてこんなことが起きたのか、そしてSWでこの故障をどうやって回復すればいいのでしょうか?
こんにちは、
ご返信ありがとうございます。
「Mcu_ClockSourceFailure_Notification」にテストコードを追加しようとしましたが、この通知はトリガーされません。
ソフトウェア側からは、この問題が起きてCANモジュールをリセットするにはどうすればいいのでしょうか?
よろしくお願いします。
下記は、ご指摘いただいたレジスタの値です。
MCR
CTRL1
CBT:
FDCBT:
ECR
ESR1
こんにちは、
提供されたスクリーンショットから、受信エラーカウンタ(RXERRCNT)が増加している一方で、TXERRCNTは0のままであり、ESR1が送信試行中であることを示しているにもかかわらず、典型的な送信関連の問題とは完全には一致しません。
発振器のショートサーキットがクロックに影響を及ぼし、例えば回復後のCANビットタイミングの誤差を引き起こす可能性があります。しかし、現在の情報だけではこれを裏付けるには不十分である。
以下の情報を提供していただけますか:
FlexCANモジュールのクロックとCANプロトコルのクロックが動作し、期待される周波数であれば、FlexCANモジュールのソフトウェアリセットを実行し、モジュールの初期化を完全に行い、通信が回復しているか確認することもできます。
BR、ペトル
こんにちは、
Mcu_ClockSourceFailure_Notification()が入力されていない場合、私の最初の仮定は、対応するMCU割り込み/通知経路がプロジェクト内で設定または有効化されていないということです。
以下を確認していただけませんか:
また、発振器ショートサーキットイベント後にCMUおよびRGMの状態レジスタを検査し、クロック障害が実際に検出されているかを確認することも有用です。
FlexCANレジスタダンプから、モジュールは有効化され、バスと同期している(SYNCH=1)ように見えますが、RXERRCNTが増加し、TXERRCNTは0のままで、バスアクティビティがありません。表示されているビットタイミングレジスタ(CTRL1、CBT、FDCBT)には有効なCANタイミング設定が含まれていないようですが、強化されたCANビットタイミングを使用し、実際のタイミングがそれぞれの強化CANビットタイミングレジスタを通じて設定されている場合は予想されるかもしれません。
したがって、CANリセット戦略を実装する前に、クロック障害イベントが検出されているかどうか、通知機構が適切に設定されているかを確認することが望ましいです。
BR、ペトル