工具与软件:
您好!
我已在 SOH 模式下对电量监测计进行编程。 它的工作非常出色、可根据相应命令的要求提供电压、温度、设计容量和 SOH。 但是、出于某种原因、我不知道它开始提供非常低的 SOH 值、而每次我运行它时、电压是2.7V (我使用的是 CR2450)、直到现在、对于每个电池、我都得到0%。 我尝试通过使用0x0041复位电量监测计来解决该问题、并在配置后将其置于 SEALED 模式(因此 CONTROL_STATUS 寄存器从0x4081变为0x6081)。 调试不给出任何结果、因为其他3个参数给出了正确的值。 我已经尝试将 Operation Config A 放入0x85和0xA5中、我得到了相同的设置。 我还没有执行校准、因为在没有校准的情况下它可以工作。
那么、电量监测计会发生什么情况而无法正常工作?
我读取所有参数的函数用 C 表示:
void gau_readings_get(uint16_t u16_voltage, uint8_t u8_SOH, uint16_t u16_temperature, uint16_t u16_capacity)
{
u16_voltage = gau_volt_read();
u16_temperature = gau_temp_read();
u16_capacity = gau_cap_read();
u8_SOH = gau_SOH_read();
SYSTICK_DelayMs(1000);
}
函数 gau_soh_read()如下:
static uint8_t gau_SOH_read(void)
{
/*Reading variables*/
uint8_t u8_SOH[1];
GAUGE_EN_Clear();
SYSTICK_DelayMs(10);
GAUGE_EN_Set();
SYSTICK_DelayMs(1000);
SERCOM4_I2C_WriteRead((uint16_t) u8SlaveAddr,
u8SOHAddr, (uint32_t) 1,
&u8_SOH[0], (uint32_t) 1);
while(SERCOM4_I2C_IsBusy());
return u8_SOH[0];
}
提前感谢。
卡洛斯