ZHCAE88 July 2024 TPS25751
第 1 步:对 TPS25751 施加 VIN_3V3 后,主机可以读取 I2C1 寄存器位 [81](偏移 = 14h)的中断事件,以确定器件是否已准备好接收主机的补丁捆绑包。以下是该命令及预期结果的示例。
[0x20] + ACK(唯一地址/WR/A)
0x14 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x0B(字节计数)
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x02 (MSB)
第 2 步:读取模式(偏移 = 3h),确保 TPS25751在 PTCH 模式下运行。以下是该命令及预期结果的示例。
[0x20] + ACK(唯一地址/WR/A)
0x03 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x50 0x54 0x43 0x48(以 4 个 ASCII 字符表示的 PTCH)
第 3 步:然后,通过针对 I2Ct 总线上的每个 PD 控制器写入 DATA1(9h) 来准备写入 PBM。所有 PD 控制器的 DATA1.TargetAddress 需要相同。对于 4CC 命令,检查 DATA1 是需要写入相应值,还是仅写入 CMD1(8h) 以执行 4CC 命令。对于 PBMs 4CC 命令,需要首先写入 DATA1(9h) 并在 CMD1 中写入 PBMs 4CC 命令。
[0x20] + ACK(唯一地址/WR/A)
0x09 + ACK(寄存器编号/A)
0x06(字节计数)
0x80 0x2C 0x00 0x00 0x30 0x32(捆绑包大小的字节 1/2/3/4,I2C 目标地址,超时值)
捆绑包大小可以参见下一节。
说明 | PBMs 任务启动补丁加载序列。此任务初始化固件以准备补丁捆绑包加载序列并指示补丁捆绑包中包含的内容 | |||
---|---|---|---|---|
INPUT DATAX | 位 |
名称 |
说明 |
|
字节 6:突发模式超时 | ||||
7:6 | 保留 | |||
5:0 | 超时值 | 此任务的超时值。必须使用非零值,此字段中始终使用 0x32(5 秒)(LSB 为 100ms)。 | ||
字节 5:用于下载补丁的 I2C 目标器件。 | ||||
7 | 保留 | |||
6:0 | I2C 目标地址 | 以下目标地址无效:
|
||
字节 0-3:低区二进制捆绑包大小(以字节为单位):[字节 4, 字节 3, 字节 2, 字节 1] | ||||
39:32 | 捆绑包大小的字节 4 | |||
31:24 | 捆绑包大小的字节 3 | |||
23:16 | 捆绑包大小的字节 2 | |||
15:8 | 捆绑包大小的字节 1 | |||
OUTPUT DATAX | 位 | 名称 | 说明 | |
7:0 | PatchStartStatus | 补丁启动状态。 | ||
0x00 | 补丁启动成功 | |||
0x04 | 捆绑包大小无效 | |||
0x05 | 目标地址无效 | |||
0x06 | 超时值无效 | |||
任务完成 | 当输出具有有效的 PatchStartStatus 后,PBMs 任务完成。如果 MODE 寄存器 (0x03) 等于 APP,则可以拒绝此任务。 | |||
副作用 | 当 'PBMs' 成功时,第二个目标地址可以设置为输入值。 | |||
其他信息 | 主机只能向 PD 控制器的 I2Ct 端口发出一个 PBMs 任务。如果主机第二次发出 PMBs,则 PD 控制器会忽略 DATAX 输入,重新启动突发模式计时器,并将指针重置为 RAM 中补丁空间的开头。如果 MODE 寄存器为 APP(表明 PD 控制器处于 APP 模式),则主机可以拒绝 PBMs 任务。 |
第 4 步:发出 'PBMs' DATA1 后,在 I2Ct 总线上的每个 PD 控制器上写入 CMD1 = 'PBMs'。
[0x20] + ACK(唯一地址/WR/A)
0x08 + ACK(寄存器编号/A)
0x04(字节计数)
0x50 0x42 0x4D 0x73(以 4 个 ASCII 字符表示的 PBMs)
第 5 步:然后读取 CMD1 寄存器,预期结果如下所示。
[0x20] + ACK(唯一地址/WR/A)
0x08 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x00 0x00 0x00 0x00(可以全为“0x00”。)
第 6 步:然后在每个 PD 控制器上读取 DATA1 = 0(成功完成)。
[0x20] + ACK(唯一地址/WR/A)
0x09 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x00 0x00 0x00 0x00(可以全为“0x00”。)
第 7 步:使用 DATA1.TargetAddress 中指定的目标地址在 I2Ct 总线上写入补丁捆绑包突发数据。使用停止位终止突发数据。
[0x30] + ACK(唯一地址/WR/A)
0x01 + ACK(寄存器编号/A)
写入补丁捆绑包突发数据。下一节展示了如何使用 GUI 来生成该数据。
第 8 步:延迟至少 500us 并在 I2Ct 总线上写入 CMD1 = 'PBMc'
[0x20] + ACK(唯一地址/WR/A)
0x08 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x50 0x42 0x4D 0x63(以 4 个 ASCII 字符表示的 PBMc)
第 9 步:读取 CMD1 寄存器
[0x20] + ACK(唯一地址/WR/A)
0x08 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x00 0x00 0x00 0x00(可以全为“0x00”。)
第 10 步:然后在每个 PD 控制器上读取 DATA1 = 0(成功完成)。
[0x20] + ACK(唯一地址/WR/A)
0x09 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x00 0x00 0x00 0x00(可以全为“0x00”。)
第 11 步:主机可以读取 I2C1 寄存器位 [80](偏移 = 14h)的中断事件,以确定补丁是否已加载到器件中。
第 12 步:确认所有 PD 控制器上的 MODE = 'APP'
[0x20] + ACK(唯一地址/WR/A)
0x03 + ACK(寄存器编号/A)
[0x20] + ACK(唯一地址/R/A)
0x04(字节计数)
0x41 0x50 0x50 0x20(以 4 个 ASCII 字符表示的 APP)