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)
本文以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
评论
plain life
2021年8月18日
Ken Xiao
2020年4月1日