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.

[参考译文] BQ76907-Q1:在 BQ76907 被唤醒后、它无法断开 MOSFET 来为电容器充电

Guru**** 2813875 points

Other Parts Discussed in Thread: BQ76907

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1607261/bq76907-q1-after-bq76907-is-woken-up-it-cannot-open-the-mosfet-to-charge-the-capacitor

器件型号: BQ76907-Q1
主题: BQ76907 中讨论的其他器件

嗨、团队、客户在将 MCU 置于睡眠模式之前、将 76907 设置为深度睡眠模式。 唤醒后、调用`BQ76907_MOSFET ();退出 Exit_Deepsleep 模式`导致 MOSFET 未打开、从而阻止电容器充电。 请帮助解决此问题。 谢谢你。

1.在不执行睡眠操作的情况下,可以打开 MOSFET 进行充电。 执行睡眠操作并被唤醒后、MOSFET 再次导通然后关断、睡眠时间约为 60ms。
d9d45a6b0bcfa78c4b04410b8d9f6e4d.jpg

 

2. 操作代码流  

1. CommandSubcommands(BQ76907_EXIT_DEEPSLEEP);

2. CommandSubcommands(BQ76907_RESET);

3. DirectCommands(BQ76907_ALARM_STATUS, 0xffff, WRITE);

4. DirectCommands(BQ76907_FET_CONTROL, 0x0c, WRITE);

5. CommandSubcommands(BQ76907_SET_CFGUPDATE);

6. CommandSubcommands(BQ76907_SLEEP_DISABLE);

7. DirectCommands(BQ76907_DSG_FET, 0xf701, WRITE);

8. DirectCommands(BQ76907_GHC_FET, 0xf701, WRITE);

9. Threshold Initialization

10. DirectCommands(BQ76907_FET_CONTROL, 0x03, WRITE);
11. DirectCommands(BQ76907_REGOUT_CONTROL, 0x07, WRITE);
12. CommandSubcommands(BQ76907_FET_ENABLE);
13. CommandSubcommands(BQ76907_EXIT_CFGUPDATE);

3)。 工程

BQ76907_Exit_Deepsleep();
    DelayMs(1);

    BQ76907_Reset();
    DelayMs(1);

    // Clear 76907 fault bits
    BQ76907_Clear_Alerts();
    DelayMs(1);

    // Shutdown CHG DSG
    BQ76907_FETControl_Autonomous_FET_OFF();
    DelayMs(1);

    // Configuration mode entry
    BQ76907_SetConfigUpdate();
    DelayMs(1);

    // Wait for the 0x12 Battery Status()[CFGUPDATE] flag to set.
    while(retry < 10)
    {
    	flag = BQ76907_Battery_Status();
    	if( flag & (1 << 5) )
    	{
        	retry = 10;
    	}
        retry++;
    }

    // Disable sleep mode
    BQ76907_Sleep_Disable();
    DelayMs(1);

    // Enable PWM control
    BQ76907_DSG_FET_PWM();
    DelayMs(1);

    BQ76907_GHC_FET_PWM();
    DelayMs(1);

    Subcommands_InitBQ76907(OvercurrentinChargeProtectionThreshold, 0x3e, WRITE);
    DelayMs(1);

	Subcommands_InitBQ76907(OvercurrentinChargeProtectionDelay, 0xff, WRITE);
	DelayMs(1);

    Subcommands_InitBQ76907(OvercurrentinDischarge1ProtectionThreshold, 0x64, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvercurrentinDischarge1ProtectionDelay, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvercurrentinDischarge2ProtectionThreshold, 0x64, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvercurrentinDischarge2ProtectionDelay, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(ShortCircuitinDischargeProtectionThreshold, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(ShortCircuitinDischargeProtectionDelay, 0x0a, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(RecoveryTime, 0x01, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvertemperatureinChargeProtectionThreshold, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvertemperatureinChargeProtectionDelay, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvertemperatureinChargeProtectionRecovery, 0x00, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(UndertemperatureinChargeProtectionThreshold, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(UndertemperatureinChargeProtectionDelay, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(UndertemperatureinChargeProtectionRecovery, 0x00, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvertemperatureinDischargeProtectionThreshold, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvertemperatureinDischargeProtectionDelay, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(OvertemperatureinDischargeProtectionRecovery, 0x00, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(UndertemperatureinDischargeProtectionThreshold, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(UndertemperatureinDischargeProtectionDelay, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(UndertemperatureinDischargeProtectionRecovery, 0x00, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(MinTempThreshold, 0x00, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(MaxTempThreshold, 0xff, WRITE);
    DelayMs(1);

    Subcommands_InitBQ76907(DAConfig, 0x3f, WRITE);
    DelayMs(1);

/*    DelayMs(1);
    BQ76907_Disable_Protections_A();
    DelayMs(1);

    BQ76907_Disable_Protections_B();
    DelayMs(1);

    BQ76907_Disable_DSG_Protections();
    DelayMs(1);

    BQ76907_Disable_CHG_Protections();
    DelayMs(1);

    BQ76907_Disable_BothFET_Protections();
    DelayMs(1);

    BQ76907_Read_Protections_A();
    DelayMs(1);*/

    // Calibration
    BQ76907_Cell1Gain();
    DelayMs(1);

    BQ76907_StackGain();
    DelayMs(1);

    BQ76907_Cell2GainDelta();
    DelayMs(1);

    BQ76907_CurrGain();
    DelayMs(1);

    BQ76907_CC1Gain();
    DelayMs(1);

    // Set the number of cells
    //BQ76907_VCell_Mode();
    //DelayMs(1);

    // MOS forced on, allows host control of individual FET drivers.
    BQ76907_FETControl_Autonomous_FET_ON();
    DelayMs(1);

    // LDO open
    BQ76907_REGout_Control();
    DelayMs(1);

    // Toggle [FET_EN] bit
    BQ76907_FET_Enable();
    DelayMs(1);

    // Exit configuration mode
    BQ76907_ExitConfigUpdate();