请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:BQ28Z620 主题中讨论的其他器件: BQ25798、 BQSTUDIO
工具/软件:
目前、我们已将贵公司的 BQ28Z620 芯片与 BQ25798 芯片配合用于实际工程。 但是、我们发现了一个问题、即电路板在开启时应该具有 70°–80mA 的电流、但我们使用 bq28z620 读回的数据为 0、并且我们 EE 同事在 BQStudio 上读回的数据是 80mA
一段时间后、电流如图所示
我想问、造成这种情况的可能原因是什么
逻辑分析仪读取的相关代码和数据如下
#define BQ28Z620_CMD__CURRENT 0x0C
static int read_reg(const msdk_device_t *dev, uint8_t reg, uint8_t *value, uint8_t size)
{
int ret = MSDK_STATUS__ERROR;
const bq28z620_cfg_t *const dev_config = (const bq28z620_cfg_t *const)dev->config;
ret = msdk_i2c_read_reg(dev_config->i2c_dev, dev_config->i2c_addr, reg, value, size);
return ret;
}
static int read_current(const msdk_device_t *dev, int16_t *milli_ampere)
{
uint8_t current_data[2] = {0};
int res = MSDK_STATUS__ERROR;
res = read_reg(dev, BQ28Z620_CMD__CURRENT, current_data, sizeof(current_data));
if (MSDK_STATUS__OK == res) {
uint16_t raw_value = (current_data[0] << 8) | current_data[1];
if(!(raw_value & 0x8000)) {
*milli_ampere = (int16_t)raw_value;
} else {
*milli_ampere = -(int16_t)(raw_value & 0x7FFF);
}
}
return res;
}
msdk_status_t bq28z620_property_get(const msdk_device_t *dev,
msdk_fuel_gauge_property_t prop,
msdk_fuel_gauge_propval_t *val)
{
MSDK_ASSERT(dev != NULL);
MSDK_LOG_DBG("bq28z620_property_get: dev 0x%08x, prop %d", dev, prop);
int res = MSDK_STATUS__ERROR;
switch(prop) {
case MSDK_FUEL_GAUGE_PROP_CURRENT: {
int16_t mA = 0;
res =read_current(dev, &mA);
val->current = (int32_t)mA;
}
break;
default:
res = MSDK_STATUS__NOT_SUPPORTED;
break;
}
return res;
}
此致!
光圈