主题中讨论的其他器件:TPS25751-01、USB-PD-CHG-EVM
工具与软件:
尊敬的所有人:
我在使用定制充电器板时遇到了一个问题、在该板中、器件未切换到"app"模式。
下面是原理图以及处理该器件的代码片段。 下面的软件片段适用于 USB-PD-CHG-EVM 01 (当然具有不同的从器件地址)。
软件:
[...]
#define I2C_SLAVE_ADDR 0x44 #define I2C_SLAVE_ADDR_PATCH 0x46
static void tps_StartPatching(void)
{
uint8_t data_frame[6];
char cmd_frame[5];
data_frame[0] = (uint8_t)gSizeFullFlashArray;
data_frame[1] = (uint8_t)(gSizeFullFlashArray >> 8);
data_frame[2] = (uint8_t)(gSizeFullFlashArray >> 16);
data_frame[3] = (uint8_t)(gSizeFullFlashArray >> 24);
data_frame[4] = I2C_SLAVE_ADDR_PATCH;
data_frame[5] = 0x32;
cmd_frame[0] = 4;
cmd_frame[1] = 'P';
cmd_frame[2] = 'B';
cmd_frame[3] = 'M';
cmd_frame[4] = 's';
if (tps_WriteCommand(&cmd_frame[0], &data_frame[0], sizeof(data_frame))) {
HAL_Delay(10); // Allow TPS to process the task command
uint8_t *patch = (uint8_t *)(uint32_t)&tps25750x_fullFlash_i2c_array[0];
uint32_t chunks = (uint32_t)(gSizeFullFlashArray / PATCH_CHUNK_SIZE);
HAL_StatusTypeDef result = HAL_ERROR;
for (int i = 0; i < chunks; i++) {
result = HAL_I2C_Mem_Write(g_PowerM.i2c, I2C_SLAVE_ADDR_PATCH, TPS_DATA_REG, sizeof(uint8_t),
&patch[i * PATCH_CHUNK_SIZE], PATCH_CHUNK_SIZE, 30000);
if (result != HAL_OK) {
return;
}
}
if (result == HAL_OK) {
g_PowerM.i2c_address = I2C_SLAVE_ADDR_PATCH;
HAL_Delay(10);
tps_ResetDataPointer();
g_PowerM.patched = true;
g_PowerM.offset = 0;
}
}
}
[...]
器件接受"TPS_WriteCommand"、但当发送实际补丁时、先前在"PBMs"中设置的从器件地址为裸地址。
HW:该电路板仅在灌入模式下使用。

期待收到您的消息。
此致
Cosmin、
