2156038_ja-JP

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

2156038_ja-JP

2156038_ja-JP

S32k311+MC33774A 制御はPhy応答を待つ間停止します

S32K311 MCU と MC33774A AFE を使用して FreeRTOS BMS アプリケーションを作成しています。AFE との通信は、割り込みモードの直接 SPI ドライバを介して行われます。

それに加えて、車載と充電器との通信に割り込みモードで CAN ポートを使用しています。いずれかのポートで100ms未満の間隔でCANデータを送信すると、コードは停止します。

ce_ritesh_0-1755775506839.png

CAN ISRは次のようになります

ce_ritesh_1-1755775917840.png

何が問題なのか、そしてどのように対処すべきか


Re: S32k311+MC33774A Control halts while waiting for Phy response

CAN ISR の優先度を SPI よりも低く設定すると、問題は解決しました。現在、MCU は停止しておらず、CAN タスクはデータ損失なしで実行されています。

Re: S32k311+MC33774A Control halts while waiting for Phy response

こんにちは、

CAN 負荷が高いために SPI がブロックされている場合、CAN ISR が CPU 時間を過剰に消費しているか、他の割り込み (特に割り込み駆動型の SPI) が不足していることを意味している可能性があります。これにより、SPI トランザクションが完了せず、TD_Wait() 関数がポーリング ループから抜け出せなくなるCANがあります。

CAN ISR の優先度が高すぎるため、SPI ISR の実行が妨げられている可能性があります。
SPI のブロックを解除する解決策としては、CAN 割り込み優先度を下げ、SPI よりも低く、configMAX_SYSCALL_INTERRUPT_PRIORITY よりも低く設定することが考えられます。
これにより、SPI ISR は必要に応じて CAN ISR をプリエンプトできるようになります。

以下にいくつかの追加のヒントを示します...
- CAN ISR負荷を軽減
CAN ISR で行われる作業を最小限に抑えます。ログ記録とプロセッシングをキュー経由で FreeRTOS タスクに移動します。
- SPIにDMAを使用する
アプリでサポートされている場合は、SPI を DMA モードに切り替えて ISR への依存を減らし、スループットを向上させます。
- TD_Wait() にタイムアウトを追加する
タイムアウトを追加するか、FreeRTOS 同期 (セマフォなど) を使用することで、無限ブロックを防止します。
- ISR実行時間のプロファイル
ロジック アナライザーまたは MCU トレース ツールを使用して、ISR 期間を測定し、ボトルネックを特定します。

BR、ペトル

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 06:05 PM
Updated by: