Esempio n. 1
0
/*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();

}
Esempio n. 2
0
/*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 *)&registerMeasCB);	
   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__)
}