2397059_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2397059_ja-JP

2397059_ja-JP

S32K148 FlexCAN 出力SOFパルスのみバスオフに入ります

私はこのプログラムをS32DSで開発しました。CANフレームを送信しようとする際、TXピンには短い低レベルパルスのみが出力され、その後のIDやデータビットが切り詰められるため、完全なフレームを送信できません。USB-CANアナライザーにはデータが受信されず、FlexCANコントローラは直接バスオフ状態に入ります。

クロック設定やレジスタ値を確認し、さまざまなCANチャネルも試しましたが、問題は解決していません。どの設定パラメータが誤って設定されているのかを突き止めたい。ご協力いただきありがとうございます。

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

こんにちは、ジュリアンさん。

お返事ありがとうございます。先ほどのメッセージは急いで書いたため、いくつか重要な点を訂正し、追加したいと思います。

取締役会: これはサードパーティ製のボード(NXP EVBではありません)、モデルS32K148_REV2_Q144です。注意点として、販売者の回路図に誤り(ラベル付けされたトランシーバ位置が実際のPCBシルクスクリーンと一致しない)を見つけたため、この基板の**リファレンス・デザイン** **ドキュメント**は完全に信頼できるとは限りません。

公式CANの例: ビルドCan_example_S32K148試みましたが、CAN自体とは無関係な環境問題(ツールチェーンやインクルーパスの欠如、Port_Ci_Port_Ip.hとPort_Ci_Port_Ip_Cfg.hのバージョンミスマッチ—「異なるベンダーID」や「AutoSarバージョン番号が異なる」など)に遭遇しました。これは自分のプロジェクトとRTDパッケージのバージョンが不一致しているのであって、IDEの問題ではありません。解決しようと思いますが、ハードウェアの問題の中心ではないと思います。

新たな証拠(既にレビューいただいた私のプロジェクトから):前回のメッセージ以降、ロジックアナライザを使ってより詳細な検証を行いました。

  1. MB8 の内容は 100% 正しいです。CDD_CanTransmit() の直後にレジスタから直接読み取った結果は次のとおりです。CS=0x0C080000 (CODE=0xC 保留中、DLC=8)、ID=0x00400304 (>>18 = 0x10、設定と一致)、DATA=0x01020304/0x05060708 (私の 8 バイトのペイロードと完全に一致)。

  2. ピンのTX信号も正確で 、PTE5とトランシーバのTXD入力を同時に探査(200MHzロジックアナライザ)すると、2つの波形は同一であり、PCBトレースは問題ないことが確認できます。

  3. しかし、送信はわずか8〜9ビットの遷移( おおよそSOF + 数ビットの仲裁ビット)で中止され、コントローラーは間もなくバスオフに入ります(ESR1がFLTCONF=11を確認し、TXERRCNTは各試みごとに増分します)。

  4. CANH/CANLは、USB-CANアナライザーを正しく接続し、120Ω終端を有効にしていても(バスがフローティングしていない状態)でも、活動はゼロです。対照実験として、同じ設定(フローティング状態と終端状態)を別の正常に動作することが確認されているSTM32ボードで実行したところ、終端状態になるとCANHは適切な遷移を示しました。私のS32K148ボードでは、同一の終端条件下において、CANH/CANLは完全に平坦なままです。

  5. CAN1でも同じ結果でした(ピンやトランシーバが違う)。

MCU側のTXDはトランシーバ入力まで正確であることが確認されていますが、CANH/CANLは適切な終端をしても応答しません。したがって、トランシーバの出力段階(または両チャネルで共有されている何か、例えば電源の過渡的な挙動については、オシロスコープでは確認できず、ロジックアナライザでしか確認できていません。

質問:

  1. 「TXDはトランシーバー入力で修正されるが、適切な終端でCANH/CANLは完全にフラット」というのは、トランシーバーのハードウェア故障を強く示唆するのでしょうか?それとも、他に一般的な基板レベルの問題(有効化/スタンバイ回路、電源デカップリング)がこの症状を引き起こす可能性があるのでしょうか?

  2. 実際のバスアクティビティがない場合、FlexCANは最初の数ビットのアービトレーション処理が完了した時点で(フレーム全体を完了してACKスロットで失敗するのではなく)処理を中止するのが想定される動作でしょうか?ビット監視メカニズムに関する私の理解を確認したいです。

  3. サンプルプロジェクトのRTDバージョンの不一致についてですが、どのRTDバージョンが特定のS32構成ツールのリリースと一致しているか確認する方法はありますか?そうすれば、一致するサンプルパッケージを入手できます。

ご協力ありがとうございました。

よろしくお願いいたします、エイプリル

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff
こんにちは、ジュリアンさん。
私の質問にご回答いただき、本当に驚き、そして感謝しています。
 
私は自作のハードウェアボードを使っています。公式のEVB回路と異なるのは電源回路のみであり、それ以外の回路はリファレンス・デザインと整合しています。
公式のCAN例プロジェクトもテストしました。MCALレイヤー内のPORTモジュールを有効化および設定せずにCAN0ピンのみを設定したところ、プロジェクトのコンパイルが繰り返し失敗します。
 
具体的なコンパイルエラーは次のとおりです。 「 f ../board/Port_Ci_Port_Ip_Cfg.h:47:10: fatal error: Port_Ci_Port_Ip_Types.h: そのようなファイルまたはディレクトリはありません"。
 
自分で設定したプロジェクトファイルにはこのヘッダーファイルが存在するのですが、公式のサンプルプロジェクトをインポートした後、コード生成時にこのヘッダーファイルが自動的に生成されません。
このヘッダーファイルの欠如エラーは、IDEソフトウェアのバージョンが不一致であることが原因かもしれませんか?現在は S32プラットフォーム用のS32DSで開発しており、開発環境を切り替えるために ARM 2.2.2用のS32DS をダウンロードしています。
ご指導をお待ちしております。
 
よろしくお願いいたします。
 
4月
Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

こんにちは、 @April さん

プロジェクトを見る限り、設定と手順は正しいようです。NXPのS32K148EVBを使っているのか、それともカスタムデザインなのか教えていただけますか?

RTDに含まれているCan_example_S32K148プロジェクトをテストしてみましたか?CAN0ピンを追加し、ループバックモードを無効にしてTx/Rxを有効にしてルーチンをテストするだけで済みます。

最後に、両方のノード(S32K148とCANアナライザー)が同じビットタイミングとプロトコル構成(CAN対CAN FD)に設定されているか確認しましたか?以下のツールを使って値を計算できます:MPC5xxx/S32Kxx/LPCxxxx: CAN / CAN FD ビットタイミング計算

カスタム設計を使用する場合は、S32K148 EVBの回路図およびS32K1xxのハードウェア設計ガイドラインを参照して、CANインターフェース設計や推奨事項を確認できます。

よろしくお願いします、
ジュリアン

Tags (1)
No ratings
Version history
Last update:
15 hours ago
Updated by: