Trigger_ADC

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);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值