JAJA940A July   2024  – July 2025 TPS25751

 

  1.   1
  2.   概要
  3.   商標
  4. 1はじめに
  5. 2ADCINX 設定
  6. 3固有アドレス インターフェイスプロトコル
  7. 4PTCHモードから APPモードへの切り替え
    1. 4.1 PTCH モードから APP モードへのステップ
    2. 4.2 下位領域バイナリの生成ステップ
  8. 5サンプル コード
  9. 6参考資料
  10. 7改訂履歴

PTCH モードから APP モードへのステップ

  1. I2Ct_IRQ == Low:

    コールドブート(パワーサイクルまたは GAID )時に、PD コントローラはPTCHモードに移行し、パッチ準備完了[81]割り込みのみが自動的に有効になります。割り込みレジスタは、PTCHモード中に更新できます。この PBM の実装では、「パッチ準備完了」および「CMD1完了割り込み」を使用します。レジスタをポーリングする代わりに割り込みを利用する主な理由は、PD コントローラの CPU ロードをコマンドに関連するアクティビティだけに減らためすです。

    パッチ準備完了割り込みは、PBMプロセスの開始時に使用され、PDコントローラの準備完了を示します。CMD1 完了割り込みは、PBMs および PBMc コマンドが完了したことを EC に通知するために使用されます。この例では、パッチがロードされた後、PDコントローラがアプリケーションモードへ遷移するまでの時間を考慮し、MODEレジスタ(0x03)のポーリング処理を引き続き含めています:APP

  2. Mode == PTCH:

    PTCHおよびAPPモードは、PD コントローラの TRM に記載されています。PD コントローラ評価基板の EEPROM は無効になっている( SDA が切断されている)ため、PDコントローラはPTCHモードに遷移し、その状態を維持します。プロセス開始時のPTCHモードのチェックは必要ありませんが、完全性のために含まれています。以下は、コマンドの例で、ロジック アナライザ キャプチャの例はPTCHモードの読み取りに示しています。

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x03 + ACK(レジスタ番号/A)

    [0x21]+ ACK(固有のアドレス/ R/A)

    0x04(バイト数)

    0x50 0x54 0x43 0x48(PTCHは4ASCII文字)

     PTCHモードの読み取り 図 4-2 PTCHモードの読み取り
  3. I2Ct_IRQの設定、CMD1の完了:

    CMD1 完了割り込みは、PBMsコマンドが完了したことを EC に通知するために使用されます。割り込みマスクの設定と割り込みのクリアは、それぞれレジスタ 0x16 および 0x18 で行います。12を参照

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x16 + ACK(レジスタ番号/A)

    0x0B(バイト数)

    0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x01 (MSB)

     割り込みマスクレジスタ、0x16の設定 図 4-3 割り込みマスクレジスタ、0x16の設定

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x18 + ACK(レジスタ番号/A)

    0x0B(バイト数)

    0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF (MSB)

     割り込みクリア
                            レジスタ、0x18 図 4-4 割り込みクリア レジスタ、0x18
  4. PBMsデータのみ:

    PBMs コマンドは TRM リファレンスで定義されています。この例では、PBMs のパラメータを表 4-1に記載しています。

    表 4-1 PBMsの設定:DATA1 レジスタ
    説明 コメント
    バンドルサイズ 0x00002C80 セクション 5 を参照
    I2C バーストデータターゲットアドレス 0x30 0x30、参考資料 1 を参照。
    タイムアウト 0x31 3.1秒;参考資料1を参照

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x09 + ACK(レジスタ番号/A)

    0x06(バイト数)

    0x80 0x2C 0x00 0x00 0x30 0x32(バンドルサイズ、I2Cターゲットアドレス、タイムアウト値)

     DATA1レジスタ、0x09、PBMs用 図 4-5 DATA1レジスタ、0x09、PBMs用
  5. データグッド:

    PBMs コマンドを送信するには、データレジスタへの書き込みを複数回行う必要があります。この例では、レジスタ 0x08 で PBMs コマンドを書き込む前に、0x09 の値を確認します。レジスタ 0x09 の書き込みと読み取りみの間には、500us の遅延があります。

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x09 + ACK(レジスタ番号/A)

    [0x21]+ ACK(固有のアドレス/ R/A)

    0x40(バイト数)

    0x00 0x00 0x00 0x00 0x00 0x00 (誤り, DATA1 のリライト)

    0x80 0x2C 0x00 0x00 0x30 0x32(正しい、CMD1の書き込みに進む)

  6. PBMs CMD1:

    DATA1 を確認した後、CMD1=PBMs を書き込みます。I2Ct_IRQ は、図 4-6に示すように low にアサートされます。

    [0x20]+ ACK(固有のアドレス/ Wr/A)

    0x08 + ACK(レジスタ番号/A)

    0x04(バイト数)

    0x50 0x42 0x4D 0x73(PBMsは4ASCII文字)

     PBMsをCMD1レジスタ(0x08)に書き込む 図 4-6 PBMsをCMD1レジスタ(0x08)に書き込む
  7. I2Ct_IRQ == Low

    IRQ 信号は CMD1 完了イベントの発生を示し、CMD1 および DATA レジスタを読み取ることで PBMs コマンドの結果を確認できます。期待される結果をステップ 8 と 9 に示します。

  8. CMD1クリア(PBMs)

    コマンドレジスタ(0x08)は、内容がクリアされることでコマンドの正常完了を示します。単純化すると、この例では最初のビットをチェックし、PBMsコマンドの破損、またはCMD1のIRQが未完了であれば、データレジスタに不正な値がロードされたことを示します。(1)

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x08 + ACK(レジスタ番号/A)

    [0x21]+ ACK(固有のアドレス/ R/A)

    0x04(バイト数)

    0x00 0x00 0x00 0x00

  9. DATA1クリア(PBMs)

    データレジスタ(0x09)は、先頭バイト PatchStartStatus がクリアされることで、パッチの成功を示します。PatchStartStatue、0x04、0x05、0x06 といったゼロ以外の値は、それぞれ無効なバンドルサイズ、ターゲットアドレス、またはタイムアウト値を示します。1 を参照してください。

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x09 + ACK(レジスタ番号/A)

    [0x21]+ ACK(固有のアドレス/ R/A)

    0x40(バイト数)

    0x00 0x00 0x00 0x00 0x30 0x31

  10. バーストデータ

    このステップでは PMBUS 形式は使用せず、バイナリイメージの内容を PBMs コマンドの表で指定された I2C バーストデータターゲットアドレスに直接書き込みます。バースト形式は、マイコンのアーキテクチャによって影響を受けます。この場合、バーストサイズは 4KB に制限されているため、3 回の連続バースト(4095 バイト、4095 バイト、3202 バイト)が、各バースト間に 500us の遅延を挟んで PD に送信されます。最終バーストの終了時点を基準としてPBMcコマンドが送信されると、さらに 500us の遅延が追加されます。

    [0x30]+ ACK(固有のアドレス/ Wr/A)

    lowRegion_i2c_array[0], lowRegion_i2c_array[1]..., lowRegion_i2c_array[4094]

    [0x30]+ ACK(固有のアドレス/ Wr/A)

    lowRegion_i2c_array[4095], lowRegion_i2c_array[4096]..., lowRegion_i2c_array[8189]

    [0x30]+ ACK(固有のアドレス/ Wr/A)

    lowRegion_i2c_array[8190], lowRegion_i2c_array[8191]..., lowRegion_i2c_array[11391]

  11. I2Ct_IRQ、CMD1 完了の設定

    CMD1 完了割り込みは、PBMc コマンドの完了を EC に通知するために使用されます。割り込みマスクの設定と割り込みのクリアは、それぞれレジスタ 0x16 および 0x18 で行います。割り込みマスクは、ステップ 3 ですでに設定されています。図 4-4および図 4-7に示すように、割り込みを繰り返しクリアします。

  12. PBMc CMD1 限定

    PBMcコマンドには入力データは含まれないため、コマンドのみが送信されます。

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x08 + ACK(レジスタ番号/A)

    [0x21]+ ACK(固有のアドレス/ R/A)

    0x04(バイト数)

    0x50 0x42 0x4D 0x63(「PBMc」は 4ASCII 文字)

     割り込みのクリア、PBMcのCMD1レジスタへの書き込み 図 4-7 割り込みのクリア、PBMcのCMD1レジスタへの書き込み
  13. I2Ct_IRQ == Low

    IRQ 信号は CMD1 完了イベントの発生を示し、CMD1 レジスタを読み取ることで PBMc コマンドの結果を確認できます。

  14. CMD1 のクリア(PBMc)

    PBMs CMD1と同様に、CMD1レジスタを読み取って元のコマンドがクリアされており、!CMDでないことを確認します。

     I2Ct_IRQアサート後のCMD1の読み取り(PBMc) 図 4-8 I2Ct_IRQアサート後のCMD1の読み取り(PBMc)
  15. 遅延20ms (1)

    20ms の遅延により、PD コントローラはイメージを読み込み、適用できます。遅延が経過すると、DATA1 およびMode レジスタが読み取られ、成功が確認されます。

     CMD1およびDATA1レジスタの読み出し遅延間隔 図 4-9 CMD1およびDATA1レジスタの読み出し遅延間隔
  16. DATA1 のクリア(PBMc)

    この例では、DATA1 レジスタから 40 バイトが読み取ります。

     PBMc 完了後の DATA1
                            レジスタの読み取り 図 4-10 PBMc 完了後の DATA1 レジスタの読み取り
  17. Mode == APP

    最後のステップは、PD がAPP モードに移行したことを確認することです。APP モードに移行すると、PD コントローラはカスタム設定が適用された状態で動作可能になります。

    [0x21]+ ACK(固有のアドレス/ Wr/A)

    0x03 + ACK(レジスタ番号/A)

    [0x21]+ ACK(固有のアドレス/ R/A)

    0x04(バイト数)

    0x41 0x50 0x50 0x20(「アプリケーション」は 4 ASCII 文字)

     APP モード 図 4-11 APP モード
CMD1 完了の IRQ が使用されていなかった場合、CMD レジスタは、[0x50、0x42、0x4D、0x73]から[0x00、0x00、0x00、0x00]または[0x21、0x43、0x4D、0x44]のいずれかに遷移するまでポーリングできます。CMD1[0] = 0x21 はコマンドの失敗を、CMD1[0] = 0x00 は正常完了を示します。
この20msの遅延は、Patch Loaded 割り込みで置き換えることができます。遅延の代わりにこの割り込みを使用しても時間を短縮することはできませんでした。そのため、このドキュメントでは、デバイスの TRM に記載されている 20ms の遅延を維持しています。12を参照