MCAL_VADC配置

一、平台条件

1) 单片机型号:TC234L
2) MCAL_Autosar版本:4.0.3
3) MCAL配置软件: DaVinci Configurator 5.18.29
4) SWC配置软件:DaVinci Developer 4.3
二、配置要求
AD通道分别在ADC0和ADC1两个模块,各硬件模块使用的ADC采样通道如下:
ADC0使用的通道:
MCAL_VADC配置_第1张图片
分为两个组:AdcGroup_0、AdcGroup_1
Group_0配置:
队列模式,Gtm触发
MCAL_VADC配置_第2张图片
MCAL_VADC配置_第3张图片
Group_1配置:
背景模式,Gtm触发
MCAL_VADC配置_第4张图片
在这里插入图片描述
ADC模块0内核配置:
MCAL_VADC配置_第5张图片
ADC1使用的通道:
MCAL_VADC配置_第6张图片
Group2配置:
MCAL_VADC配置_第7张图片
在这里插入图片描述
Group3配置:背景模式 GTM模块触发
MCAL_VADC配置_第8张图片
在这里插入图片描述
容器:AdcGeneral 配置这里要勾选使用到API
MCAL_VADC配置_第9张图片

AdcGlobInputClass0-> AdcGlobChResolution:12bit
AdcGlobInputClass1-> AdcGlobChResolution:12bit

MCU模块配置
触发ADC连接:
MCAL_VADC配置_第10张图片
Tom0 Ch2配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MCAL_VADC配置_第11张图片
触发周期1ms
Tom1Ch8 由于要和PWM波同步,故采用上个通道复位CN0
IRQ配置
背景转换完成中断
在这里插入图片描述
队列中断和扫描模式的中断在这里配置,默认的是SR0,ADC1同理但优先级不一样
在这里插入图片描述

OSISR配置
MCAL_VADC配置_第12张图片
用DaVinci Developer 4.3在任意的一个SWC中创建了一个Runnable:runnable_AdcTest
5ms触发一次
下面就生成代码,由于有SWC的改变,故在configuration PRO中需要按下F7生成SWC代码,和F9生成BSW配置代码
然后在TASK(Default_Init_Task)中添加如下代码

Gtm_SetTomHostTrigger(1,0);
Gtm_SetTomHostTrigger(1,1);
Gtm_SetTomHostTrigger(0,GTM_TGC0);
//Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcGroup_0);
AdcBufferSetupStatus[0]= Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcGroup_0,ADC_HW_GRP_RES_Q0);
AdcBufferSetupStatus[2] = Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcGroup_2,ADC_HW_GRP_RES_Q2);
AdcBufferSetupStatus[1] = Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcGroup_1,ADC_HW_GRP_RES_K1);
AdcBufferSetupStatus[3] = Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcGroup_3,ADC_HW_GRP_RES_K3);
Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcGroup_0);
Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcGroup_1);
Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcGroup_2);
Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcGroup_3);
Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_1);
Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_2);
Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_3);
Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_0);
//Adc_17_StartGtmTimer(AdcConf_AdcGroup_AdcGroup_0);
​ Adc_17_StartGtmTimer(AdcConf_AdcGroup_AdcGroup_1);
然后在新建的SWC中的runnable中添加以下代码:
while( (Adc_GetGroupStatus(AdcConf_AdcGroup_AdcGroup_0)) != ADC_STREAM_COMPLETED);
while( (Adc_GetGroupStatus(AdcConf_AdcGroup_AdcGroup_1)) != ADC_STREAM_COMPLETED);
while( (Adc_GetGroupStatus(AdcConf_AdcGroup_AdcGroup_2)) != ADC_STREAM_COMPLETED);
while( (Adc_GetGroupStatus(AdcConf_AdcGroup_AdcGroup_3)) != ADC_STREAM_COMPLETED);
Demo_AdcNoSamp[0] = (Std_ReturnType)Adc_ReadGroup(AdcConf_AdcGroup_AdcGroup_0, &ADC_HW_GRP_RES_Q0[0]);
​Demo_AdcNoSamp[1] = (Std_ReturnType)Adc_ReadGroup(AdcConf_AdcGroup_AdcGroup_1, &ADC_HW_GRP_RES_K1[0]);
​Demo_AdcNoSamp[2] = (Std_ReturnType)Adc_ReadGroup(AdcConf_AdcGroup_AdcGroup_2, &ADC_HW_GRP_RES_Q2[0]);
Demo_AdcNoSamp[3] = (Std_ReturnType)Adc_ReadGroup(AdcConf_AdcGroup_AdcGroup_3, &ADC_HW_GRP_RES_K3[0]);
贴上劳特巴赫调试的结果:
MCAL_VADC配置_第13张图片
值的位置是根据组中的先后添加顺序来的,最先添加的通道转换结果存放在数组的元素0。

你可能感兴趣的:(Autosar,ADC,MCAL)