2397059_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

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インターフェース設計や推奨事項を確認できます。

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

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

こんにちは、 @April さん

1. はい、これはモジュール構成ではなくトランシーバの故障を示しています。カスタム設計で使われているトランシーバは確認できますか?

I'd recommend checking STB, EN, S, RS, WAKE, INH, or similar pins against the actual mounted トランシーバ.

S32K148 EVBはUJA1132HWを使用しますが、 TJA1043のようなものを使用する場合は、ノーマルモード STB_N = high、 EN = high)に設定する必要があります。

2. はい、トランシーバが実際にバスを駆動していない場合、数ビットの仲裁後の早期中止は可能です。

3. 通常、「異なるベンダーID」や「AutoSarバージョン番号が異なる」というエラーは、プロジェクトをインポートし、異なるRTDやS32設定ツールのバージョンで設定を更新しようとした際に発生しますが、単に「File -> New -> S32DS Project From Example」から例をインポートした場合は、互換性の問題は起きないはずです。

Julin_AragnM_0-1784738938507.png

共有してくれたプロジェクトから、S32K1 RTD 3.0.0を使っているようですねしかし、プロジェクトをインポートしたところ、プロパティからGCC 11.4が設定されていることがわかります:

Julin_AragnM_1-1784739211073.png

RTDリリースノートより、3.0.0QLP04はNXP GCC 10.2のみをサポートしています:

Julin_AragnM_3-1784739259075.png

プロジェクトをどのようにインポートしてコンパイルしたのかはわかりませんが、少なくともS32DS 3.6.4がインストールされていることを確認してください。RTDパッケージは1つだけインストールされていました。S32DSは複数のRTDバージョンを同時にサポートしていません。

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

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

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

この件に関して、引き続きご辛抱いただきありがとうございます。前回のメッセージ以降、いくつか更新情報があります。

トランシーバーチェック: よく見てみたら、UJA1132シリーズSBCではなく TJA1051であることが確認されました。このモデルはイネーブピン(Sピン)が1つだけで、ボードのアースにハードワイヤードされている(=ノーマルモード)ので、あなたが言及したマルチピンSTB_N/ENのロジックはここではあまり当てはまりません。制御回路のその部分はすでに正しく見えます。

別の独立したプロジェクトと照合してください: このボード用に全く異なるCANデモを作って実行しました(リセラーから、RTD/AUTOSARの代わりに古いプロセッサ Expert/S32 SDKスタック(can_pal)を使って)。ボタンを正しく押すとCAN_Send()が呼び出されますが、戻り値が常にSTATUS_BUSY(0x002)であることに気づきました。これは、前回の送信が実際には完了していないことを意味します。そして私のRTDプロジェクトと同様に、USB-CANアナライザーは3つのチャネルすべてで何も受信しません。つまり、完全に独立した2つのドライバースタックが同じ結果になっているので、これはソフトウェアや設定の問題ではないとかなり自信を持っています。

公式の例プロジェクトについて: ご提案通りGCCバージョンを10.2に戻しましたが、ビルド中に同じ「ファイルが見つかりません」エラーが出ます。さらに調べてみたところ、ポートモジュール(MCALレイヤー)が完全に設定されていないことに関係しているのではないかと疑っています。ポートモジュールとピンツールの機能グループの連携に関連した検証エラーがあるようですが、どんなに試しても正しく設定できていません。

April_4-1784786142962.png


これらは例です。

April_0-1784785801363.png
April_1-1784785825602.png
これは私が以前自分で作ったプロジェクトからのものです。

April_2-1784786013234.pngApril_3-1784786034737.png

これまでの状況を踏まえると、コントロールピンの配線は正確で、ピンのTXDも正確であることが確認され、2つの独立したソフトウェアスタックでも3つのチャネルすべてで一貫して「バス活動なし」/送信動作が止まっていることを示しています。これをハードウェアの故障として扱いRMAを進めるに値すると思いますか?それとも他に最初に確認すべき点はありますか?

この件に関してご協力いただき、改めて感謝申し上げます。

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

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

こんにちは、 @April さん

追加情報ありがとうございます。

1. TJA1051に関して、このトランシーバはノーマルモードを設定するためにSピンのみを持っていますが、TJA1051T/E微分を使っている場合は、 HIGHを駆動しなければならない追加のENピンがあるので確認してください。

Julin_AragnM_0-1784829788604.png

2. 「ファイルが見つかりません」エラーは、ポート設定の誤り、ひいてはツールによるコード生成の誤りが原因である可能性が最も高いです。あなたが共有したポートコンテナのエラーは、「ピン」機能グループ名が 「ポートコンテナ名」+「ペリフェラル機能グループ」の後に名前付けされるべきであり、あなたの場合は「PortContainer_0_VS_0」と呼ばれています。

Julin_AragnM_2-1784829995267.png

Julin_AragnM_1-1784829932110.png

RMAを依頼する前に、添付したプロジェクトをテストしてもらえますか?これはMCALのシンプルなテストコードで、Rxを割り込みモードで、Txをポーリングモードで有効にします。10回のフレームのエコーが正常に完了すると、緑色のLEDが点滅します。

J11 CANヘッダーとPCAN-USBアナライザーでルーチンを以下の設定でテストしました:

Julin_AragnM_3-1784830112924.png

フレームが正常にエコーされているのが見え、緑色のLEDは10フレームごとに切り替えられていました:

Julin_AragnM_4-1784830143208.png

私はS32K148-EVBを使っているのでトランシーバーのイネーブルメントは不要ですが、あなたの環境ではTJA1051が正しく有効になっているか(そしてENピンも有効化が必要かどうか)を確認してください。

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

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

こんにちは、 @April さん

すべてが期待通りに動作するようになって本当に嬉しいです!

先ほどのエラーの原因を教えていただけますか?単純なハードウェア接続だったのでしょうか?

あなたも良い一日をお過ごしください!

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

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

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

すべてが完璧に動作していることをお伝えするのが待ちきれません!この朗報をお伝えできて、本当に嬉しいです。再テスト用に新しいMCUボードとCANトランシーバーを注文しましたが、今回は通信が完璧に動作しています。以前発生していた頻繁なBusOffエラーは、完全にハードウェアの故障だったことが判明しました。

添付していただいたテストプロジェクトも読み込んでみましたが、こちらも問題なく動作しました。サンプルコードは、あなたが説明した通り、CANフレームをスムーズに送受信できます。

この数日間、あなたが私に与えてくれた忍耐強い指導に本当に感謝しています。この問題の解決に一人では全く手詰まりで途方に暮れていましたが、あなたの詳細な回答のおかげで窮地から抜け出すことができました。

皆様のご健康と、仕事の順調な進行、そして毎日の幸せをお祈り申し上げます!

よろしくお願いします、
4月

Re: S32K148 FlexCAN Only Output SOF Pulse then Enter BusOff

こんにちは、 @Julián_AragónM さん

ハハ、配線の問題じゃなかったよ。元のTJA1051トランシーバーモジュールは欠陥があり、BusOffの問題を引き起こしました。

改めて、たくさんの助けを本当にありがとうございます!^_^


よろしくお願いします、
4月

タグ(1)
評価なし
バージョン履歴
最終更新日:
3 週間前
更新者: