こんにちは、皆さん
私はS32K312でCAN0を使用し、500kbpsの速度で87.5%のサンプリングポイントを設定しています。
最初は、CAN0を内部のFIRC_CLKをクロックソースとして使用するように設定しました。S32K312を複数のCANノードがあるネットワークに接続したところ、多くのCANエラーフレームに気付きました。
その後、CANのクロックソースをFIRC_CLKから外部FXOSC_CLKに切り替え、CANのビットレートとサンプリングポイントは同じにしました。この変更後、通信は安定し、エラーフレームが表示されなくなりました。
なぜクロックソースをFIRC_CLKからFXOSC_CLKに切り替えるとCANエラーが直るのか、どなたか教えてもらえますか?
こんにちは、 @Karthik_R さん。
通常、FIRCクロックはFlexCAN通信には推奨されません。なぜなら、精度がCANプロトコル(ISO 11898-1)の~1%要件を超えているためです。S32K3のデータシートを見ると、FIRCの偏差は+-5%です。
FXOSCを使用するか、XOSCから実行されるPLLを使用することを推奨します。FlexCANビットタイミング計算のドキュメントや、MPC5xxx/S32Kxx/LPCxxxx: CAN / CAN FDビットタイミング計算ツールをご参照ください。
これで分かりやすくなったでしょうか。
よろしくお願いします、
ジュリアン