工具与软件:
请查看 BQ25798的原理图
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.
工具与软件:
请查看 BQ25798的原理图
尊敬的 Parekh:
那么您有2个选择:
1.如果在移除 VBUS 后安装了多路复用器 FET、则使用主机写入 EN_OTG=1、然后写入 EN_ACDRVx=1
2.使用主机设置 EN_BACKUP=1以启用备份模式。 备用模式快速、在 IC 检测到 VBUS 降至 VINDPM 阈值以下后、自动开启 OTG/反向模式。 在备份模式开启后、EN_BACKUP 位复位为零、除非主机也设置它需要使用 ACDRV1多路复用器 FET。
如果在充电器处于备用模式时重新连接了适配器、用户可以将为 PMID 负载供电的电源从电池转换回适配器。 以下序列用于从电池电源切换回 ACIN1、同时重新布防备份模式:1. 将 BKUP_ACFET1_ON (REG0x16[0])寄存器位写入1。 设置 BKUP_ACFET1 _ON = 1会使器件设置 DIS_ACDRV = 0且 EN_ACDRV1 = 1。 之后、备用模式被禁用、但充电器保持正常 OTG 模式。 ACFET1-RBFET1被打开以将适配器连接到 VBUS。 用户必须确保适配器电压等于或高于充电器 VOTG 电压设置、否则充电器 OTG 输出可能反向驱动连接到 VBUS 的适配器。 2.通过将 EN_ACDRV1读回为1来确定 ACIN1上的源有效(未处于过压状态并且未失败不良源检测)。 3.设置 EN_OTG = 0、以退出 OTG 模式并进入正向充电模式而不会发生 PMID 电压崩溃。 设置 BKUP_ACFET1_ON = 1时、也会将 BKUP_ACFET1_ON 清除为0、并将 EN_BACKUP 设置为1
请注意、如果看门狗计时器到期或 VBUS 和 VBAT 都降至各自的 UVLO 值以下、则这两个复位默认值(OTG 和备用模式位= 0且 EN_CHARGE=1)都将失效。
此致、
Jeff
尊敬的 Jeff:
我实施了以下代码来配置 BQ25798、以便在 PMID 引脚上生成5V 输出、并监控 ADC 值。
在正常运行情况下、代码在 PMID 引脚上成功生成5V:
HAL_StatusTypeDef BQ25798_Init (void)
{
uint8_t pData[2];
HAL_StatusTypeDef retval = HAL_OK;
//设置最小系统电压
BQ25798_SET_VSYSMIN (04);// 3.5V
//设置充电器电压限制
BQ25798_SET_VREG (4200);// 4.2V
//设置充电电流限制
BQ25798_SET_ICHG (1000);// 1A
//设置输入电压
BQ25798_SET_VINDPM (5000);// 5V
//设置输入电流限制
BQ25798_SET_IINDPM (3000);// 3A
//设置 OTG 电压
BQ25798_SET_VOTG (5000);// 5V
//配置 VBUS 备份、VAC_OVP 并禁用看门狗
PData[0]= 0xB0;
RetVal = BQ25798_Write (BQ25798_CHARGER_CONTROL_1、pData、1);
如果(retval!= HAL_OK)返回 retval;
//启用充电器和备用模式
PData[0]= 0x21;
RetVal = BQ25798_Write (BQ25798_CHARGER_CONTROL_0、pData、1);
如果(retval!= HAL_OK)返回 retval;
//启用 OTG 模式
pData[0]= 0x40;
retVal = BQ25798_Write (BQ25798_CHARGER_CONTROL_3、pData、1);
如果(retval!= HAL_OK)返回 retval;
//在正向模式下启用 ACDRV 和 IBUS_OCP
pData[0]= BQ25798_CHARGER_CONTROL_4_EN_ACDRV2 | BQ25798_CHARGER_CONTROL_4_EN_ACDRV1 | BQ25798_CHARGER_CONTROL_4_EN_IBUS_OCP;
retVal = BQ25798_Write (BQ25798_CHARGER_CONTROL_4、pData、1);
如果(retval!= HAL_OK)返回 retval;
//重置充电器控制5寄存器
PData[0]= 0xB7;
retVal = BQ25798_Write (BQ25798_CHARGER_CONTROL_5、pData、1);
如果(retval!= HAL_OK)返回 retval;
//启用 ADC 控制
pData[0]= BQ25798_ADC_CONTROL_EN | BQ25798_ADC_CONTROL_RATE_CONTINUOUS| BQ25798_ADC_CONTROL_SAMPLE_15B;
retVal = BQ25798_Write (BQ25798_ADC_CONTROL、pData、1);
如果(retval!= HAL_OK)返回 retval;
返回值;
}
问题:我需要定期切换 PMID 引脚上的5V 输出以实现低功耗运行。 为此、请执行以下操作:
1.在进入低功耗模式之前、我向 Charger 控制3寄存器写入0x00以禁用 OTG 模式、成功关闭了 PMID 输出。
2.从低功耗模式唤醒后、我将0x40写入同一个寄存器以重新启用 OTG 模式。
但是、虽然寄存器写入成功、PMID 引脚不会再次生成5V 电压。
您能否建议一个解决方案或确保在从低功耗模式唤醒后在 PMID 引脚上恢复5V 输出所需的任何其他步骤?
提前感谢您的帮助!
此致、
Pratham。
您好、Pratham:
要确认、您需要:
VBUS=PMID=5V 为电池充电
移除 VBUS 上的5V 电源后、PMID 将保持为5V
如果是这样、您可以使用需要 ACDRV1 FET 的备份模式。 当 VBUS 降至备份模式阈值以下时、备用模式自动开启 OTG 模式。 如果主机禁用 OTG 模式或重新应用 VBUS、则主机必须写入充电器以重新启用备用模式:
以下序列用于从电池电源切换回 ACIN1、同时重新布防备份模式:1. 将 BKUP_ACFET1_ON (REG0x16[0])寄存器位写入
1.设置 BKUP_ACFET1 _ON = 1会使器件设置 DIS_ACDRV = 0和 EN_ACDRV1 = 1。 之后、备用模式被禁用、但充电器保持正常 OTG 模式。 ACFET1-RBFET1被打开以将适配器连接到 VBUS。 用户必须确保适配器电压等于或高于充电器 VOTG 电压设置、否则充电器 OTG 输出可能反向驱动连接到 VBUS 的适配器。
2.通过将 EN_ACDRV1读回为1来确定 ACIN1上的源有效(未处于过压状态并且未失败不良源检测)。
3.设置 EN_OTG = 0、以退出 OTG 模式并进入正向充电模式而不会发生 PMID 电压崩溃。 设置 BKUP_ACFET1_ON = 1时、也会将 BKUP_ACFET1_ON 清除为0、并将 EN_BACKUP 设置为1
此致、
Jeff
Jeff、您好!
如您所说、我们已完成上述操作、并且我们在 PMID 引脚上成功获得了5V 输出。
现在我们面临的问题是、
1.当我们从 VBUS 的 USB 5V 输入为我们的设备供电时,设备会持续复位,并且在没有电池的情况下不工作,一旦我们将电池插入系统,设备会返回正常工作模式。 我们还希望我们的器件能够在系统中没有电池时正常工作。
2.仅当 ACFET 关闭时、电池才会充电、而当 ACFET 开启时不会充电(5V 输出开启)。
您好、Pratham:
您的负载在哪里? 是在 PMID 还是 SYS 上? 传统(意味着不是 USB-C) 5V USB 电源只能提供0.5A-1.5A。 在充电器的 VBUS 引脚上施加输入电源时、VBUS 和 PMID 之间的 FET 仅导通、为 PMID 上的负载和在 SYS 上输出的转换器供电。 因此、当未连接电池时、5V*IINDPM > IPMID*5V+ISYS*MINSYS; 当连接电池时、5V*IINDPM > IPMID*5V+(ISYS+ICHG)*VBAT、以便电池充电。
根据您的测试、我认为 PMID 或 SYS 处的负载对于转换器的输入功率而言太高、因此电池是对 SYS 上的负载进行补充。 输入电流限制(IINDPM)= D+/D-协商值(USB SDP 为0.5A)和 ILIM_HIZ 设置(1.5A)中的较低者。 根据 IINDPM 检测向 PMID 计数的任何负载电流 VBUS 和 PMID 之间的 FET 用于测量转换器输入电流。 此外、VINDPM 阈值将为5V-0.7V = 4.3V。 因此、如果从 USB 端口到 VBUS 引脚的电缆具有高阻性、导致 VBUS 电压降至4.3V、则输入电流限制将被钳位、以防止进一步压降。
在这种情况下、状态和故障标志报告什么? 我怀疑是 IINDPM 或 VINDPM。 您可以将 IINDPM 设置为1.5A ILIM_HIZ 值(这可能会使 USB SDP 崩溃)、从而缩短 D+=D-或使 D+/D-悬空。 我还建议使用仪表或示波器测量 VBUS 引脚上的电压。
此致、
Jeff
尊敬的 Jeff:
为了定期切换 PMID 引脚上的5V 输出以进行低功耗运行、我将实施以下步骤:
1.禁用 OTG 模式:
在进入低功耗模式之前、我将0x00写入 Charger_Control_ 3寄存器(EN_OTG = 0)、并将0xC0写入 Temperature_Control 寄存器(BKP_ACFET_ON = 0)。
这成功地禁用了 OTG 模式并关闭了5V PMID 输出。
2.启用 Re 的 OTG 模式:
从低功耗模式唤醒后、我将0x40写入 Charger_Control_ 3寄存器(EN_OTG = 1)、并将0xC1写入 Temperature_Control 寄存器(BKP_ACFET_ON = 1)。
此操作将重新使能 OTG 模式并恢复5V PMID 输出。
我之所以切换 PMID 引脚、是因为连接到我的器件的传感器需要5V 电压才能工作、而在低功耗模式下将其关闭有助于节省能源。
遇到的问题:
1.当器件由电池供电(BKP_ACFET_ON = 1)时、连接适配器会导致器件复位、并且电池不会充电。
2.此外、设备在此状态下间歇性复位。
所需功能:
1.设备应使用电池和适配器电源无缝运行。
2.当设备使用电池运行并且连接了适配器时,电池应该充电,并且设备应该保持运行而不会重置。
3.如果未连接电池,设备应仅依靠适配器电源运行,而不会出现任何问题。
您能否就解决这些挑战并确保可靠运行的潜在解决方案或附加步骤提供建议?
感谢您的参与和支持!
此致、
Pratham
您好、Pratham:
第一、 始终保持 EN_CHG=1 . 此外、假设重新连接到 VBUS 的电源略微大于 VOTG。
那么、从数据表中可以看到:
为了在不使 VBUS~= PMID= VOTG 下降的情况下转换回适配器电源、但保持备份模式处于撤防状态、需采用以下序列:
1. 将 BKUP_ACFET1_ON (REG0x16[0])寄存器位写入1。 设置 BKUP_ACFET1 _ON = 1将使器件更改 EN_BACKUP = 0、DIS_ACDRV = 0和 EN_ACDRV1 = 1。 之后、备用模式被禁用、但充电器保持正常 OTG 模式。 ACFET1-RBFET1被打开以将适配器连接到 VBUS。 用户必须确保适配器电压等于或高于充电器 VOTG 电压设置、否则充电器 OTG 输出可能反向驱动连接到 VBUS 的适配器。
2.根据 r 确定 ACIN1上的源有效(未处于过压状态并且未失败不良源检测) 将 EN_ACDRV1读回1 . 是否确定所连接的适配器有效?
3.设置 Bkup_ACFET1_ON = 0
4. 设置 EN_OTG = 0 、以便退出 OTG 模式并进入正向充电模式(因为 EN_CHG=1)而不会导致 PMID 电压崩溃。 由于 BKUP_ACFET1_ON 为0、EN_Bckup 将保持为0。
随后、主机需要通过设置 EN_Bckup=1来重新启用备份模式。
此致、
Jeff
尊敬的 Jeff:
我正在使用电池连接的设备。 在器件的低功耗模式下工作时、我成功启用和禁用了5V PMID 输出。
但是、仍然功耗太高、当我检查电流时、我观察到该 IC 在我的器件处于低功耗模式时会消耗功率。
我有几个关于 BQ25798 IC 的低功耗模式的问题:
是否可以在器件处于低功耗模式时将 BQ25798 IC 置于低功耗模式? 如果可以、您能指导我如何实现这一点吗?
IC 如何从低功耗模式中唤醒? 是否有用于此目的的内置计时器或唤醒源?
非常感谢您为解决这些问题提供指导。
此致、
Pratham
尊敬的 Jeff:
如前所述、我正在寻求相关指南、以确保我的器件具有以下功能:
1.电池和适配器电源均可无缝运行。
2.当使用电池运行并且适配器已连接时,电池应该充电,设备应该保持运行状态而不会重置。
3、在没有电池的情况下,仅依靠适配器电源即可稳定运行。
当前观察:
1.设备在使用电池供电并连接适配器的情况下按预期运行。 电池充电正确、并且器件保持正常工作。
2.但是、在仅适配器模式下、设备会反复重置。 在此状态下连接电池后、器件将恢复正常工作。
中断处理代码:
以下是处理适配器连接中断的代码片段:
void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin)
{
static uint8_t last_charger_status0 = 0xFF;//跟踪上次已知的充电器状态
uint8_t charger_status0;
uint8_t pData[1];
HAL_StatusTypeDef retval;
如果(GPIO_Pin == BSP_PMIC_INT_PIN_Pin)
{
//步骤1:读取充电器状态寄存器
CHARGER_STATUS0 = BQ25798_BQ0 Get_Charger_Status ();
//步骤2:检查充电器状态是否实际更改
if (charger_status0!= last_charger_status0)
{
last_charger_status0 = charger_status0;//更新上次已知状态
//步骤3:检查适配器是否已连接
如果(CHARGER_STATUS0和 BQ25798_CHARGER_STATUS_0_AC2_PRESENT_STAT)
{
pData[0]= 0xC0;// BKP_ACFET_ON = 0
retVal = BQ25798_Write (BQ25798_TEMPERATURE_CONTROL、pData、1);
if (retval!= HAL_OK)
{
printf ("在 EXTI 中禁用 BKP_ACFET 失败。");
}
}
设计
{
printf ("中断被忽略:不是适配器连接。");
}
}
设计
{
printf ("充电器状态不变。 中断被忽略。");
}
}
}
在该函数中:
挑战:
问题:
1.如何在纯适配器模式和纯电池模式下都能稳定运行?
2.有效管理电源路径设置以实现无缝运行的推荐方法是什么?
3.如何防止或过滤 PMIC 寄存器访问引起的虚假中断?
非常感谢您对解决这些问题的见解和指导。 如果需要有关我的设置或观察结果的任何其他详细信息、请告诉我。
提前感谢您!
此致、
Pratham
您好、Pratham:
在仅适配器(无电池连接模式)和启用充电且仅在 BAT 上提供最小建议电容的情况下、BAT 和 SYS 电压会定期达到过压。 要防止这种情况、请执行以下操作之一:
1.在未连接电池时、通过/CE 引脚或 CE 位禁用充电
2.通过不在原理图中连接10k Ω 电阻器来强制出现 TS 故障
3.向 BAT 引脚添加200uF 电容。
此致、
Jeff
尊敬的 Jeff:
通过使用上述序列、蓄电池充电问题已得到解决。 现在、电池正在正常充电。
但是、我发现了一些问题。
1.当我只连接适配器时,我的设备会持续中断多次,当我连接电池时,设备会恢复正常运行。 为什么会出现此问题? 我已禁用(屏蔽)除该 VBAT_PRESENT_MASK 之外的所有中断。
2.我的设备没有正确的电源路径管理。 如果我将电池连接到设备、在连接到 USB 后才会启动。
所需帮助:
1.适配器连接的单个中断:
i.我如何确保在连接了适配器时只生成一个中断?
II。这对于可靠地处理由适配器连接触发的操作至关重要。
2.正确的电源路径管理:
i.能否指导我如何正确配置电源路径设置?
II。我希望该器件能够在电池和适配器电源上无缝运行、并在任一电源连接时独立启动。
非常感谢您为解决这些问题提供指导。
提前感谢您!
此致、
Pratham
关于2、当我们在 PCB 上安装 BATFET 并连接 SB10跳线时、在该配置中、当我们连接电池时、我们在 VSYS 电源轨上不会看到任何电压、并且系统将保持完全关闭状态、当我们仅在系统依靠电池唤醒后在 VBUS 上施加短时间电压时、才会看到系统。 当我们未安装 BATFET Q4并短接跳线 R20时、直接将电池连接到系统即可正常工作。
我们还需要一些 关于电源路径管理的建议、
1.我们为 VBUS_Detection 使用 INT、但当我们使用此 INT 时、它始终会在 连接 USB 时提供多个中断。 当 INT 开启时、要么代码被卡住、要么器件发生多个中断。 但是、如果我们通过注释回调函数来禁用 INT、那么该器件将在 USB 上工作。 此时、设备无法使用电池工作。
2.我们必须通过 INT 管理 ACFET、因为我们观察到当 ACFET 打开时、设备使用电池工作;当 ACFET 关闭时、设备使用 USB 工作。 因此、为了定期管理这些事务、我们必须定期写入 ACFET 值、为此、我们需要 INT。
请就上述问题提供解决方案。
此致、
Parth
尊敬的 PARTH:
关于1、您可以在启动时屏蔽所有其他 INT、包括 IINDPM、VINDPM、PoorSRC、CHG、BC1.2 DONE、 DPDP Done、CHG、然后选择 AC1、AC2、PG 或 VBUS、屏蔽其余部分。
关于2、很抱歉、我仍然不明白您要做什么。 主机软件是否尝试控制充电器何时进入 OTG? 例如、在输入电源被移除时由/INT 触发后、主机软件是否启用 OTG? 如果这样、我认为这样不可行、因为主机控制 OTG 模式的启动延迟在100ms 范围内、因此 PMID 负载可能会崩溃 PMID 电容器。 当备用模式自动检测到输入电源已移除时、可非常快速地启用 OTG。 如果 ACFET 开启且 EN_CHG=1但 EN_OTG=0、则充电器处于充电模式、为电池充电。 如果 ACFET 开启且 EN_CHG=1且 EN_OTG=1、则充电器处于 OTG 模式、除非输入电压大于 OTG 电压导致 OTG 过压故障。 如果输入电压<= OTG 电压、则充电器无法区分输入源和 OTG 电压。 如果 ACFET 关断、SYS 由电池供电、如果 EN_OTG=1 、PMID 将调节到 OTG 电压。
此致、
Jeff
尊敬的 Jeff:
请允许我解释一下我们要使用此器件实现的目标:
所采用的方式 低功耗模式 . 为此、我们定期切换 PMID 引脚:
i.在运行期间、通过 PMID 引脚提供5V 电压。
II。完成操作后、器件进入睡眠模式、PMID 引脚上的5V 关断。
为控制此行为、我们使用 ACFET 切换:
i.当仅使用电池供电时、器件按预期运行。
II。但是、连接 USB 后、器件开始持续复位。
III.我们观察到当 BACKUP_ACFET_ON = 1时会出现这个问题。
IV。如果我们禁用 ACFET (BACKUP_ACFET_ON = 0)、那么该器件可由 USB 电源供电、但如果仅由电池供电、那么它无法在 PMID 引脚上提供5V 电压。
主要问题:
1.电源路径切换:
i.该器件无法在电池与 USB 电源之间无缝切换、反之亦然。
2.仅 USB 操作:
i.如果仅由 USB 供电、器件会持续复位。
我们必须使用基于中断的方法:
i.当连接 USB 或电池后、器件应该会收到中断。 由此中断、我们可将器件从电池切换到 USB、反之亦然。
您能否就以下方面提供指导:
1.如何确保 USB 和电池之间的电源路径平稳切换?
2.如何在仅 USB 模式下实现稳定运行、同时在电池模式下保持 PMID 管脚上的5V 电压?
提前感谢您!
此致、
Pratham
您好、Pratham:
很抱歉耽误你的时间。 我必须跟踪一个工作中的798EVM 才能测试一些不同的场景。 如上所述、仅当使用备份模式并且备份模式 FORCE_ACFET1_ON 位 需要使用 ACFET1时、OTG 才会自动快速开启。 以上原理图显示了 VAC1上的太阳能。 我认为几乎不可能使太阳能输入在备用模式下工作、因为它的功率级别会发生变化。 我们从未对其进行过测试。
此外、 如果您要在 USB 端口上使用自动 USB BC1.2 DPDM 检测来设置充电器的输入电流限制(IINDPM)、则 USB 端口需要位于 VAC1而不是 VAC2上。 您不必执行此操作、并且可以使用 ILIM_HIZ 电阻器将 IINDPM 钳位在 USB BC1.2 SDP 端口不高于500mA 的水平。 您可以使用 REG0x11[7]在 VAC2上强制进行 DPDM 检测。 请注意、如果您使用 USB-C 端口、则充电器的 DPDM 算法无效。 您必须在 CC1/2线路上使用电阻器或 USB-C 通信 IC、以激活该端口的5V 输出并设置其输出电流能力。
假设您可以将充电器的输入电流限制设置为不高于输入源的输出电流能力、并设置 VINDPM 最小输入电压调节、以便不会损坏输入源。 此外、WD 计时器需要禁用或主机定期写入 WD 计时器位以防止在到期后 EN_OTG=0。 以下是备份模式按设计运行(即在备份模式下不禁用/重新启用)的步骤。
输入电源连接到 VAC1或2 (EN_CHARGE 默认开启且 EN_ACDRVx 自动检测设置为1)后、充电开始并且 PMID=VBUS。
I2C 写入备份模式触发阈值(REG0x10[7:6])。 默认为80%、但我建议使用100%的 VINDPM。
3. I2C 写入 EN_BACKUP_MODE=1 (如果 VBUS 具有有效电源且启用了充电模式、则只能写入1。)
4.移除输入电源、即 USB 电源、以使快速 OTG=5V=PMID 开启、并使 DIS_ACDRVx=1使 ACFETx 自动关闭
5.屏蔽除 AC1存在标志以外的所有中断、以便在重新连接 USB 时、中断指示主机:
a. 通过 I2C 写入来设置 FORCE_ACFET1_ON =1、这会 设置 DIS_ACDRVx=0并设置 ACFET1=1 -请注意、这会将 USB =5.XV 端口连接至 OTG 输出= 5.Yv。 如果5.Yv>5.XV 导致 OTG 输出强制电流进入 USB-C 端口、则不确定 USB-C 端口会做什么。 它可能会感应故障并关断。 USB BC1.2端口没有做到这一点。
b.进行 I2C 写入以设置 EN_OTG=0以恢复充电。 这会清除 FORCE_ACFET1_ON=0、然后通过设置 EN_BACKUP_MODE=1来重新布设备份模式。
只要 SYS 上 PMID +负载的负载低于充电模式下的5V *输入电流限制功率级别或 OTG 模式下的 V (BAT)* 6A 最大放电电流、就可以对我的设置进行此操作。
如果要禁用/启用 PMID 上的5V 电压、建议使用 EN_OTG 位。 然而、这将清除备份模式逻辑、并且主机必须手动写入所有步骤、因此在上面的步骤4之后、如果主机设置 EN_OTG =0、然后又设置回1、那么步骤5将变为:
5.屏蔽除 ACX 出现标志以外的所有中断、以便在重新连接 USB 时、中断指示主机:
a. I2C 写入以设置 DIS_ACDRVx=0、从而允许 ACDRVx 位开启 AC-RB FET
b.进行 I2C 写入以设置 EN_ACDRV1=1 (实际上、在这种情况下、由于无法使用 FORCE_ACFET1_ON 位、因此它可能为 EN_ACDRV2)
c.进行 I2C 写入以设置 EN_OTG=1以恢复充电
d. I2C 写入以设置 EN_BACKUP_MODE = 1、从而重新启用备份模式
希望这对您有所帮助。 由于很快就会使用 FORCE_ACFET1_ON 位、因此主机可通过 VAC1或 VAC2手动实现备份模式。
此致、
Jeff