工具/软件:
您好!
我有一个 Raspberry PI 通过 i2c 与 BQ25895 进行交互。 D+/D-短接以自动将最大电流输入设置为 3.25A。 当充电器未插入时、该寄存器报告 0.992V 电压、在插入 VBUS 时报告 1.001V 电压。 尽管增加了 2.304V 偏移、但该电压也从未反映实际的电池电压。 在负载下使用万用表测量的实际电池电压接近 4.1V 和 4.03V。 不确定出了什么问题。
这是我的 python 代码:
导入时间
从 smbus2 导入 SMBus
I2C_BUS = 6
BQ25895_ADDR = 0x6A
REG_CONV = 0x02
VBAT_ADC_MSB = 0x10
VBAT_ADC_LSB = 0x11
DEF TRIGGER_ADC_CONVERSION (BUS):
VAL = BUS.READ_BYTE_DATA (BQ25895_ADDR、REG_CONV)
VAL |=(1 << 7)
BUS.WRITE_BYTE_DATA (BQ25895_ADDR、REG_CONV、VAL)
当为真时:
VAL = BUS.READ_BYTE_DATA (BQ25895_ADDR、REG_CONV)
如果不是 (val 且 (1 << 7)):
休息
时间睡眠 (0.01)
DEF READ_BATTERY_VOLTAGE ():
将 SMBus (I2C_BUS) 用作总线:
TRIGGER_ADC_CONVERSION (BUS)
MSB = BUS.READ_BYTE_DATA (BQ25895_ADDR、VBAT_ADC_MSB)
LSB = BUS.READ_BYTE_DATA (BQ25895_ADDR、VBAT_ADC_LSB)
ADC_val =(msb << 4)|(lsb >> 4)
电压= ADC_val * 0.001
返回电压
如果__NAME__=“__MAIN__":“:
VBAT = READ_BATTERY_VOLTAGE ()
打印 (f“电池电压:{VBAT:.3f}V“)