123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- #ifndef __HAL_SY6970_H__
- #define __HAL_SY6970_H__
-
- #include "hc32_ll_gpio.h"
- #include "hc32_ll_fcg.h"
- #include "hc32_ll_interrupts.h"
- #include "hc32_ll_tmr0.h"
- #include "ring_buf.h"
- #include "hc32_ll_aos.h"
-
- #if 0
- #define SY6970_ADDR 0x6A
-
- void sy6970_init(void);
- uint8_t sy6970_charge_status(void);
- #endif
- #define uint8 uint8_t
- #define uint16 uint16_t
- #define ENABLE (1)
- #define DISABLE (0)
- #define REG_INPUT_CURRENT_CTR (0X00)
- #define REG_ADC_START_CTR (0X02)
- #define REG_CHARGE_CTR (0X03)
- #define REG_CURRENT_CHARGE_CTR (0X04)
- #define REG_VOLTAGE_CHARGE_CTR (0X06)
- #define REG_CHARGE_STATUS_READ (0X0B)
- #define REG_NTC_STATUS_READ (0X0C)
- #define REG_VOLTAGE_READ (0X0E)
- #define REG_SYS_VOLTAGE_READ (0X0F)
- #define REG_CHARGE_CURRENT_READ (0X12)
- #define REG_CURRENT_STATUS_READ (0X13)
- #define SY6970_ADDR (0x6A << 1)
- #pragma pack(1)
- typedef struct
- {
- uint8 IINLIM:6;
- uint8 EN_ILIM:1;
- uint8 EN_HIZ:1;
-
- }REG00_CONFIG_CON;
- typedef struct
- {
- uint8 auto_dpdm_en:1;
- uint8 force_dpdm:1;
- uint8 hv_type:1;
- uint8 hvdcp_en:1;
- uint8 aicl_en:1;
- uint8 boost_freq:1;
- uint8 conv_rate:1;
- uint8 conv_start:1;
- }REG02_CONFIG_CON;
- typedef union
- {
- uint8 data;
- REG02_CONFIG_CON config;
- }REG02_CONFIG;
- typedef struct
- {
- uint8 reserved:1;
- uint8 sys_min:3;
- uint8 chg_config:1;
- uint8 otg_config:1;
- uint8 wd_rst:1;
- uint8 bat_load_en:1;
- }REG03_CHARGE_CON;
- typedef union
- {
- uint8 data;
- REG03_CHARGE_CON config;
- }REG03_CHARGE;
- typedef struct
- {
- uint8 ICHG:7;
- uint8 EN_PUMPX:1;
- }REG04_CURRENT_CON;
- typedef union
- {
- uint8 data;
- REG04_CURRENT_CON config;
- }REG04_CURRENT;
- typedef struct
- {
- uint8 ITERM:4;
- uint8 IPRECHG:4;
- }REG05_CURRENT_CON;
- typedef struct
- {
- uint8 VRECHG:1;
- uint8 BATLOWV:1;
- uint8 VREG:1;
- }REG06_VREG_CON;
- typedef struct
- {
- uint8 JEITA_ISET:1;
-
-
- uint8 CHG_TIMER:2;
- uint8 EN_TIMER:1;
- uint8 WATCHDOG:2;
- uint8 STAT_DIS:1;
- uint8 EN_TERM:1;
- }REG07_VREG_CON;
- typedef struct
- {
- uint8 TREG:2;
- uint8 VCLAMP:3;
- uint8 BAT_COMP:3;
- }REG08_BAT_CON;
- typedef struct
- {
- uint8 PUMPX_DN:1;
- uint8 PUMPX_UP:1;
- uint8 BATFET_RST_EN:1;
- uint8 BATFET_DLY:1;
- uint8 JEITA_VSET:1;
- uint8 BATFET_DIS:1;
- uint8 TMR2X_EN:1;
- uint8 FORCE_AICL:1;
- }REG09_CURRENT_CON;
- typedef struct
- {
- uint8 BOOST_LIM:3;
- uint8 Reserved:1;
- uint8 BOOSTV:4;
- }REG0A_BOOSTV_CON;
- typedef struct
- {
- uint8 VSYS_STAT:1;
- uint8 SDP_STAT:1;
-
- uint8 PG_STAT:1;
- uint8 CHRG_STAT:2;
-
- uint8 BUS_STAT:2;
-
- }REG0B_CURRENT_CON;
- typedef struct
- {
- uint8 bsys_stat:1;
- uint8 sdp_stat:1;
- uint8 pg_stat:1;
- uint8 charg_stat:2;
-
- uint8 bus_stat:3;
-
- }REG0B_STATUS;
- typedef struct
- {
- uint8 NTC_FAULT:2;
- uint8 BAT_FAULT:1;
- uint8 CHRG_FAULT:2;
- uint8 BOOST_FAULT:1;
- uint8 WATCHDOG_FAULT:1;
- }REG0C_TEM_INFO;
- typedef struct
- {
- uint8 VINDPM:7;
- uint8 VINDPM_MODE:1;
- }REG0D_VINDPM_CON;
- typedef union
- {
- uint8 data;
- REG0D_VINDPM_CON config;
- }REG0D_VINDPM;
- typedef struct
- {
- uint8 BATV:7;
- uint8 THERM_STAT:1;
- }REG0E_BATTV_INFO;
- typedef struct
- {
- uint8 SYSV:7;
- uint8 Reserved:1;
- }REG0F_BATTV_INFO;
- typedef struct
- {
- uint8 busv:7;
- uint8 bus_gd:1;
- }REG11_BUS;
- typedef union
- {
- uint8 data;
- REG11_BUS reg_read;
- }REG11_BUS_STATUS;
- typedef struct
- {
- uint8 ICHGR:7;
- uint8 RE:1;
- }REG12_CHARGE_CURRENT;
- typedef struct
- {
- uint8 CurrentInputLimit:6;
- uint8 IDPM_STAT:1;
- uint8 VDPM_STAT:1;
- }REG13_CURRENT_STATUS;
- typedef union
- {
- uint8 data_uint8;
- REG00_CONFIG_CON re00_config;
- REG02_CONFIG_CON reg02_config;
- REG03_CHARGE_CON reg03_config;
- REG04_CURRENT_CON reg04_config;
- REG06_VREG_CON reg06_config;
- REG0B_STATUS reg0b_onre_status;
- REG0C_TEM_INFO reg0c_tem_info;
- REG0D_VINDPM_CON reg0D_config;
- REG0E_BATTV_INFO reg0e_batt_info;
- REG0F_BATTV_INFO reg0f_sysv_info;
- REG11_BUS reg11_bus_info;
- REG12_CHARGE_CURRENT reg12_charge_info;
- REG13_CURRENT_STATUS reg13_current_input_info;
- }REG_SYS_CONFIG;
- #pragma pack()
- REG_SYS_CONFIG sy6970_get_reg_config(uint8_t cmd);
- void sy6970_init(void);
- void sy6970_read_byte(uint8_t dev_addr, uint8_t RAddr, uint8_t *RData);
- uint16_t sy6970_get_batv(void);
- uint16_t sy6970_get_sysv(void);
- uint16_t sy6970_set_reg(uint8 cmd, uint16 cmd_data);
- void sy6970_set_reg03_charge(void);
- void sy6970_reg0d_vindpm_config(void);
- REG_SYS_CONFIG sy6970_get_reg02_config(void);
- REG_SYS_CONFIG sy6970_get_reg03_config(void);
- REG_SYS_CONFIG sy6970_get_reg0b_charge_status(void);
- REG_SYS_CONFIG sy6970_get_reg0d_vindpm_config(void);
- REG_SYS_CONFIG sy6970_get_reg11_bus_status(void);
- void sy6970_task(void *argv);
- #endif
|