在 BQ25798中、我们使用备份模式。 负载连接在 PMID 上。 负载电压为5.1V 和1A。 从正常模式切换到备份模式时、重新启动加载。
我们使用的是开关频率为1.5MHz 的1S 电池。
我们使用的是单输入源、备用模式和无运输 FET。
如何解决此重启问题?
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.
您好 Jeff、
感谢您的回答。
以下是 V (PMID)、V (BAT)、V (VBUS)在备份模式下触发的示波器图。
映像1:. Channel1-VBUS 和 Channel2-PMID (在进入备份模式时)(主器件变为零)
图像2:。 Channel1-VBUS 和 Channel2-PMID (在进入备份模式时)(主模式变为零) 放大图像1
图像3:Channel1-BAT 和 Channel2-PMID (带电源)(在正常模式下)
图像4:Channel1-BAT 和 Channel2-PMID (无电源)(在备用模式下)
此外、为了供您参考、我们在此分享了我们的原理图。
Urvi、
所附为两个示波器图。 一个显示充电器进入备份模式( 禁用看门狗计时器且 EN_BACKUP=1)的某种放大版本 、另一个显示充电器通过 SDA 线进入和退出备份模式。 PMID 为浅蓝色。
测试设置如下:
VBUS=5V、VOTG=5V、VBAT=7.6V、ICHARGE = 1A、IINDPM = 3A、 VINDPM=4.7V、BackupModeTrigger=100%、IPMIDload=1A 恒定电流。
步骤如下:
I2C 写入以禁用 WD 计时器或 定期写入 WD 位
I2C 写入 EN_BACKUP_MODE=1
从 VAC1移除输入电源
OTG 自动启动、ACDRV1变为低电平
已重新连接输入电源
I2C 写入 力_ACFET1_ON=1
I2C 写入 EN_OTG=0
延迟一段时间后、充电自动重新启动、EN_BACKUP 自动复位= 1
这比器件的第一个修订版更简单、因为该修订版需要更多的 I2C 写入以使 EN_BACKUP 自动复位。


此致、
Jeff
您好 Jeff、
感谢您的分享。
进行设置。
VINDPM=4.7V、BackupModeTrigger=100%
复位问题已经解决、但经过一段时间(10-15秒内)、负载显示低压 LED 指示。
与此同时、PMID 电压为恒定 的5V、负载仍进入关断模式。
我们使用了 Khadas VIM3作为负载。 在一段时间后、在备份模式下、只有红色 LED 亮起。
根据我们的看法、红色 LED 指示低功耗。
在此、我共享 了电池备份代码供您参考。
/******** Battery Backup*******/
Bat_WriteSingleRegister(0x2E, bat_register.REG2E_ADC_Control | 0x80); //ADC enable bit:7
Bat_WriteSingleRegister(0x18, bat_register.REG18_NTC_Control_1 | 0x01); //TS ignore
Bat_WriteSingleRegister(0x0F, bat_register.REG0F_Charger_Control_0 | 0x01); //EN_BACKUP
Bat_WriteSingleRegister(0x14, 0x27); //DISCHATGE CURRENT CONFIG (3A)
Bat_WriteSingleRegister(0x05, 0x2F); //VINDPM=4.7V
Bat_WriteRegister(0x06, 0x012C); //IINDPM = 3A
Bat_WriteSingleRegister(0x10, 0xC0); //VBUS BACKUP 100% VINDPM
/******** re arm back up code added*******/
Bat_ReadSingleRegister(0x1B,&AC1_PR);
AC1_PR1 = AC1_PR & 0x02;
if(AC1_PR1 == 0x02)
{
Bat_ReadSingleRegister(0x12,&OTG_1);
OTG_2 = OTG_1 & 0x40;
if(OTG_2 == 0x40) //Check DIS_ACDRV=1
{
Bat_WriteSingleRegister(0x16, bat_register.REG16_Temperature_Control | 0x01 ); //BKUP_ACFET1_ON =1
Bat_WriteSingleRegister(0x12, bat_register.REG12_Charger_Control_3 & 0x7F ); //DIS_ACDRV=0
Bat_WriteSingleRegister(0x13, bat_register.REG13_Charger_Control_4 | 0x40 ); //EN_ACDRV1=1
Bat_ReadSingleRegister(0x13,&ACDRV1_1);
ACDRV1_2 = ACDRV1_1 & 0x40;
if (ACDRV1_2 == 0x40) //EN_ACDRV1
{
Bat_WriteSingleRegister(0x12,bat_register.REG12_Charger_Control_3 & 0xBF ); //EN_OTG=0
HAL_Delay(5000);
Bat_WriteSingleRegister(0x16, bat_register.REG16_Temperature_Control | 0x01 ); //BKUP_ACFET1_ON =1
Bat_WriteSingleRegister(0x16, bat_register.REG16_Temperature_Control & 0xFE ); // BKUP_ACFET1_ON=0
Bat_WriteSingleRegister(0x0F, bat_register.REG0F_Charger_Control_0 | 0x01); //EN_BACKUP
}
}
}
/******** re arm back up code end*******/