拓冰建站拓冰建站
首页 / 资讯中心 / 正文

[AutoSar] VADC 模块配置及使用说明(一)

目录关键词平台说明背景配置项1.配置项AdcGroupAccessMode ADC组数据模式配置2.配置项AdcAnChannelNum:VADC通道配置3.配置项AdcHwTrigTimer: 硬件触发定时器4.配置项AdcGroupRequestSource组请求源5.配置项AdcGroupId6.AdcNotification7.AdcGtmTimerPeriod8.硬件触发信号配置9. AdcResultAlignment10.通用配置11.中断配置、触发配置12.手动添加代码13./AURIX/Adc/AdcConfigSet/AdcGlobInputClass14.ADC硬件配置15.通道配置16.组配置17.AdcGeneral配置例程关键词嵌入式、C语言、autosar平台说明项目ValueOSautosar OS ,芯片厂商Infineon,TC234编程语言CC编译器tasking回到总目录背景介绍了基于TC234L 芯片和autosar 的VADC模块及其使用。配置项1.配置项AdcGroupAccessMode ADC组数据模式配置配置要点访问方式的类型来组转换结果。在单访问模式下用户只能拥有组通道的一组最新转换结果。在流访问模式下用户可以为组通道配置AdcStreamingNumSamples转换结果集。如果AdcNonAutosarDmaResultHandling设置为False (STD_OFF)则此参数很重要。如果AdcGroupTriggSrc为ADC_TRIGG_SRC_SW, AdcGroupConvMode为ADC_CONV_MODE_ONESHOT则ADC_ACCESS_MODE_STREAMING模式不起作用。依赖的配置项AdcGroupTriggSrcAdcGroupConvModeAdcNonAutosarDmaResultHandling2.配置项AdcAnChannelNum:VADC通道配置说明TC234L非ADAS芯片VADC共有两个内核每个内核分别有12个AN输入通道即内核0有011对应通道号为0到11内核1有011对应通道号为16到27。3.配置项AdcHwTrigTimer: 硬件触发定时器说明由于VADC HW单元中没有嵌入式计时器,所以这个参数是不可配置的。4.配置项AdcGroupRequestSource组请求源REQSRC0_8STG_QUE队列模式REQSRC1_NCH_SCAN通道扫描模式REQSRC2_BGND_SCAN背景扫描模式REQSRC3_8STG_QUE队列模式要用这个模式AdcArbitrationRoundLength项就应该配置为ARBITRATION_SLOTS_85.配置项AdcGroupIdADC0: 0 to 31ADC1: 32 to 63从生成的代码可以看出来6.AdcNotification中断通知函数名称7.AdcGtmTimerPeriod使用TOM模块触发ADC转换时需要在这里写触发时间注意这里的单位是毫秒且可以为浮点数。例如要50us触发一次则填写0.05。8.硬件触发信号配置9. AdcResultAlignment结果对齐模式对ADC结果寄存器的值的位置进行确定左对齐和右对齐两种可选推荐使用右对齐。10.通用配置其中配置项AdcAnalogClockDivider、AdcDigitalArbiterClockDivider决定了转换时间。AdcAnalogClockDivider配置了ADCI时钟分频系数AdcDigitalArbiterClockDivider仲裁时间分频系数 定义了fADCD 值0 最小仲裁时间AdcGlobChSampleTime 通道转换时间即STC的值Standard conversions: tCN (2 STC N DM PC) × tADCI 2 × tADCfast compare mode: tCN (2 STC 2) × tADCI 2 × tADC11.中断配置、触发配置见IRQ、MCU、OS模块12.手动添加代码在Default_Init_Task中添加代码/*设置GTM全局触发*/Gtm_SetTomHostTrigger(1,0);Gtm_SetTomHostTrigger(1,1);Gtm_SetTomHostTrigger(0,GTM_TGC0);/*设置ADC转换结果buffer*/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组通知*/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硬件触发*/Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_1);Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_2);Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_3);Adc_EnableHardwareTrigger(AdcConf_AdcGroup_AdcGroup_0);在runnables中添加代码将结果读取到目标数组中。FUNC(void,TestComNvM_CODE)Runnable_AdcTest(void)/* PRQA S 0850 *//* MD_MSR_19.8 */{/********************************************************************************************************************** * DO NOT CHANGE THIS COMMENT! Start of runnable implementation DO NOT CHANGE THIS COMMENT! * Symbol: Runnable_AdcTest *********************************************************************************************************************/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]);/********************************************************************************************************************** * DO NOT CHANGE THIS COMMENT! End of runnable implementation DO NOT CHANGE THIS COMMENT! *********************************************************************************************************************/}13./AURIX/Adc/AdcConfigSet/AdcGlobInputClass配置项对应寄存器GxICLASS0/1 GLOBICLASSy y0~1相同的子项同理14.ADC硬件配置15.通道配置16.组配置17.AdcGeneral附加若要改变gtm_tom触发时刻初始化后可以调用IfxGtm_Tom_Ch_setCompareShadow(uint8 ModuleNo,uint8 ChannelNo,uint16 Sr0Value,uint16 Sr1Value)改变参数值改变触发时刻。配置例程1.添加子项4个子项各添加一个2、鼠标右键创建AdcConfigSet创建结果如下3、创建容器Adc硬件单元NoticeMCU有多少个ADC内核就创建几个否则就会报错4、创建ADC通道配置5、创建ADC通道组回到总目录
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门