/*if add more measure parameters, just need modify bmt_adc_init*/ void bmt_adc_init(void) { kal_uint8 ADC_VBAT_channel, ADC_VISENSE_channel, ADC_VBATTMP_channel; kal_uint8 ADC_VCHARGER_channel; #ifdef MTK_SLEEP_ENABLE bmt_sm_handle = L1SM_GetHandle(); #endif bmt_stop_timer_init(); BMT.VBAT_UEM = VBAT_UEM_CHR_OUT; /*to get customized ADC channel*/ ADC_VBAT_channel=custom_adc_get_channel(vbat_adc_channel); ADC_VISENSE_channel=custom_adc_get_channel(visense_adc_channel); bmt_sche_vbat_id = adc_sche_create_object(MOD_BMT,ADC_VBAT_channel,10,bmt_evaluate_value,KAL_FALSE); bmt_bmtid_adcscheid[ADC_BMT_VBAT] = bmt_sche_vbat_id; bmt_measure_complete1[ADC_BMT_VBAT] = bmt_measure_complete_vbat1; bmt_sche_visense_id = adc_sche_create_object(MOD_BMT,ADC_VISENSE_channel,10,bmt_evaluate_value,KAL_FALSE); bmt_bmtid_adcscheid[ADC_BMT_VISENSE] = bmt_sche_visense_id; bmt_measure_complete1[ADC_BMT_VISENSE] = bmt_measure_complete_visense1; ADC_VBATTMP_channel=custom_adc_get_channel(vbattmp_adc_channel); bmt_sche_vbatemp_id = adc_sche_create_object(MOD_BMT,ADC_VBATTMP_channel,10,bmt_evaluate_value,KAL_FALSE); bmt_bmtid_adcscheid[ADC_BMT_VBATTMP] = bmt_sche_vbatemp_id; bmt_measure_complete1[ADC_BMT_VBATTMP] = bmt_measure_complete_vbatemp1; ADC_VCHARGER_channel=custom_adc_get_channel(vcharger_adc_channel); bmt_sche_vcharger_id = adc_sche_create_object(MOD_BMT,ADC_VCHARGER_channel,10,bmt_evaluate_value,KAL_FALSE); bmt_bmtid_adcscheid[ADC_BMT_VCHARGER] = bmt_sche_vcharger_id; bmt_measure_complete1[ADC_BMT_VCHARGER] = bmt_measure_complete_vcharger1; bmt_gen_complete_flag(); }
/*if add more measure parameters, just need modify bmt_adc_init*/ void bmt_adc_init(void) { ADC_CTRL_GET_PHYSICAL_CHANNEL_T adc_ch; ADC_CTRL_CREATE_OBJECT_T adc_create; DCL_STATUS adc_status; ADC_CTRL_REGISTER_MEASURE_CB_T registerMeasCB; DCL_MULTI_CHANNEL_PARA_T adc_multi_channel_para; #ifdef MTK_SLEEP_ENABLE bmt_sm_handle = L1SM_GetHandle(); #endif bmt_stop_timer_init(); #ifdef __BMT_CHARGE_GUARD_TIME__ bmt_guardtimer_init(); #endif #if defined(__DRV_BMT_ESTIMATIVE_TIMER_ON_TOPOFF__) bmt_estimativetimer_init(); #endif //#if defined(__DRV_BMT_ESTIMATIVE_TIMER_ON_TOPOFF__) BMT.VBAT_UEM = VBAT_UEM_CHR_OUT; /*to get customized ADC channel*/ bmt_adc_handle = DclSADC_Open(DCL_ADC, FLAGS_NONE); if(bmt_adc_handle == DCL_HANDLE_INVALID) { ASSERT(0); } adc_ch.u2AdcName = DCL_VBAT_ADC_CHANNEL; DclSADC_Control(bmt_adc_handle, ADC_CMD_GET_CHANNEL, (DCL_CTRL_DATA_T *)&adc_ch); bmt_multi_channel[BMT_ADC_VBAT] = adc_ch.u1AdcPhyCh; adc_ch.u2AdcName = DCL_VISENSE_ADC_CHANNEL; DclSADC_Control(bmt_adc_handle, ADC_CMD_GET_CHANNEL, (DCL_CTRL_DATA_T *)&adc_ch); bmt_multi_channel[BMT_ADC_VISENSE] = adc_ch.u1AdcPhyCh; adc_ch.u2AdcName = DCL_VBATTMP_ADC_CHANNEL; DclSADC_Control(bmt_adc_handle, ADC_CMD_GET_CHANNEL, (DCL_CTRL_DATA_T *)&adc_ch); bmt_multi_channel[BMT_ADC_VBATTMP] = adc_ch.u1AdcPhyCh; adc_ch.u2AdcName = DCL_VCHARGER_ADC_CHANNEL; DclSADC_Control(bmt_adc_handle, ADC_CMD_GET_CHANNEL, (DCL_CTRL_DATA_T *)&adc_ch); bmt_multi_channel[BMT_ADC_VCHARGER] = adc_ch.u1AdcPhyCh; adc_create.u4Period = 10; // Measurement period (Uint is in Tick) adc_create.u1OwnerId = MOD_BMT; // Indicate the module to for ADC driver to notify the result //adc_create.u1AdcChannel = ADC_VBAT_channel; // To be measured physical ADC channel adc_create.u1EvaluateCount = BMT_EVALUATE_VALUE; // Measurement count adc_create.fgSendPrimitive = KAL_FALSE; // Whether to send message to owner module or NOT adc_status = DclSADC_Control(bmt_adc_handle, ADC_CMD_CREATE_OBJECT, (DCL_CTRL_DATA_T *)&adc_create); if(adc_status != STATUS_OK) { ASSERT(0); } registerMeasCB.pfMeasure_cb = adc_sche_measure; adc_status = DclSADC_Control(bmt_adc_handle, ADC_CMD_REGISTER_MEASURE_CB, (DCL_CTRL_DATA_T *)®isterMeasCB); if(adc_status != STATUS_OK) { ASSERT(0); } adc_multi_channel_para.bEnable = KAL_TRUE; adc_multi_channel_para.u4ADC_ch_number = bmt_multi_channel; adc_multi_channel_para.u4Adc_max_ch_number = BMT_ADC_MAX_CHANNEL_TOTAL; adc_multi_channel_para.complete_multi_cb = bmt_measure_complete; adc_status = DclSADC_Control(bmt_adc_handle, ADC_CMD_SET_MULTI_CHANNEL_READ, (DCL_CTRL_DATA_T *)&adc_multi_channel_para); if(adc_status != STATUS_OK) { ASSERT(0); } #if defined(__DRV_BMT_PRECHARGE_TO_FULL_DIRECTLY__) BMT_VbatInHISR_Init(); #endif //#if defined(__DRV_BMT_PRECHARGE_TO_FULL_DIRECTLY__) }