156 lines
4.5 KiB
C
156 lines
4.5 KiB
C
#ifndef __SW7203_H__
|
||
#define __SW7203_H__
|
||
|
||
#include "driver/i2c.h"
|
||
#include "esp_log.h"
|
||
|
||
typedef struct sw7203_i2c_config
|
||
{
|
||
i2c_port_t i2c_num;
|
||
uint8_t i2c_address;
|
||
};
|
||
|
||
union adc_config
|
||
{
|
||
uint8_t hex;
|
||
struct
|
||
{
|
||
uint8_t adc_filter_time : 2; // 0: 10mS 1:20mS 2:40mS 4: 80mS
|
||
uint8_t : 2;
|
||
uint8_t adc_data : 4; // 0: VBAT电压 1: VBUS电压 4: VBAT充电电流 5: VBUS 充电电流 6: VBAT 放电电流 7:VBUS 放电电流 8: 芯片温度 9: NTC电压 10: VSYS电压
|
||
} config;
|
||
};
|
||
|
||
enum sw7203_I2C_address_t
|
||
{
|
||
sw7203_I2c_0x3C = 0,
|
||
sw7203_I2c_0x38,
|
||
sw7203_I2c_0x1C,
|
||
sw7203_I2c_0x18
|
||
};
|
||
|
||
typedef struct sw7203_config
|
||
{
|
||
sw7203_i2c_config i2cHost;
|
||
sw7203_I2C_address_t i2cAddress;
|
||
union
|
||
{
|
||
uint8_t hex; // 8位无符号整数,用于将位域组合成一个字节方便程序读取
|
||
|
||
struct
|
||
{
|
||
uint8_t : 3; // 未定义的 bit 不能被改写
|
||
|
||
uint8_t shutdownLowPowerModeEnable : 1;
|
||
// 关机低功耗模式使能标志位:
|
||
// 0: 启用关机低功耗模式,1: 禁用关机低功耗模式
|
||
|
||
uint8_t : 2; // 未定义的 bit 不能被改写
|
||
|
||
uint8_t a1PortDetectEnable : 1;
|
||
// A1端口检测使能标志位:
|
||
// 0: 禁用A1端口检测,1: 启用A1端口检测
|
||
|
||
uint8_t a2PortDetectEnable : 1;
|
||
// A2端口检测使能标志位:
|
||
// 0: 禁用A2端口检测,1: 启用A2端口检测
|
||
} config;
|
||
} connectDetect;
|
||
union
|
||
{
|
||
uint8_t hex; // 8位无符号整数,用于将位域组合成一个字节方便程序读取
|
||
|
||
struct
|
||
{
|
||
uint8_t switchFrequency : 2;
|
||
// 开关频率选项:
|
||
// 0: 300KHz,1: 200KHz,2: 400KHz,3: 800KHz
|
||
|
||
uint8_t forcePWMModeEnable : 1;
|
||
// 强制 PWM 模式使能:
|
||
// 0: 禁用,1: 启用
|
||
|
||
uint8_t : 2; // 未定义的 bit 不能被改写
|
||
|
||
uint8_t NTCProtectEnable : 1;
|
||
// NTC 过温保护使能
|
||
// 0: 启用,1: 禁用
|
||
|
||
uint8_t PowerMOSMinConductTime : 1;
|
||
// 功率管最小导通时间设置:
|
||
// 0: 下管最小导通时间 112nS,上管最小导通时间 133nS
|
||
// 1: 下管最小导通时间 58nS,上管最小导通时间 81nS
|
||
|
||
uint8_t VBUSVoltageRegulationMethod : 1;
|
||
// VBUS 输出调压方式选择:
|
||
// 0: I2C 调压,1: FB 调压
|
||
} config;
|
||
} funcConfig1;
|
||
union
|
||
{
|
||
uint8_t hex; // 8位无符号整数,用于将位域组合成一个字节方便程序读取
|
||
|
||
struct
|
||
{
|
||
uint8_t deadzoneM1OpenM2Closed : 2;
|
||
// M2 关 M1 开死区设置:
|
||
// 0: 60nS,1: 20nS,2: 40nS,3: 80nS
|
||
|
||
uint8_t deadzoneM1ClosedM2Open : 2;
|
||
// M2 关 M1 开死区设置:
|
||
// 0: 60nS,1: 20nS,2: 40nS,3: 60nS
|
||
|
||
uint8_t deadzoneM3ClosedM4Open : 2;
|
||
// M3 关 M4 开死区设置:
|
||
// 0: 60nS,1: 20nS,2: 40nS,3: 80nS
|
||
|
||
uint8_t deadzoneM3OpenM4Closed : 2;
|
||
// M4 关 M3 开死区设置:
|
||
// 0: 60nS,1: 20nS,2: 40nS,3: 60nS
|
||
} config;
|
||
} funcConfig2;
|
||
union
|
||
{
|
||
uint8_t hex; // 8位无符号整数,用于将位域组合成一个字节方便程序读取
|
||
|
||
struct
|
||
{
|
||
uint8_t M2MOSRdsOn : 2;
|
||
// M2 功率管内阻设置:
|
||
// 0: 2.5mR,1: 5mR,2: 7.5mR,3: 10mR
|
||
|
||
uint8_t nductanceValue : 2;
|
||
// 电感感值设置:
|
||
// 0: 1uH,1: 2.2uH,2: 3.3uH,3: 4.7uH
|
||
|
||
uint8_t : 4; // 未定义的 bit 不能被改写
|
||
} config;
|
||
} funcConfig3;
|
||
union
|
||
{
|
||
uint8_t hex; // 8位无符号整数,用于将位域组合成一个字节方便程序读取
|
||
|
||
struct
|
||
{
|
||
uint8_t ACOutRegResetControl : 1;
|
||
// 适配器移出是否清除充电开关控制位:
|
||
// 0: 清除,1: 不清除
|
||
|
||
uint8_t stopChargingOnFullEnable : 1;
|
||
// 充满停充使能:
|
||
// 0: 使能,1: 禁止
|
||
|
||
uint8_t : 2; // 未定义的 bit 不能被改写
|
||
|
||
uint8_t fullChargeCurrent : 1;
|
||
// 充满截止电流设置:
|
||
// 0: 100mA,1: 200mA, 3: 300mA,4: 400mA
|
||
|
||
uint8_t batteryCellNum : 1;
|
||
// 电池节数设置:
|
||
// 0: 1节,1: 2节, 3: 3节,4: 4节
|
||
} config;
|
||
} funcConfig4;
|
||
};
|
||
|
||
#endif |