#ifndef __BQ25756_REGS_H #define __BQ25756_REGS_H #include "stm32f10x.h" /*=========================================================================== * BQ25756 Register Map — 完整版 v3 * Reference: TI SLUSEN5 BQ25756 Datasheet (Aug 2023) * I2C 7-bit address: 0x6B * * 覆盖范围:8.5.1 ~ 8.5.42 全部寄存器位定义 *===========================================================================*/ #define BQ25756_I2C_ADDR 0x6B /*=========================================================================== * 寄存器地址 *===========================================================================*/ /* 配置寄存器 */ #define BQ25756_REG_CHG_VOLTAGE 0x00 #define BQ25756_REG_CHG_CURRENT 0x02 #define BQ25756_REG_INPUT_CURRENT_DPM 0x06 #define BQ25756_REG_INPUT_VOLTAGE_DPM 0x08 #define BQ25756_REG_REV_INPUT_CURRENT 0x0A #define BQ25756_REG_REV_INPUT_VOLTAGE 0x0C #define BQ25756_REG_PRECHG_CURRENT 0x10 #define BQ25756_REG_TERM_CURRENT 0x12 #define BQ25756_REG_PRECHG_TERM_CTRL 0x14 #define BQ25756_REG_TIMER_CTRL 0x15 #define BQ25756_REG_THREE_STAGE_CHG 0x16 #define BQ25756_REG_CHARGER_CTRL 0x17 #define BQ25756_REG_PIN_CTRL 0x18 #define BQ25756_REG_POWER_PATH_REV 0x19 #define BQ25756_REG_MPPT_CTRL 0x1A #define BQ25756_REG_TS_THRESHOLD 0x1B #define BQ25756_REG_TS_REGION_BEHAVIOR 0x1C #define BQ25756_REG_TS_REV_THRESHOLD 0x1D #define BQ25756_REG_REV_UV_CTRL 0x1E #define BQ25756_REG_VAC_MPP_DETECTED 0x1F /* 状态/标志/屏蔽寄存器 */ #define BQ25756_REG_CHARGER_STATUS_1 0x21 #define BQ25756_REG_CHARGER_STATUS_2 0x22 #define BQ25756_REG_CHARGER_STATUS_3 0x23 #define BQ25756_REG_FAULT_STATUS 0x24 #define BQ25756_REG_FLAG_1 0x25 #define BQ25756_REG_FLAG_2 0x26 #define BQ25756_REG_FAULT_FLAG 0x27 #define BQ25756_REG_MASK_1 0x28 #define BQ25756_REG_MASK_2 0x29 #define BQ25756_REG_FAULT_MASK 0x2A /* ADC */ #define BQ25756_REG_ADC_CTRL 0x2B #define BQ25756_REG_ADC_CHANNEL_CTRL 0x2C #define BQ25756_REG_IAC_ADC 0x2D #define BQ25756_REG_IBAT_ADC 0x2F #define BQ25756_REG_VAC_ADC 0x31 #define BQ25756_REG_VBAT_ADC 0x33 #define BQ25756_REG_TS_ADC 0x37 #define BQ25756_REG_VFB_ADC 0x39 /* 杂项 */ #define BQ25756_REG_GATE_DRV_STRENGTH 0x3B #define BQ25756_REG_GATE_DRV_DEAD_TIME 0x3C #define BQ25756_REG_PART_INFO 0x3D #define BQ25756_REG_REV_DISCHARGE 0x62 /*=========================================================================== * REG0x17 — Charger_Control (0x17, Reset=0xC9) *===========================================================================*/ #define BQ25756_VRECHG_MASK 0xC0 #define BQ25756_VRECHG_93P0 0x00 #define BQ25756_VRECHG_94P3 0x40 #define BQ25756_VRECHG_95P2 0x80 #define BQ25756_VRECHG_97P6 0xC0 #define BQ25756_WD_RST 0x20 #define BQ25756_DIS_CE_PIN 0x10 #define BQ25756_EN_CHG_BIT_RST_BEHAVIOR 0x08 #define BQ25756_EN_HIZ 0x04 #define BQ25756_EN_IBAT_LOAD 0x02 #define BQ25756_EN_CHG 0x01 /*=========================================================================== * REG0x14 — Precharge_and_Termination_Control (0x14, Reset=0x0F) *===========================================================================*/ #define BQ25756_EN_TERM 0x08 #define BQ25756_VBAT_LOWV_MASK 0x06 #define BQ25756_VBAT_LOWV_30PCT 0x00 #define BQ25756_VBAT_LOWV_55PCT 0x02 #define BQ25756_VBAT_LOWV_66P7PCT 0x04 #define BQ25756_VBAT_LOWV_71P4PCT 0x06 #define BQ25756_EN_PRECHG 0x01 /*=========================================================================== * REG0x15 — Timer_Control (0x15, Reset=0x1D) *===========================================================================*/ #define BQ25756_TOPOFF_MASK 0xC0 #define BQ25756_TOPOFF_DISABLE 0x00 #define BQ25756_TOPOFF_15MIN 0x40 #define BQ25756_TOPOFF_30MIN 0x80 #define BQ25756_TOPOFF_45MIN 0xC0 #define BQ25756_WD_MASK 0x30 #define BQ25756_WD_DISABLE 0x00 #define BQ25756_WD_40S 0x10 #define BQ25756_WD_80S 0x20 #define BQ25756_WD_160S 0x30 #define BQ25756_EN_CHG_TMR 0x08 #define BQ25756_CHG_TMR_MASK 0x06 #define BQ25756_CHG_TMR_5HR 0x00 #define BQ25756_CHG_TMR_8HR 0x02 #define BQ25756_CHG_TMR_12HR 0x04 #define BQ25756_CHG_TMR_24HR 0x06 #define BQ25756_EN_TMR2X 0x01 /*=========================================================================== * REG0x16 — Three_Stage_Charge_Control (0x16, Reset=0x00) *===========================================================================*/ #define BQ25756_CV_TMR_MASK 0x0F /* CV_TMR: 0000=禁用, 0001=1hr ... 1111=15hr */ /*=========================================================================== * REG0x18 — Pin_Control (0x18, Reset=0xC0) *===========================================================================*/ #define BQ25756_EN_ICHG_PIN 0x80 #define BQ25756_EN_ILIM_HIZ_PIN 0x40 #define BQ25756_DIS_PG_PIN 0x20 #define BQ25756_DIS_STAT_PINS 0x10 #define BQ25756_FORCE_STAT4_ON 0x08 #define BQ25756_FORCE_STAT3_ON 0x04 #define BQ25756_FORCE_STAT2_ON 0x02 #define BQ25756_FORCE_STAT1_ON 0x01 /*=========================================================================== * REG0x19 — Power_Path_and_Reverse_Mode_Control (0x19, Reset=0x20) *===========================================================================*/ #define BQ25756_REG_RST 0x80 #define BQ25756_EN_IAC_LOAD 0x40 #define BQ25756_EN_PFM 0x20 #define BQ25756_EN_REV 0x01 /*=========================================================================== * REG0x1A — MPPT_Control (0x1A, Reset=0x20) *===========================================================================*/ #define BQ25756_FORCE_SWEEP 0x80 #define BQ25756_PO_TMR_MASK 0x60 #define BQ25756_PO_TMR_DISABLE 0x00 #define BQ25756_PO_TMR_0P5S 0x20 #define BQ25756_PO_TMR_1S 0x40 #define BQ25756_PO_TMR_10S 0x60 #define BQ25756_FS_TMR_MASK 0x06 #define BQ25756_FS_TMR_3MIN 0x00 #define BQ25756_FS_TMR_10MIN 0x02 #define BQ25756_FS_TMR_15MIN 0x04 #define BQ25756_FS_TMR_20MIN 0x06 #define BQ25756_EN_MPPT 0x01 /*=========================================================================== * REG0x1B — TS_Charging_Threshold_Control (0x1B, Reset=0x96) *===========================================================================*/ #define BQ25756_TS_T5_MASK 0xC0 #define BQ25756_TS_T5_50C 0x00 #define BQ25756_TS_T5_55C 0x40 #define BQ25756_TS_T5_60C 0x80 #define BQ25756_TS_T5_65C 0xC0 #define BQ25756_TS_T3_MASK 0x30 #define BQ25756_TS_T3_40C 0x00 #define BQ25756_TS_T3_45C 0x10 #define BQ25756_TS_T3_50C 0x20 #define BQ25756_TS_T3_55C 0x30 #define BQ25756_TS_T2_MASK 0x0C #define BQ25756_TS_T2_5C 0x00 #define BQ25756_TS_T2_10C 0x04 #define BQ25756_TS_T2_15C 0x08 #define BQ25756_TS_T2_20C 0x0C #define BQ25756_TS_T1_MASK 0x03 #define BQ25756_TS_T1_N10C 0x00 #define BQ25756_TS_T1_N5C 0x01 #define BQ25756_TS_T1_0C 0x02 #define BQ25756_TS_T1_5C 0x03 /*=========================================================================== * REG0x1C — TS_Charging_Region_Behavior_Control (0x1C, Reset=0x57) *===========================================================================*/ #define BQ25756_JEITA_VSET_MASK 0x60 #define BQ25756_JEITA_VSET_SUSPEND 0x00 #define BQ25756_JEITA_VSET_94P3 0x20 #define BQ25756_JEITA_VSET_97P6 0x40 #define BQ25756_JEITA_VSET_100PCT 0x60 #define BQ25756_JEITA_ISETH 0x10 #define BQ25756_JEITA_ISETC_MASK 0x0C #define BQ25756_JEITA_ISETC_SUSPEND 0x00 #define BQ25756_JEITA_ISETC_20PCT 0x04 #define BQ25756_JEITA_ISETC_40PCT 0x08 #define BQ25756_JEITA_ISETC_100PCT 0x0C #define BQ25756_EN_JEITA 0x02 #define BQ25756_EN_TS 0x01 /*=========================================================================== * REG0x1D — TS_Reverse_Mode_Threshold_Control (0x1D, Reset=0x40) *===========================================================================*/ #define BQ25756_BHOT_MASK 0xC0 #define BQ25756_BHOT_55C 0x00 #define BQ25756_BHOT_60C 0x40 #define BQ25756_BHOT_65C 0x80 #define BQ25756_BHOT_DISABLE 0xC0 #define BQ25756_BCOLD 0x20 /*=========================================================================== * REG0x1E — Reverse_Undervoltage_Control (0x1E, Reset=0x00) *===========================================================================*/ #define BQ25756_SYSREV_UV 0x20 /*=========================================================================== * REG0x2B — ADC_Control (0x2B, Reset=0x60) *===========================================================================*/ #define BQ25756_ADC_EN 0x80 #define BQ25756_ADC_RATE_ONESHOT 0x40 #define BQ25756_ADC_RATE_CONT 0x00 #define BQ25756_ADC_SAMPLE_MASK 0x30 #define BQ25756_ADC_SAMPLE_15BIT 0x00 #define BQ25756_ADC_SAMPLE_14BIT 0x10 #define BQ25756_ADC_SAMPLE_13BIT 0x20 #define BQ25756_ADC_AVG 0x08 #define BQ25756_ADC_AVG_INIT 0x04 /*=========================================================================== * REG0x2C — ADC_Channel_Control (0x2C, Reset=0x0A) * 1 = 禁用该通道 * * ⚠️ 数据手册 Reset = 0x0A,但按各 bit 独立复位值推算(TS=0, VFB=0) * 应得 0x04。0x0A 的 bit3 和 bit1 为 1 原因待确认——可能包含 * reserved bit 的硬件默认值。建议读取实际复位值验证。 *===========================================================================*/ #define BQ25756_ADC_DIS_IAC 0x80 #define BQ25756_ADC_DIS_IBAT 0x40 #define BQ25756_ADC_DIS_VAC 0x20 #define BQ25756_ADC_DIS_VBAT 0x10 #define BQ25756_ADC_DIS_TS 0x04 /* 默认禁用 */ #define BQ25756_ADC_DIS_VFB 0x02 /*=========================================================================== * REG0x21 — Charger_Status_1 (0x21, Reset=0x00) *===========================================================================*/ #define BQ25756_STAT_ADC_DONE 0x80 #define BQ25756_STAT_IAC_DPM 0x40 #define BQ25756_STAT_VAC_DPM 0x20 #define BQ25756_STAT_WD_EXPIRED 0x08 #define BQ25756_STAT_CHRG_STATE_MASK 0x07 #define BQ25756_STAT_NO_CHARGE 0x00 #define BQ25756_STAT_TRICKLE_CHARGE 0x01 #define BQ25756_STAT_PRECHARGE 0x02 #define BQ25756_STAT_FAST_CHARGE_CC 0x03 #define BQ25756_STAT_FAST_CHARGE_CV 0x04 #define BQ25756_STAT_TOPOFF 0x06 #define BQ25756_STAT_CHARGE_DONE 0x07 /*=========================================================================== * REG0x22 — Charger_Status_2 (0x22, Reset=0x00) *===========================================================================*/ #define BQ25756_STAT2_PG 0x80 #define BQ25756_STAT2_TS_MASK 0x70 #define BQ25756_STAT2_TS_NORMAL 0x00 #define BQ25756_STAT2_TS_WARM 0x10 #define BQ25756_STAT2_TS_COOL 0x20 #define BQ25756_STAT2_TS_COLD 0x30 #define BQ25756_STAT2_TS_HOT 0x40 #define BQ25756_STAT2_MPPT_MASK 0x03 #define BQ25756_STAT2_MPPT_DISABLED 0x00 #define BQ25756_STAT2_MPPT_IDLE 0x01 #define BQ25756_STAT2_MPPT_SWEEPING 0x02 #define BQ25756_STAT2_MPPT_LOCKED 0x03 /*=========================================================================== * REG0x23 — Charger_Status_3 (0x23, Reset=0x00) *===========================================================================*/ #define BQ25756_STAT3_SYNC_MASK 0x30 #define BQ25756_STAT3_SYNC_NORMAL 0x00 #define BQ25756_STAT3_SYNC_DETECTED 0x10 #define BQ25756_STAT3_SYNC_FAULT 0x20 #define BQ25756_STAT3_CV_TMR_EXP 0x08 #define BQ25756_STAT3_REVERSE_ON 0x04 /*=========================================================================== * REG0x24 — Fault_Status (0x24, Reset=0x00) *===========================================================================*/ #define BQ25756_FAULT_VAC_UV 0x80 #define BQ25756_FAULT_VAC_OV 0x40 #define BQ25756_FAULT_IBAT_OCP 0x20 #define BQ25756_FAULT_VBAT_OVP 0x10 #define BQ25756_FAULT_TSHUT 0x08 #define BQ25756_FAULT_CHG_TMR 0x04 #define BQ25756_FAULT_DRV_OKZ 0x02 /*=========================================================================== * REG0x25 — Charger_Flag_1 (0x25, Reset=0x00, 读清除) *===========================================================================*/ #define BQ25756_FLAG1_ADC_DONE 0x80 #define BQ25756_FLAG1_IAC_DPM 0x40 #define BQ25756_FLAG1_VAC_DPM 0x20 #define BQ25756_FLAG1_WD 0x08 #define BQ25756_FLAG1_CV_TMR 0x02 #define BQ25756_FLAG1_CHARGE 0x01 /*=========================================================================== * REG0x26 — Charger_Flag_2 (0x26, Reset=0x00, 读清除) *===========================================================================*/ #define BQ25756_FLAG2_PG 0x80 #define BQ25756_FLAG2_TS 0x10 #define BQ25756_FLAG2_REVERSE 0x08 #define BQ25756_FLAG2_FSW_SYNC 0x02 #define BQ25756_FLAG2_MPPT 0x01 /*=========================================================================== * REG0x27 — Fault_Flag (0x27, Reset=0x00, 读清除) *===========================================================================*/ #define BQ25756_FAULT_FLAG_VAC_UV 0x80 #define BQ25756_FAULT_FLAG_VAC_OV 0x40 #define BQ25756_FAULT_FLAG_IBAT_OCP 0x20 #define BQ25756_FAULT_FLAG_VBAT_OV 0x10 #define BQ25756_FAULT_FLAG_TSHUT 0x08 #define BQ25756_FAULT_FLAG_CHG_TMR 0x04 #define BQ25756_FAULT_FLAG_DRV_OKZ 0x02 /*=========================================================================== * REG0x28 — Charger_Mask_1 (0x28, Reset=0x00) * 0=允许INT脉冲, 1=屏蔽INT脉冲 *===========================================================================*/ #define BQ25756_MASK1_ADC_DONE 0x80 #define BQ25756_MASK1_IAC_DPM 0x40 #define BQ25756_MASK1_VAC_DPM 0x20 #define BQ25756_MASK1_WD 0x08 #define BQ25756_MASK1_CV_TMR 0x02 #define BQ25756_MASK1_CHARGE 0x01 /*=========================================================================== * REG0x29 — Charger_Mask_2 (0x29, Reset=0x00) *===========================================================================*/ #define BQ25756_MASK2_PG 0x80 #define BQ25756_MASK2_TS 0x10 #define BQ25756_MASK2_REVERSE 0x08 #define BQ25756_MASK2_FSW_SYNC 0x02 #define BQ25756_MASK2_MPPT 0x01 /*=========================================================================== * REG0x2A — Fault_Mask (0x2A, Reset=0x00) *===========================================================================*/ #define BQ25756_MASK_FAULT_VAC_UV 0x80 #define BQ25756_MASK_FAULT_VAC_OV 0x40 #define BQ25756_MASK_FAULT_IBAT_OCP 0x20 #define BQ25756_MASK_FAULT_VBAT_OV 0x10 #define BQ25756_MASK_FAULT_TSHUT 0x08 #define BQ25756_MASK_FAULT_CHG_TMR 0x04 #define BQ25756_MASK_FAULT_DRV_OKZ 0x02 /*=========================================================================== * REG0x3B — Gate_Driver_Strength_Control (0x3B, Reset=0x00) * 00=最快, 01=较快, 10=较慢, 11=最慢 *===========================================================================*/ #define BQ25756_DRV_BOOST_HS_MASK 0xC0 #define BQ25756_DRV_BOOST_HS_FASTEST 0x00 #define BQ25756_DRV_BOOST_HS_FASTER 0x40 #define BQ25756_DRV_BOOST_HS_SLOWER 0x80 #define BQ25756_DRV_BOOST_HS_SLOWEST 0xC0 #define BQ25756_DRV_BUCK_HS_MASK 0x30 #define BQ25756_DRV_BOOST_LS_MASK 0x0C #define BQ25756_DRV_BUCK_LS_MASK 0x03 /*=========================================================================== * REG0x3C — Gate_Driver_Dead_Time_Control (0x3C, Reset=0x00) *===========================================================================*/ #define BQ25756_DT_BOOST_MASK 0x0C #define BQ25756_DT_BOOST_45NS 0x00 #define BQ25756_DT_BOOST_75NS 0x04 #define BQ25756_DT_BOOST_105NS 0x08 #define BQ25756_DT_BOOST_135NS 0x0C #define BQ25756_DT_BUCK_MASK 0x03 #define BQ25756_DT_BUCK_45NS 0x00 #define BQ25756_DT_BUCK_75NS 0x01 #define BQ25756_DT_BUCK_105NS 0x02 #define BQ25756_DT_BUCK_135NS 0x03 /*=========================================================================== * REG0x3D — Part_Information (0x3D, Reset=0x12) *===========================================================================*/ #define BQ25756_PART_NUM_MASK 0x78 #define BQ25756_PART_NUM_BQ25756 0x10 #define BQ25756_DEV_REV_MASK 0x07 /*=========================================================================== * REG0x62 — Reverse_Mode_Battery_Discharge_Current (0x62, Reset=0x02) *===========================================================================*/ #define BQ25756_IBAT_REV_MASK 0xC0 #define BQ25756_IBAT_REV_20A 0x00 #define BQ25756_IBAT_REV_15A 0x40 #define BQ25756_IBAT_REV_10A 0x80 #define BQ25756_IBAT_REV_5A 0xC0 #define BQ25756_EN_CONV_FAST_TRANSIENT 0x02 /*=========================================================================== * 参数换算宏 *===========================================================================*/ /* VFB_REG: 5-bit, 2mV/LSB, offset 1504mV */ #define BQ25756_VFB_REG_MV(raw) (1504 + ((uint32_t)(raw) * 2)) #define BQ25756_VFB_REG_RAW(mV) ((uint16_t)(((mV) - 1504) / 2)) /* 充电电流: 50mA/LSB range 400~20000mA */ #define BQ25756_ICHG_MA(raw) ((uint32_t)(raw) * 50) #define BQ25756_ICHG_RAW(mA) ((uint16_t)((mA) / 50)) /* 输入电流DPM: 50mA/LSB */ #define BQ25756_IDPM_MA(raw) ((uint32_t)(raw) * 50) #define BQ25756_IDPM_RAW(mA) ((uint16_t)((mA) / 50)) /* 输入电压DPM: 20mV/LSB */ #define BQ25756_VDPM_MV(raw) ((uint32_t)(raw) * 20) #define BQ25756_VDPM_RAW(mV) ((uint16_t)((mV) / 20)) /* 预充/终止电流: 50mA/LSB */ #define BQ25756_PRECHG_MA(raw) ((uint32_t)(raw) * 50) #define BQ25756_PRECHG_RAW(mA) ((uint16_t)((mA) / 50)) /* ADC 读数换算 */ #define BQ25756_IBAT_ADC_MA(raw) ((int32_t)(int16_t)(raw) * 2) #define BQ25756_IAC_ADC_MA(raw) ((int32_t)(int16_t)(raw) * 8 / 10) #define BQ25756_VBAT_ADC_MV(raw) ((uint32_t)(raw) * 2) #define BQ25756_VAC_ADC_MV(raw) ((uint32_t)(raw) * 2) #define BQ25756_VFB_ADC_MV(raw) ((uint32_t)(raw)) #endif /* __BQ25756_REGS_H */