| 连续签到天数:1天 |  | 签到总天数:154天 |  | 签到总奖励:1539金币 |  
  
 | 
 
 楼主 |
发表于 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[2];
 
 -     uint16 ack;
 
 -     
 
 -     packet[0] = reg;
 
 -     packet[1] = 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[reg]));
 
 -         }
 
 -     }
 
 -     
 
 -     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 */
 
  复制代码 
 |   
 
 
 
 |