CC2541采用TPS61220提供稳定的3.0V供电,所以,ADC的参考源我选取了HAL_ADC_REF_AVDD
P0_7为纽扣电池电压检测管脚(通过2kohm串阻接入),实现代码:
HalAdcSetReference( HAL_ADC_REF_AVDD );
adc = HalAdcRead( HAL_ADC_CHN_AIN7, HAL_ADC_RESOLUTION_10 );
计算方法:设置3.0V为511 对应100%电量,计算得到2.0V的ADC值为341,对应0%电量,由此得出:
(ADC-341)/(511-341)=persent / 100
—>percent = (uint8) (adc – 341) * 100 /170;
我这样计算方法对吗?但实测误差很大,万用表测试为2.808V,而读到的电量为52%(理应为80.8%)
answer:
电池的电压与电量之间的对应关系是非线性的,不能简单的用电压的变化来反映容量,建议使用一个gauge芯片来专门的计算电池的剩余电量
user5014962:
回复 answer:
但现在问题是电压检测就非常不准
da qin zheng sheng:
为啥串联2k电阻?
da qin zheng sheng:
现在纽扣电池电压是多大?电源管理芯片输出电压一直是3伏吗?
user5014962:
回复 da qin zheng sheng:
串阻为了限流
电源管理芯片输出稳定,但蓝牙发射时会有少量波动