AnsweredAssumed Answered

ADC hardware trigger using FTM on KV30

Question asked by Christian Lees on Apr 9, 2018
Latest reply on Apr 11, 2018 by Robin_Shen

I can't seem to get the ADC on a KV30 to hardware trigger.  I have tried various clock settings, the surrent setting allow it to software trigger.  I have in interrupt on ADC completion so I can tell if it is working.  The end goal is to use DMA for scan three channels.  The application is a Bidirectional DCDC converter based on a a pair of TI LM5170.  The bus clock is 48MHz.

 

I can't seem to find any documentation that say the ADC can't be triggered from FTM1.

 

Any assistance would be appreciated.

 

#define ADC_PERIOD 10000U // in uS
#define ADC_FTM_BASEADDR FTM1
#define ADC_FTM_SOURCE_CLOCK (CLOCK_GetFreq(kCLOCK_BusClk)/16)

 

adc16_config_t adc16ConfigStruct;
adc16_channel_config_t adc16ChannelConfigStruct;
ADC16_GetDefaultConfig(&adc16ConfigStruct);

adc16ConfigStruct.referenceVoltageSource = kADC16_ReferenceVoltageSourceVref;
adc16ConfigStruct.clockSource = kADC16_ClockSourceAlt0;
adc16ConfigStruct.enableAsynchronousClock = false;
adc16ConfigStruct.clockDivider = kADC16_ClockDivider4;
adc16ConfigStruct.resolution = kADC16_ResolutionSE12Bit;
adc16ConfigStruct.longSampleMode = kADC16_LongSampleDisabled;
adc16ConfigStruct.enableHighSpeed = true;
adc16ConfigStruct.enableLowPower = false;
adc16ConfigStruct.enableContinuousConversion = false;

ADC16_Init( ADC0, &adc16ConfigStruct);

ADC16_DoAutoCalibration( ADC0 );

 

ADC16_EnableHardwareTrigger( ADC0, true);

 

adc16ChannelConfigStruct.channelNumber = ADC_mux[0];
adc16ChannelConfigStruct.enableDifferentialConversion = false;

ADC16_SetChannelConfig( ADC0, 0, &adc16ChannelConfigStruct);

 

 

ftm_config_t ftm_info;
FTM_GetDefaultConfig(&ftm_info);
ftm_info.prescale = kFTM_Prescale_Divide_16;
FTM_Init(ADC_FTM_BASEADDR, &ftm_info);
FTM_EnableInterrupts(ADC_FTM_BASEADDR, kFTM_TimeOverflowInterruptEnable);
FTM_SetTimerPeriod(ADC_FTM_BASEADDR, USEC_TO_COUNT(ADC_PERIOD, ADC_FTM_SOURCE_CLOCK));

SIM->SOPT7 = 0X89; 

FTM_StartTimer(ADC_FTM_BASEADDR, kFTM_SystemClock);

Outcomes