#ifndef __BQ_VERIFIED_OPS_H #define __BQ_VERIFIED_OPS_H #include "stm32f10x.h" #include "bq25756_regs.h" /*=========================================================================== * BQ25756 值校验操作层 — LiPow 风格 * * 设计原则: * 写寄存器前 clamp 值到合法范围(防止电池过充/过放) * 读寄存器返回物理量(mV/mA),不是原始寄存器值 * 读改写在单次 I2C 事务中完成(不会出现读和写之间被中断的竞态) *===========================================================================*/ /*=========================================================================== * 写操作(带范围校验) * 返回 0=成功, -1=I2C 错误 *===========================================================================*/ int BQ25756_WriteChargeCurrent(uint32_t mA); /* 400~20000mA, clamped */ int BQ25756_WriteInputCurrentDPM(uint32_t mA); /* 400~20000mA */ int BQ25756_WriteInputVoltageDPM(uint32_t mV); /* 4200~65000mV */ int BQ25756_WritePrechargeCurrent(uint32_t mA); /* 250~10000mA */ int BQ25756_WriteTermCurrent(uint32_t mA); /* 250~10000mA */ /*=========================================================================== * 读操作(返回物理量,失败返回负值) * I2C 通信失败时返回值 < 0 *===========================================================================*/ int32_t BQ25756_ReadVBAT_mV(void); /* 电池电压 mV,失败=-1 */ int32_t BQ25756_ReadIBAT_mA(void); /* 充电电流 mA,失败=-32768 */ int32_t BQ25756_ReadVAC_mV(void); /* 输入电压 mV */ int32_t BQ25756_ReadIAC_mA(void); /* 输入电流 mA(0.8mA/LSB)*/ int32_t BQ25756_ReadVFB_mV(void); /* FB 电压 mV(1mV/LSB, 0~2047)*/ /*=========================================================================== * 位操作(读改写,不干扰同寄存器的其他 bit) *===========================================================================*/ int BQ25756_SetEN_CHG(uint8_t enable); /* 充电使能/禁用 */ int BQ25756_SetEN_HIZ(uint8_t enable); /* HIZ 模式开关 */ int BQ25756_ResetWD(void); /* 复位看门狗 */ /** * 通用寄存器位修改(读 → 改 → 写) * 例:BQ25756_ModifyReg(0x15, 0x30, BQ25756_WD_DISABLE); */ int BQ25756_ModifyReg(uint8_t reg, uint8_t mask, uint8_t value); #endif