コミュニティの皆様、こんにちは。S32K144 SDKのI2C機能の使用中に問題が発生しています。解決方法を教えていただけないでしょうか?SDKのI2C PALを使用する場合、S32K144はデータ送信のI2Cマスターとして機能します。EEPROMへの書き込みにはWCピンをローにする必要があるため、書き込み前にWCピンをローにプルダウンします。 `while(STATUS_SUCCESS != I2C_MasterSendDataBlocking(&I2C_Config_instance,&TxBuffer[0],3,true,100));` を呼び出して3バイトを送信し、戻りステータスがSTATUS_SUCCESSであることを検出した後、WCピンをハイにプルダウンします。しかし、実際にキャプチャされた波形では、ピンが0x99でハイになっていることがわかります(図を参照)。論理的には、0x99を送信した後にのみハイになるはずです。なぜこのようなことが起こるのでしょうか?
プロジェクトをテストしたところ、ご提供いただいたI2C波形と類似した現象を確認しました。I2C_MasterSendDataBlockingを確認したところ、LPI2C_DRV_MasterSendDataで最後のデータを送信FIFOに転送した後、STATUS_SUCCESSとみなされていることがわかりました。ただし、LPI2Cの送信FIFOには、データが書き込まれてから実際の送信が完了するまでに多少の時間がかかります。
LPI2C_DRV_MasterSendDataは、LPI2C_MASTER_FIFO_ERROR_INT、LPI2C_MASTER_ARBITRATION_LOST_INT、LPI2C_MASTER_NACK_DETECT_INTなどの一部の割り込みのみを有効にします。残念ながら、マスターがSTOPコンディションを送信したことを示すSDF(STOP検出フラグ)割り込みイベントも有効化または実装しません。
こんにちは、こんにちは:
添付ファイルは私が使用したプロジェクトで、使用した SDK バージョンは 3.0.0 です。
こんにちは
どのSDKバージョンを指されていますか?S32K144EVBでテストしたいので、テストプロジェクトを送っていただけますか?
よろしくお願いします、
ロビン
添付の波形