如何读取QCC3020的VCHG 脚的电压来修改从充电盒中取出耳机的开机逻辑

QCC3020的earbuds默认程序是把耳机放进充电盒中充电,当充满电后,耳机并不会关机,这样静态消耗电流就比较大, 长期放置会消耗完充电盒中的电量导致耳机取出后无法开机现象。还有一种情况是,当耳机充满电后,充电盒的5V电压会截止输出并把5V电压往下降低,以节省待机电流消耗,可以节省一半以上的待机电流,这同样需要随时侦测VCHG充电脚的电压,以便应用层软件去处理客户想要的功能。

本文以ADK6.3来说明如何读取QCC3020的VCHG 脚的电压:

1、 通过“bool AdcReadRequest(Task task, vm_adc_source_type adc_source, vm_adc_extra_flag extra_flag, uint16 delay);”ADC API 可以获取VCHG 引脚电压值数据

/*******************************************************************/
AdcReadRequest(task, adcsel_pmu_vchg_sns, 0, 0);
case MESSAGE_ADC_RESULT:
if(((MessageAdcResult*)message)->adc_source == adcsel_pmu_vchg_sns)
{
uint16 new_voltage = ((MessageAdcResult*)message)->reading;
}


上面是读取adc 下面是返回的消息,消息里面带有电压值
/****************************************************************/

Eg:
2、 在av_headset_battery.c 文件修改:
    1)、在enum headset_battery_internal_messages 里添加自己的数据:





MESSAGE_VCHG_VOLTAGE_DEVIN,


     2)、在void appBatteryHandleMessage(Task task, MessageId id, Message message)函数里面添加:



case MESSAGE_VCHG_VOLTAGE_DEVIN:
AdcReadRequest(task, adcsel_pmu_vchg_sns, 0, 0); //读取VCHG 电压
break;
case MESSAGE_ADC_RESULT:
/*******************/
if(((MessageAdcResult*)message)->adc_source == adcsel_pmu_vchg_sns)

{
uint16 new_voltage = ((MessageAdcResult*)message)->reading;
DEBUG_LOGF("adcsel_pmu_vchg_sns === %x ----------------------", new_voltage);
}
break;


     3)、在void appBatteryScheduleNextMeasurement(batteryTaskData *battery)函数下添加消息发送函数:



MessageSendLater(&battery->task, MESSAGE_VCHG_VOLTAGE_DEVIN, NULL, 3000); //DEVIN


3、 更多测试我们获取到上述new_voltage 的值范围:
VCHG 电压:(500 代表0.1V step)
5.2v ----> 0x5bf2 23538
5.0v ----> 0x5832 22578
4.9v ----> 0x5622 22050
4.8 ----> 0x5472 21618
4.5v ----> 0x4f2c 20268
4.2v ----> 0x49ec 18924
4.1v ----> 0x486c 18540
3.7v ----> 0x414c 16716
3.5v ----> 0x3dec 15852
3.2v ----> 0x396c 14700
3.0v ----> 0x393c 14652
2.9v ----> 0x38a4 14500
2.8v ---->              12590
0v ---->                 0


 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

plain life

plain life

2021年8月18日
没看出来MESSAGE_ADC_RESULT这个消息从哪里发出来的
Ken Xiao

Ken Xiao

2020年4月1日
Aaron君,假定耳机被充满盒子并不断电亦不降压,为了省电是否意味着耳机需要进入dormant?(我想此时不太可能power off)。但检视appPowerEnterDormantMode()代码发现必须先禁掉充电appChargerForceDisable()。然后耳机从充电盒拿出不能因VCHG掉电唤醒了。请教你VCHG读取后的作何用?