2304668_ja-JP

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

2304668_ja-JP

2304668_ja-JP

S32K344 ハングアップ問題

MCU: S32K344
OS: FreeRTOS
S32 Design Studio: 3.4.3

問題: I2C 書き込みブロッキングによる MCU のハング (タイムアウトなし)

こんにちは、チーム

S32K344 MCU をベースにしたカスタム ボードを使用しています。特定の I2C エラー条件下では実行時に MCU がハングするという問題が発生しています。

I2C インターフェースを介して接続された IMU スレーブ デバイスがあります。時々、次のようなとき:

  • IMUに電源が入っていない、または
  • I2C書き込み操作が失敗する(例:ACKなし/バススタック)

I2C 書き込み API はタイムアウト状態を返さないか、タイムアウト状態になりません。その結果、 I2C トランザクションを実行する FreeRTOS タスクが無期限に停止し、最終的にアプリケーションがハングすることになります。

観察:

  • この問題は、スレーブが応答しないか、バスが低く保持されている場合に発生します。
  • I2C ドライバは転送の完了を待機してブロックしているように見えます。
  • RTOS またはドライバ レベルではタイムアウトまたは回復メカニズムはトリガーされません。

サポートのリクエスト:

  1. S32K344 上の I2C トランザクションにタイムアウトを追加または強制するにはどうすればよいですか?
  2. スタックした I2C バス (SDA/SCL が低く保持される) を回復するための推奨される方法はありますか?
  3. S32K3 デバイス上のFreeRTOS で I2C を安全に使用するベスト プラクティスは何ですか?
  4. このシナリオを堅牢に処理する NXP のドライバ構成または例はありますか?

あらゆるガイダンスや参考資料をいただければ幸いです。

ありがとう、よろしく。
ヴィナイ

Re: S32K344 Hanging issue

こんにちは@vinaykl


非常に古い RTD をお持ちです。

何か理由があるのでしょうか?

RTD 2.0.0 と現在の RTD 7.0.0 の間では多くのバグが修正されています。


I2C ドライバのブロッキング API を使用すると想定しています。

代わりに、GetStatus() とタイムアウトとともに非同期転送 API を使用してください。

danielmartynek_0-1770627240529.png


スレーブデバイスが SDA を低く保持し続ける場合は回復できます。I2C ユーザーマニュアルを参照してください。

セクション3.1.16バスはクリア

https://www.nxp.com/docs/en/ユーザーガイド/UM10204.pdf

 

RTD ドライバには回復用の API がありません。

例としてはAN4803があります

I2C復元関数の定義

https://www.nxp.com/docs/en/application-note/AN4803.pdf


よろしくお願いいたします。

ダニエル

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎02-10-2026 03:32 AM
更新者: