This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] BQ25895:I2C 未报告正确的电池电压

Guru**** 2553800 points
Other Parts Discussed in Thread: BQ25895

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1571011/bq25895-i2c-not-reporting-correct-battery-voltage

器件型号:BQ25895


工具/软件:

您好!  

我有一个 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“)