MCU: S32K344
OS: FreeRTOS
S32 Design Studio: 3.4.3
こんにちは、チーム
S32K344 MCU をベースにしたカスタム ボードを使用しています。特定の I2C エラー条件下では実行時に MCU がハングするという問題が発生しています。
I2C インターフェースを介して接続された IMU スレーブ デバイスがあります。時々、次のようなとき:
I2C 書き込み API はタイムアウト状態を返さないか、タイムアウト状態になりません。その結果、 I2C トランザクションを実行する FreeRTOS タスクが無期限に停止し、最終的にアプリケーションがハングすることになります。
あらゆるガイダンスや参考資料をいただければ幸いです。
ありがとう、よろしく。
ヴィナイ
こんにちは@vinaykl 、
非常に古い RTD をお持ちです。
何か理由があるのでしょうか?
RTD 2.0.0 と現在の RTD 7.0.0 の間では多くのバグが修正されています。
I2C ドライバのブロッキング API を使用すると想定しています。
代わりに、GetStatus() とタイムアウトとともに非同期転送 API を使用してください。
スレーブデバイスが 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
よろしくお願いいたします。
ダニエル