IfxVadc_Adc g_vadc;
IfxVadc_Adc_Group g_adcGroup;
IfxVadc_Adc_Channel g_adcChannel;
#define MODULE_VADC /lint --e(923)/ ((Ifx_VADC)0xF0020000u)
void init_vadc(void)
{
/* Create configuration */
IfxVadc_Adc_Config adcConfig;
IfxVadc_Adc_initModuleConfig(&adcConfig, &MODULE_VADC);
/* Initialize module */
IfxVadc_Adc_initModule(&g_vadc, &adcConfig);
/* Create and initialize group configuration with default values */
IfxVadc_Adc_GroupConfig adcGroupConfig;
IfxVadc_Adc_initGroupConfig(&adcGroupConfig, &g_vadc);
/* Setting user configuration using group 0 */
adcGroupConfig.groupId = IfxVadc_GroupId_5; /* Select the VADC group */
adcGroupConfig.master = adcGroupConfig.groupId; /* Select the master group */
// adcGroupConfig.arbiter.requestSlotScanEnabled = TRUE; /* Enable scan source */
adcGroupConfig.arbiter.requestSlotQueueEnabled = true;
adcGroupConfig.queueRequest.requestSlotPrio = IfxVadc_RequestSlotPriority_low; /* Queue */
adcGroupConfig.scanRequest.requestSlotPrio = IfxVadc_RequestSlotPriority_high; /* Scan*/
adcGroupConfig.backgroundScanRequest.requestSlotPrio = IfxVadc_RequestSlotPriority_lowest; /* Background scan*/
adcGroupConfig.scanRequest.autoscanEnabled = FALSE; /* Disable auto scan */
/* Prerequisite for enabling the ADC conversion (due to the fact that in this example the gating signal is
* not used)
*/
adcGroupConfig.queueRequest.triggerConfig.gatingMode = IfxVadc_GatingMode_always;
adcGroupConfig.queueRequest.triggerConfig.gatingSource = IfxVadc_GatingSource_1; //!
/* Configure the VADC module to trigger a conversion based on CCU6 timer period match event */
/* Trigger 0 is connected to CCU6 ServiceRequest_3 line */
adcGroupConfig.queueRequest.triggerConfig.triggerSource = IfxVadc_TriggerSource_15; //!
/* Select the trigger event type */
adcGroupConfig.queueRequest.triggerConfig.triggerMode = IfxVadc_TriggerMode_uponRisingEdge;
/* Set that requests with higher priority cancel a running lower priority conversion */
adcGroupConfig.queueRequest.requestSlotStartMode = IfxVadc_RequestSlotStartMode_cancelInjectRepeat;
// adcGroupConfig.scanRequest.requestSlotPrio = IfxVadc_RequestSlotPriority_high;
/* Initialize the VADC group */
IfxVadc_Adc_initGroup(&g_adcGroup, &adcGroupConfig);
/* Create channel configuration */
IfxVadc_Adc_ChannelConfig adcChannelConfig;
IfxVadc_Adc_initChannelConfig(&adcChannelConfig, &g_adcGroup);
adcChannelConfig.channelId = (IfxVadc_ChannelId) (0); /* Select the VADC channel */
adcChannelConfig.resultRegister = (IfxVadc_ChannelResult) (0); /* Use dedicated result register */
/* Interrupt for sending the data via UART */
adcChannelConfig.resultPriority = 4; /* Set the VADC interrupt priority */
adcChannelConfig.resultServProvider = IfxSrc_Tos_cpu0; /* Set the VADC interrupt service provider */
// adcChannelConfig.resultSrcNr = IfxVadc_SrcNr_shared0;
// adcChannelConfig.synchonize = 1;
/* Initialize the channel */
IfxVadc_Adc_initChannel(&g_adcChannel, &adcChannelConfig);
/* Add the selected channel to the scan sequence */
uint32 channels = (1 << adcChannelConfig.channelId); /* Set the bit corresponding to the input channel of the */
uint32 mask = channels; /* respective group to take part in the scan sequence. */
IfxVadc_Adc_addToQueue(&g_adcChannel, IFXVADC_QUEUE_REFILL|(1<<7));
}
uint32_t cnt2;
IFX_INTERRUPT(ISR_ADC_result, 0, 4);
void ISR_ADC_result(void)
{
cnt2 ++;
HAL_setLedToggle();
/* Get the result from the VADC result register and print it using the UART communication */
// Ifx_VADC_RES conversionResult = IfxVadc_Adc_getResult(&g_adcChannel);
// HAL_FastSampleData_t halFastSampleData;
// HAL_readFastSampleData(&halFastSampleData);
}