s32k144 PDB1 trigger ADC1_SE6

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

s32k144 PDB1 trigger ADC1_SE6

415 Views
qiminggong
Contributor II

S2k144 uses ADC1-se6 for ad sampling, now I use PDB1 to trigger AD1_SE6. The reason for not working?

========================================================================

const pdb_adc_pretrigger_config_t pdb_config_1_adcTrigConfig0 = {
.adcPreTriggerIdx = 0U,
.preTriggerEnable = true,
.preTriggerOutputEnable = true,
.preTriggerBackToBackEnable = false
};

const adc_converter_config_t adc_config_1_ConvConfig0 = {
.clockDivide = ADC_CLK_DIVIDE_1,
.sampleTime = 255U,
.resolution = ADC_RESOLUTION_12BIT,
.inputClock = ADC_CLK_ALT_1,
.trigger = ADC_TRIGGER_HARDWARE,
.pretriggerSel = ADC_PRETRIGGER_SEL_PDB,
.triggerSel = ADC_TRIGGER_SEL_PDB,
.dmaEnable = false,
.voltageRef = ADC_VOLTAGEREF_VREF,
.continuousConvEnable = false,
.supplyMonitoringEnable = false
};

adc_chan_config_t adc_config_1_ChnConfig0 = {
.interruptEnable = true,
.channel = ADC_INPUTCHAN_EXT6


/*! @brief PDB timer configurations */
const pdb_timer_config_t pdb_config_1_timerConfig0 = {
.loadValueMode = PDB_LOAD_VAL_IMMEDIATELY,
.seqErrIntEnable = false,
.clkPreDiv = PDB_CLK_PREDIV_BY_128,
.clkPreMultFactor = PDB_CLK_PREMULT_FACT_AS_10,
.triggerInput = PDB_SOFTWARE_TRIGGER,
.continuousModeEnable = false,
.dmaEnable = false,
.intEnable = false,
.instanceBackToBackEnable = false,
};

void ADC_IRQHandler(void)
{
if(ADC_DRV_GetConvCompleteFlag(INST_ADC_CONFIG_1, 6U))
{

ADC_DRV_GetChanResult(INST_ADC_CONFIG_1,6U,&adcRawValue);
adcConvDone = true;
}
}

int main()
{

CLOCK_DRV_Init(&clockMan1_InitConfig0);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);

ADC_DRV_ConfigConverter(INST_ADC_CONFIG_1, &adc_config_1_ConvConfig0);
ADC_DRV_AutoCalibration(INST_ADC_CONFIG_1);
INT_SYS_InstallHandler(adcIRQ, &ADC_IRQHandler,(isr_t*) 0);
EDMA_DRV_Init(&dmaController_State, &dmaController_InitConfig, edmaChnStateArray, edmaChnConfigArray, EDMA_CONFIGURED_CHANNELS_COUNT);

 

PDB_DRV_Init(INST_PDB_1,&pdb_config_1_timerConfig0);
PDB_DRV_Enable(INST_PDB_1);
PDB_DRV_SetTimerModulusValue(INST_PDB_1,37500);
PDB_DRV_ConfigAdcPreTrigger(INST_PDB_1,0UL,&pdb_config_1_adcTrigConfig0);


PDB_DRV_SetAdcPreTriggerDelayValue(INST_PDB_1,0UL,0UL,37500);
PDB_DRV_LoadValuesCmd(INST_PDB_1);
PDB_DRV_SoftTriggerCmd(INST_PDB_1);

INT_SYS_EnableIRQ(adcIRQ);

while(1)
{

if(adcConvDone == true)
{
adcConvDone = false;
PDB_DRV_SoftTriggerCmd(INST_PDB_1);}
}
}

 

Tags (1)
0 Kudos
0 Replies