TI中文支持网
TI专业的中文技术问题咨询交流网站

CC2650的 AONBatMonBatteryVoltageGet函数返回的数值怎样转换成电池电压?

如题,函数如下

__STATIC_INLINE uint32_t
AONBatMonBatteryVoltageGet(void)
{
uint32_t ui32CurrentBattery;

ui32CurrentBattery = HWREG(AON_BATMON_BASE + AON_BATMON_O_BAT);

//
// Return the current battery voltage measurement.
//
return (ui32CurrentBattery >> AON_BATMON_BAT_FRAC_S);
}

返回值是838,请问转换成电池电压是多少,怎样计算

Viki Shi:

//Get battery voltage (this will return battery voltage in decimal form you need to convert)
BATstatus = AONBatMonBatteryVoltageGet();

// convert in Milli volts
BATstatus = (BATstatus * 125) >> 5;

//convert in floating point value
BATvoltage = (float)BATstatus / 1000;

user1388075:

回复 Viki Shi:

计算出是3.27的样子,这是电池的电压么?我电池3.7v的样子。

要用这个函数是不是电路要做适配才行?

Viki Shi:

回复 user1388075:

电池电压会变化,你有精确测量过吗?这个误差有点大了,一般在50mv以内

user1388075:

回复 Viki Shi:

我用台表测的。
调用这个函数 AONBatMonBatteryVoltageGet(),硬件上难道不需要任何接线处理么?

我始终无法理解芯片是怎样测出电池电压的,电池输出给稳压芯片后,才间接给蓝牙芯片供电, 蓝牙芯片不可能知道前面的电池电压是多少啊?

Viki Shi:

回复 user1388075:

硬件上如果有个稳压电路自然更好,请参考TRM第18章获取电池监测的更多信息:www.ti.com/…/swcu117i.pdf

user1388075:

回复 Viki Shi:

稳压电路肯定是有的。为什么算出来的不是电池电压呢

Viki Shi:

回复 user1388075:

battery monitor测量的是VDDS脚的电压,你实测的是这个引脚吗?

user1388075:

回复 Viki Shi:

我要测的是电池正负极之间的电压,查看设备剩余电量情况。不关心VDDS的电压

Albin Zhang:

回复 user1388075:

如果中间有稳压芯片的话,battery monitor不能直接用了。
如果电池电压比芯片供电电压高,你也不能直接用ADC测量。最廉价的方式就是电阻分压。
BR. AZ

user1388075:

回复 Albin Zhang:

电池电压范围是3.7-4.2V, VDDS脚接入的电压范围是0-3.3V么, 你的意思是在电池上用电阻分压接到VDDS引脚上,比如分压一半, 那么VDDS的实际接入的电压范围就是1.25V到2.1V了。

赞(0)
未经允许不得转载:TI中文支持网 » CC2650的 AONBatMonBatteryVoltageGet函数返回的数值怎样转换成电池电压?
分享到: 更多 (0)