現在、公式のP3H2840デモを基にデバッグを行っているのですが、デモにおける温度センサーの読み取り値がI2CモードとI3Cモードで異なることが分かりました(下図参照)。これは正常な動作でしょうか?
こんにちは、
I3Cモードレジスタの読み取り時に毎回表示される0xffという2番目のバイトは正しくなく、ハブ構成の問題を示しています。参考までに、P3H2x4xHN-ARDの搭載温度センサーはNXP P3T1755DP デバイスで、完全にI3C対応なので、ハブが正しく設定されれば両方のモードで測定値は同じになるはずです。
以下の3項目をご確認ください。
動的アドレス割り当て— P3T1755DPはI2Cモードで起動し、I3Cプライベート転送が機能する前に動的アドレス(ENTDAA、SETAASA、またはSETDASA経由)を受信する必要があります。この段階が完了する前に i3c_xfer が呼び出されると、デバイスはI3Cフレームに正しく応答できず、2バイト目は 0xffと読み取られます。アドレス割り当てCCCが正常に実行され、0x4cが割り当てられた動的アドレスであることを確認してください。
バースト長有効化 — REG#17[6] (BL_ENABLE) — このビットが設定されている場合、I3C 書き込みフェーズにはレジスタポインタの後にバースト長バイトを含める必要があります。i3c_xfer 呼び出しで書き込みバイト (レジスタ アドレス) が 1 つしか送信されない場合、ハブは不完全なフレームを受信し、読み取り応答のアライメントがずれるため、2 バイト目に 0xff が発生します。REG#17を読み返して、ビット6がセットされているかどうかを確認してください。もしそうであれば、書き込みペイロードにBLバイトを追加するか、必要ない場合はBL_ENABLEをクリアしてください。
ターゲットポートVCCIO — REG#22 — I3Cモードでは、ターゲットポートはREG#22のVCCIO設定を参照するプッシュプル駆動レベルを使用します。これが実際のP3T1755DP供給電圧と一致しない場合、プッシュプルモードで転送されたデータバイトが破損することがあります。REG#22がセンサーが接続されているターゲットポートの正しい動作電圧を反映しているか確認してください。