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.

[参考译文] BQ25731EVM:BQ25731 ADC_VBAT_VSYS 未提供反馈

Guru**** 2478845 points
Other Parts Discussed in Thread: BQ25731EVM

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1510002/bq25731evm-bq25731-adc_vbat_vsys-not-giving-feedback

器件型号:BQ25731EVM
主题中讨论的其他器件: BQ25731

工具/软件:

我一直在尝试使用 i2c 命令读取 VBAT 和 VSYS。 我正在使用 BQ25731EVM。

我有2个函数调用。 我可以读取 VBUS 的 ADC 来没问题、结果为5.3V。 但出于任何原因、我得到768mV 作为 VBAT 和 VSYS 的返回值。 我看到 PSYS 和 VBUS 寄存器与读取方法之间没有差异、但 VBAT 和 VSYS 没有提供适当的3.6V 值、显示的值为768mV  

bq25731_dev.set_low_power_mode(0);
result = bq25731_dev.set_adc_enable(EN_ADC_VBAT | EN_ADC_VBUS | EN_ADC_VSYS);
bq25731_dev.set_adc_operation(ADC_START | ADC_FULLSCALE);
delay(75);    //25ms required per EN entry from set_adc_enable

Serial.print("ADC_Option: 0x");
Serial.println(result, HEX);

Serial.print("Input Voltage Voltage: ");
Serial.print(bq25731_dev.get_adc_vbus() * 96);
Serial.println("mV");
Serial.print("SYS Voltage Voltage: ");
Serial.print(bq25731_dev.get_adc_vsys() * 64);
Serial.println("mV");
Serial.print("Battery Voltage: ");
Serial.print(bq25731_dev.get_adc_vbat() * 64);
Serial.println("mV");

struct {
  uint8_t psys;
  uint8_t vbus;
} REG_ADC_VIN;

struct {
  uint8_t vsys;
  uint8_t vbat;
} REG_ADC_VOUT;

Same basic calls:
uint8_t bq25731::get_adc_vbus(void){
  get_adc_vbuspsys();
  return REG_ADC_VIN.vbus;
}

uint8_t bq25731::get_adc_vbat(void){
  get_adc_vsysvbat();
  return REG_ADC_VOUT.vbat;
}

And same basic i2c request:
#define ADC_VBUS_PSYS 0x26
uint16_t bq25731::get_adc_vbuspsys(void){
  dev.i2c_read(ADC_VBUS_PSYS, readBuf, 2);
  REG_ADC_VIN.vbus = readBuf[1];
  REG_ADC_VIN.psys = readBuf[0];

  return (readBuf[1] << 8) + readBuf[0];
}

#define ADC_VSYS_VBAT 0x2C
uint16_t bq25731::get_adc_vsysvbat(void){
  dev.i2c_read(ADC_VSYS_VBAT, readBuf, 2);
  REG_ADC_VOUT.vsys = readBuf[1];
  REG_ADC_VOUT.vbat = readBuf[0];

  return (readBuf[1] << 8) + readBuf[0];
}

输出:

ADC_Option: 0x2043
Input Voltage Voltage: 5376mV
SYS Voltage Voltage: 768mV
Battery Voltage: 768mV

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

    您好、Dominic、

    VSYS 和 VBAT 都有偏移。 请查看数据表中的寄存器部分。  

    此致、

    Tiger

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

    数据表第9.6.10节中列出的失调电压为64mV。 要进行补偿、请在 print 语句中将返回值乘以64。  

    VBUS 寄存器返回值也可以找到相同的偏移、但 LSB 的偏移为96mV。 2个完全相同的寄存器返回和偏移量。 但是、当我将 VBUS 的返回值乘以它时、我会得到正确的值;当我将 VSYS/VBAT 乘以其偏移量时、我无法获得正确的值。

    是否有一些我不注意的电芯数次级偏移。 我确实将电芯数跳线设置为1S、将 VBAT 设置为3.6V

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