This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
您好!
我目前正在为使用 Code Composer Studio 的具有 MSPM0L1305和 BQ76952的电池管理系统编写固件。
我目前正在实施 OTP 过程、能够成功完成以下文档中所述的第8步。 但是、当我向 AFE 发送 OTP_WR_CHECK ()(子命令0x00A0)时、从0x40到0x5F 的读数都是0xFF (即0xFF 的32个字节)。
但是,如果我将 OTP_WR_CHECK()子命令替换为某个随机的2字节数字(例如0x0000或0x1234 ),而这些数字未定义为命令,那么令人惊讶的是,从0x40读取的值是0x80,这会成功地将代码移至下一步(即上述文档中的步骤10)。
有人能对这种行为分享一些见解吗?
是否存在特定的情况、AFE 将值0xFF 填充到0x40至0x5F 的存储器中?
谢谢!
李京宰
您好 Thomas:
感谢您的答复。
在执行以下调用 OTP 步骤的函数期间、请找到逻辑分析仪数据(.Sal) attached.captured。
我们的电路板上有两个 BQ76952芯片、它们通过同一条 I2C 总线连接。 以下函数将其中一个置于 SHUTDOWN 模式、同时更改 I2C 地址并将其另一个置于 OPTION 模式:
void BQ769x2_SetI2CAddrOTP(const uint8_t i2cTarAddr)
{
uint16_t batteryStatus = 0;
if (I2C_TestTargetComm(i2cTarAddr) == OK)
{
// OTP has already been done, so return
return;
}
// OTP has not yet been done, so perform OTP
// Shutdown the redundant AFE
DL_GPIO_setPins(GPIO_AFES_PORT, GPIO_AFES_RST_SHUT_R_PIN);
TIMER_DelayMs(1500);
DL_GPIO_clearPins(GPIO_AFES_PORT, GPIO_AFES_RST_SHUT_R_PIN);
batteryStatus = BQ769x2_ReadBatteryStatus(AFE_DEFAULT_ADDR);
// Ensure that the device is in FULLACCESS mode
if (((batteryStatus >> BATTERY_STATUS_OFS_SEC0) & 0x03) == FULLACCESS)
{
// Enter CONFIG_UPDATE mode
// - It is required to be in CONFIG_UPDATE mode to program the device RAM
// settings. See TRM for full description of CONFIG_UPDATE mode.
CmdOnlySubcmd(AFE_DEFAULT_ADDR, SET_CFGUPDATE);
DelayUS(8000);
// Settings:Configuration:I2C Address
BQ769x2_SetReg(AFE_DEFAULT_ADDR, I2C_ADDRESS, VAL_I2C_ADDR_NEW, 1);
// Exit CONFIGUPDATE mode (Subcmd 0x0092)
CmdOnlySubcmd(AFE_DEFAULT_ADDR, EXIT_CFGUPDATE);
DelayUS(8000);
}
// I2C address change is applied on reset or when SWAP_COMM_MODE subcommand
// is received.
// NOTE: Due to the BMS 2.0 Rev1 hardware issue, reset couldn't be used.
// Consider changing this to resetting the AFE when the hardware
// issue gets resolved.
CmdOnlySubcmd(AFE_DEFAULT_ADDR, SWAP_COMM_MODE);
DelayUS(8000);
// Ensure that the I2C address change has been successful
ASSERT(I2C_TestTargetComm(i2cTarAddr) == OK);
// Enter CONFIG_UPDATE mode
// - It is required to be in CONFIG_UPDATE mode to program the device RAM
// settings. See TRM for full description of CONFIG_UPDATE mode.
CmdOnlySubcmd(i2cTarAddr, SET_CFGUPDATE);
DelayUS(8000);
batteryStatus = BQ769x2_ReadBatteryStatus(i2cTarAddr);
// Check if OTP conditions are met
if (((batteryStatus >> BATTERY_STATUS_OFS_OTPB) & 0x01) == 0)
{
if (BQ769x2_ReadOTPWriteCheck(i2cTarAddr) == OTP_WR_CHECK_OK)
{
// All OTP conditions are met
// Perform OTP and ensure that it has been successful
ASSERT(BQ769x2_ReadOTPWriteResult(i2cTarAddr) == OTP_WR_RESULT_OK);
}
}
// Exit CONFIGUPDATE mode (Subcmd 0x0092)
CmdOnlySubcmd(i2cTarAddr, EXIT_CFGUPDATE);
DelayUS(8000);
// Wake up redundant AFE from SHUTDOWN mode
DL_GPIO_setPins(GPIO_AFES_PORT, GPIO_AFES_WAKE_R_PIN);
TIMER_DelayMs(WAKE_TIME_MS);
DL_GPIO_clearPins(GPIO_AFES_PORT, GPIO_AFES_WAKE_R_PIN);
} /* End of BQ769x2_SetI2CAddrOTP */
如果您需要其他信息、请告诉我。
谢谢!
李京宰
您好 Kyungjae:
我没有看到逻辑分析仪捕获。 您是否可以重新连接每个步骤的逻辑分析仪捕捉?
此致、
Thomas Rainey
我努力想要控制住,可是实在做不到。 您能否看到您是否可以通过以下链接访问该文件?
https://drive.google.com/file/d/13FFQ8mRXJGjiGWLhzCe2AA55sWDM4Alv/view?usp=drive_link
谢谢!
李京宰
尊敬的 Kyungjae:
我给您发送了一条私人消息。
此致、
Thomas Rainey
尊敬的 Kyungjae:
查看逻辑分析仪捕获结果后、我想我发现了您的问题。
根据该部分、您至少触发了一个安全故障并阻止 OTP。
您能否读取所有 安全状态寄存器以了解触发了哪个故障?
此致、
Thomas Rainey
您好、Thomas:
我的 OTP 过程用于分离两个 AFE 的 I2C 地址、甚至是在 AFE 完全配置功能之前完成、因此我不确定在 OTP 时读取安全状态是否有意义。 我唯一确定的是、对 BAT 施加10-12V 电压、TS 引脚会读取室温。
是否建议先配置 AFE、然后执行 OTP 以确保在执行 OTP 时没有由 Safety Status A/B/C 表示的故障或故障?
除了上述文档之外、您能告诉我在哪里可以找到成功执行 OTP 所需满足的所有条件吗?
谢谢!
李京宰
尊敬的 Kyungjae:
下面是一个有用的信息 常见问题解答。 具体而言、在最后一部分、"我在系统中使用 SUV 永久失效以及保险丝。 在使用低10-12 V 电源对 OTP 进行编程后、如何防止保险丝熔断?' 应该有助于解决这个问题。
此致、
Thomas Rainey
您好、Thomas:
感谢您的澄清。 我在 TRM 中发现"Settings:Protection:Enabled Protections A"的默认设置为0x88、表示默认情况下启用 SCD 和 COV。
由于在 OTP 时、我的板未连接到电池仿真器、因此我假设电池电压读数随处可见、而 COV 却阻止了 OTP。
鉴于此、是否有适当的方法可以暂时绕过 COV 固件? 或者我是否需要确保此板连接到电池仿真器、电池仿真器可将提供的电压(12V)均匀分布到每个电池、以防止触发 COV?
谢谢!
李京宰
尊敬的 Kyungjae:
我建议阅读 该线程 它将提供有关该主题的有用信息。
此致、
Thomas Rainey
您好、Thomas:
我对迟交的答复表示歉意。 我想我有足够的信息可以继续前进。 我将在此处关闭该主题、如果我遇到其他问题、稍后我们会回复您。
谢谢!
李京宰