ZHCAE88A July   2024  – July 2025 TPS25751

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2ADCINX 设置
  6. 3唯一地址接口协议
  7. 4从 PTCH 模式切换至 APP 模式
    1. 4.1 从 PTCH 模式切换至 APP 模式的步骤
    2. 4.2 生成低区二进制文件的步骤
  8. 5示例代码
  9. 6参考资料
  10. 7修订历史记录

从 PTCH 模式切换至 APP 模式的步骤

  1. I2Ct_IRQ == 低电平:

    冷启动(断电重启或 GAID)后,PD 控制器进入 PTCH 模式,且仅修补准备就绪[81] 中断会自动启用。可以在 PTCH 模式下更新中断寄存器。此 PBM 实现方案使用修补准备就绪和 CMD1 完成中断。之所以采用中断而非轮询寄存器,主要原因是为了将 PD 控制器 CPU 负载减少至仅与命令相关的活动。

    在 PBM 流程开始时,使用修补准备就绪中断指示 PD 控制器已准备就绪。CMD1 完成中断用于提醒 EC:PBMs 和 PBMc 命令已完成。此示例中仍包含对 MODE 寄存器 0x03 的轮询,以应对补丁已加载但 PD 控制器尚未切换至应用模式:APP 的情况。

  2. 模式 == PTCH:

    PD 控制器 TRM 中介绍了 PTCHAPP 模式。PD 控制器 EVM 上的 EEPROM 被禁用(SDA 断开),因此 PD 控制器切换至 PTCH 模式并保持该模式。在流程开始时不是必须检查 PTCH 模式,但为了完整起见,仍包含了这一步。下面给出了命令示例,逻辑分析仪捕获结果如读取 PTCH 模式所示。

    [0x21] + ACK(唯一地址/WR/A)

    0x03 + ACK(寄存器编号/A)

    [0x21] + ACK(唯一地址/R/A)

    0x04(字节计数)

    0x50 0x54 0x43 0x48(以 4 个 ASCII 字符表示的 PTCH

     读取 PTCH 模式图 4-2 读取 PTCH 模式
  3. 配置 I2Ct_IRQ、CMD1 完成:

    CMD1 完成中断用于提醒 EC:PBMs 命令已完成。分别通过寄存器 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 数据:

    TRM 参考资料中定义了 PBMs 命令。对于本示例,表 4-1 中列出了 PBMs 的参数。

    表 4-1 PBMs 配置:DATA1 寄存器
    说明 注释
    捆绑包大小 0x00002C80 请参阅 节 5
    I2C 突发数据目标地址 0x30 0x30,参阅参考资料 1。
    Timeout 0x31 3.1 秒;参阅参考资料 1

    [0x21] + ACK(唯一地址/WR/A)

    0x09 + ACK(寄存器编号/A)

    0x06(字节计数)

    0x80 0x2C 0x00 0x00 0x30 0x32(捆绑包大小、I2C 目标地址、超时值)

     用于 PBMs 的 DATA1 寄存器 0x09图 4-5 用于 PBMs 的 DATA1 寄存器 0x09
  5. 数据正常:

    发送 PBMs 命令需要多次写入 DATA 寄存器。例如,在将 PBMs 命令写入寄存器 0x08 之前,确认 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 所示。

    [0x20] + ACK(唯一地址/WR/A)

    0x08 + ACK(寄存器编号/A)

    0x04(字节计数)

    0x50 0x42 0x4D 0x73(以 4 个 ASCII 字符表示的 PBMs

     将 PBMs 写入 CMD1 寄存器 0x08图 4-6 将 PBMs 写入 CMD1 寄存器 0x08
  7. I2Ct_IRQ == 低电平

    IRQ 信号表示 CMD1 完成事件何时发生,并可读取 CMD1 和 DATA 寄存器以确认 PBMs 命令的结果。预期结果如第 8 和 9 步所示。

  8. CMD1 清除 (PBMs)

    命令寄存器 0x08 表示在清除寄存器内容时命令已成功完成。为简单起见,示例仅检查第一位以确认内容不是“!CMD”,这表明 PBMs 命令已损坏或 DATA 寄存器加载了非法值(1)

    [0x21] + ACK(唯一地址/WR/A)

    0x08 + ACK(寄存器编号/A)

    [0x21] + ACK(唯一地址/R/A)

    0x04(字节计数)

    0x00 0x00 0x00 0x00

  9. DATA1 清除 (PBMs)

    当第一个字节 PatchStartStatus 被清除时,数据寄存器 0x09 指示修补成功。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 突发数据目标地址,见参考表。突发格式受 MCU 架构影响。在本例中,突发大小限制为 4KB,因此会向 PD 发送三个连续突发数据(4,095 字节、4,095 字节和 3,202 字节),每次突发之间延迟 500us。末次突发结束后额外延迟 500μs 再发送 PBMc 命令。

    [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 完成中断用于提醒 EC:PBMc 命令已完成。分别通过寄存器 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(以 4 个 ASCII 字符表示的 PBMc)

     清除中断并将 PBMc 写入 CMD1 寄存器图 4-7 清除中断并将 PBMc 写入 CMD1 寄存器
  13. I2Ct_IRQ == 低电平

    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. 模式 == APP

    最后一步是验证 PD 是否已切换为 APP 模式。进入 APP 模式后,PD 控制器现在可以在应用的自定义配置下运行。

    [0x21] + ACK(唯一地址/WR/A)

    0x03 + ACK(寄存器编号/A)

    [0x21] + ACK(唯一地址/R/A)

    0x04(字节计数)

    0x41 0x50 0x50 0x20(以 4 个 ASCII 字符表示的‘APP’)

     APP 模式图 4-11 APP 模式
如果未为 CMD1 完成使用 IRQ,可以轮询 CMD1 寄存器,直到内容从 [0x50, 0x42, 0x4D, 0x73] 切换为 [0x00, 0x00, 0x00, 0x00] 或 [0x21, 0x43, 0x4D, 0x44]。CMD1[0]=0x21 指示命令未成功完成,CMD1[0]=0x00 指示成功完成。
20ms 延迟可替换为“补丁已加载”中断。使用该中断代替延迟未能实现时间缩短。因此,本文档中保留了器件 TRM 中描述的 20ms 延迟。请参阅 12