こんにちは、現在問題に直面しています。FRDM-MCXN947のI3Cインターフェースを使ってI2C通信をしたいのですが、接続しているスレーブデバイスがデータ準備中にクロックストレッチが発生するため、データ転送が開始される前にスレーブデバイスがSCL信号を放出するのを待たなければなりません。
MCXNP184M150F70RM リファレンスファイルにある設定可能なレジスタ (MCONFIG[SKEW] = 0、MCONFIG[HKEEP] = 0b11、MCONFIG[MSTENA] = 0b11 など) を使ってみましたが、うまく動作しないようです。どうすれば解決できるでしょうか?
#FRDM-MCXN947 #I3C
こんにちは、 @kevin_Jhuang
レジスタ設定は現在、I3C_MasterInit()より前に適用されているため、SDKの初期化によって上書きされることがあります。
有効にしてください:
masterConfig->disableTimeout = true;
次に、I3C_MasterInit() の後に、MSTENA = 3、HKEEP = 3、SKEW = 0 を設定します。|= を使用する代わりに、対応するレジスタフィールドを書き込む前にクリアしてください。
初期化後、MCONFIGを読み込んで設定が有効になっていることを確認してください。クロックストレッチングの失敗直後に取得したMSTATUS値とMERRWARN値も提供してください。
SCLとSDAがオープンドレイン動作に設定されていること、および外部プルアップ抵抗が取り付けられていることも確認してください。
BR
ハリー