对三要不起 发表于 2020-6-5 09:54:44

QCC3005充电问题

3005充电冲到4V左右 LED灯就显示满电状态是什么原因?求大神指教!!!!!!(已开启外部充电)

对三要不起 发表于 2020-6-9 15:16:51

顶一下

对三要不起 发表于 2020-6-9 15:17:15

求大佬赐教!!!!!!!!!!!!!

对三要不起 发表于 2020-6-9 16:45:38

附上外部充电代码
/*
Copyright (c) 2017 Qualcomm Technologies International, Ltd.
*/

/*!
@file
@ingroup sink_app
@brief
    Module responsible for interfacing with SMB1352 battery charger
************************************************************************/

#ifndef SINK_EXT_CHARGER_H
#define SINK_EXT_CHARGER_H

#define EXT_CHG_NUM_REGS (21)
#define EXT_CHG_REG_STS_FLOAT_VOLTAGE (0x38)
#define EXT_CHG_MASK_STS_FLOAT_VOLTAGE (0x3F)

#define EXT_CHG_FLOAT_BASE_MILLIVOLTS (3500)
#define EXT_CHG_FLOAT_STEP_MILLIVOLTS (20)

#ifdef ENABLE_EXT_CHARGER

void sinkExtChargerInit(void);
uint16 sinkExtChargerReadFloatVoltage(void);

#else /* not def ENABLE_EXT_CHARGER */

#define sinkExtChargerInit() ((void) 0)
#define sinkExtChargerReadFloatVoltage() ((uint16) 0)

#endif /* def ENABLE_EXT_CHARGER */
#endif /* def SINK_EXT_CHARGER_H */




/*
Copyright (c) 2017 Qualcomm Technologies International, Ltd.
*/

/*!
@file
@ingroup sink_app
@brief
    Module responsible for interfacing with SMB1352 battery charger
************************************************************************/

#include <i2c.h>
#include "sink_configmanager.h"
#include "sink_debug.h"

#ifdef ENABLE_EXT_CHARGER

#include "sink_ext_charger.h"
#include "sink_ext_charger_config_def.h"

#ifdef DEBUG_EXT_CHG
#define EXT_CHG_DEBUG(x) DEBUG(x)
#else
#define EXT_CHG_DEBUG(x)
#endif

#define EXT_CHG_REG_CMD_I2C (0x30)
#define EXT_CHG_CMD_ENABLE_VOLATILE_WRITES (0x40)

static uint8 ext_chg_i2c_address;

/****************************************************************************
NAME
    reg_read

DESCRIPTION
    Read from a register on the external charger

RETURNS
    TRUE iff the read was successful
*/
static bool reg_read(uint8 reg, uint8 *data)
{
    uint16 ack = I2cTransfer(ext_chg_i2c_address, ®, 1, data, 1);
   
    /* Expect addr + reg + addr + data (4 bytes) acknowledged */
    if (ack == 4)
    {
      return TRUE;
    }
   
    EXT_CHG_DEBUG(("ext_chg: reg read failed; addr=0x%02X len=%u\n", ext_chg_i2c_address, ack));
    return FALSE;   
}


/****************************************************************************
NAME
    reg_write

DESCRIPTION
    Write to a register on the external charger

RETURNS
    TRUE iff the write was successful
*/
static bool reg_write(uint8 reg, uint8 data)
{
    uint8 packet;
    uint16 ack;
   
    packet = reg;
    packet = data;
    ack = I2cTransfer(ext_chg_i2c_address, packet, 2, NULL, 0);
   
    /*Expect addr + reg + data (3 bytes) acknowledged */
    if (ack == 3)
    {
      return TRUE;
    }
   
    EXT_CHG_DEBUG(("ext_chg: reg write failed; addr=0x%02X len=%u\n", ext_chg_i2c_address, ack));
    return FALSE;   
}


/****************************************************************************
NAME
    reg_write_enable

DESCRIPTION
    Enable / disable writes to the external charger configuration registers,
    panic on failure

RETURNS
    void
*/
static void reg_write_enable(bool enable)
{
    PanicFalse(reg_write(EXT_CHG_REG_CMD_I2C, enable ? EXT_CHG_CMD_ENABLE_VOLATILE_WRITES : 0));
}


/****************************************************************************
NAME
    sinkExtChargerInit

DESCRIPTION
    Initialise the external charger by writing the stored configuration,
    panic on failure

RETURNS
    void
*/
void sinkExtChargerInit(void)
{
    ext_charger_config_def_t *config;
    uint16 size;
   
    size = configManagerGetReadOnlyConfig(EXT_CHARGER_CONFIG_BLK_ID, (const void **) &config);
    EXT_CHG_DEBUG(("ext_chg: size=%u\n", size));
    if (size)
    {
      uint16 reg;
      
      ext_chg_i2c_address = config->ext_charger_i2c;
      
      reg_write_enable(TRUE);
      for (reg = 0; reg < EXT_CHG_NUM_REGS; ++reg)
      {
            PanicFalse(reg_write(reg, config->ext_charger_data));
      }
    }
   
    configManagerReleaseConfig(EXT_CHARGER_CONFIG_BLK_ID);
    reg_write_enable(FALSE);
   
    EXT_CHG_DEBUG(("float %u mV\n", sinkExtChargerReadFloatVoltage()));
}


/****************************************************************************
NAME
    sinkExtChargerReadFloatVoltage

DESCRIPTION
    Read the float voltage from the external charger

RETURNS
    Float voltage in millivolts
*/
uint16 sinkExtChargerReadFloatVoltage(void)
{
    uint8 data;
   
    PanicFalse(reg_read(EXT_CHG_REG_STS_FLOAT_VOLTAGE, &data));

    return EXT_CHG_FLOAT_BASE_MILLIVOLTS + EXT_CHG_FLOAT_STEP_MILLIVOLTS * (data & EXT_CHG_MASK_STS_FLOAT_VOLTAGE);
}

#endif /* def ENABLE_EXT_CHARGER */

一起学高通芯片 发表于 2020-12-22 15:04:59

楼主,可以交流一下充电问题吗

对三要不起 发表于 2020-12-30 11:13:11

一起学高通芯片 发表于 2020-12-22 15:04
楼主,可以交流一下充电问题吗

我也是新手
页: [1]
查看完整版本: QCC3005充电问题