概述

配置概述

基于TC397、EB tresos 23.00。

  1. 首先,在 AUTOSAR PORT 的配置中将相应的 Pin 配置为复用,并配置相应的电气属性;
  2. 在 AUTOSAR ADC 中对 ADC 进行配置;

配置 AUTOSAR ADC

General

AdcSystemClock:ADC 时钟,配置来自MCU模块。

AdcResultAlignment:采样结果对齐方式。

AdcMaxChConvTimeCount (0 -> 16962) :ADC channel 的最大转换时间,单位:1/(ADC时钟/ADC分频系数)。

AdcChannelValueSigned:ADC channel 采样值是否是符号数。

AdcMaxChannelResolution:ADC channel 采样的精度(按bit)。

AdcHwUnit

AdcHwUnit中的每一条对应MCU中的一个 ADC 硬件,如TC397的ADC0(G0)。

AdcPrescale:该ADC硬件的预分频系数,该AdcHwUnit的时钟频率 = AdcSystemClock / AdcPrescale。

AdcHwUnitInputClass:在这配置ADC channel 的采样时间。

AdcChannel

AdcHwUnit下的 ADC 通道。

如:AdcHwUnit_0/AdcChannel_0对应TC397的ADC0/CH0(G0CH0)。

AdcAnChannelNum:具体的ADC硬件通道。

AdcInputClassSelection:这里引用AdcHwUnitInputClass,含通道采样时间。

AdcGroup

  • AdcGroupAccessMode:AdcGroup 结果访问模式,如:ADC_ACCESS_MODE_STREAMING(流模式)、ADC_ACCESS_MODE_SINGLE(单模式)。
  • AdcGroupConversionMode:AdcGroup 转换模式,连续转换(ADC_CONV_MODE_CONTINUOUS)、单次转换(ADC_CONV_MODE_ONESHOT)。
  • AdcGroupTriggSrc:AdcGroup 转换的触发模式:硬件触发、软件触发。
  • AdcStreamingBufferMode:AdcGroup Buffer 的形式,线性。
  • AdcStreamingNumSamples (1 -> 255):AdcGroupAccessMode和AdcStreamingNumSamples 决定用户需要提提供的result buffer的大小。AdcGroupAccessMode = ADC_ACCESS_MODE_STREAMING,则result buffer = 通道数 * AdcStreamingNumSamples;AdcGroupAccessMode = ADC_ACCESS_MODE_SINGLE,则result buffer = 通道数。
  • AdcNotification:Notification(类似中断)函数,当一轮转换(组中全部通道转换完成)后,中断触发,然后该Notification会被调用。
  • AdcGroupDefinition:该组所含的ADCChannel。
  • AdcHwTrigSignal:当该通道是硬件触发时,需配置触发信号。
  • EruTriggerConfig/EruGatingConfig/GtmTriggerTimerConfig/GtmGatingTimerConfig:当该通道是硬件触发时,需配置其中一个。

软件触发的AdcGroup使用简述

  1. 根据配置定义result buffer,uint16 AdcSWGroup0_resultBuffer[通道数][AdcStreamingNumSamples]。如,以上配置:uint16 AdcSWGroup0_resultBuffer[8][5]。
  2. Enable AdcGroup:Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcSWGroup_0);
  3. Set result buffer for AdcGroup:Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcSWGroup_0, (void *)AdcSWGroup0_resultBuffer);
  4. Start AdcGroup conversion:Adc_StartGroupConversion(AdcConf_AdcGroup_AdcSWGroup_0);
  5. 一轮转换完成(全部通道完成一次转换)后,触发中断,中断调用Notification,在Notification中可添加用户代码,如,Stop AdcGroup conversion。
  6. Stop AdcGroup conversion:Adc_StopGroupConversion(AdcConf_AdcGroup_AdcSWGroup_0);
  7. Access result:Adc_GetStreamLastPointer()/Adc_ReadGroup(); 或者直接访问 AdcSWGroup0_resultBuffer[8][5];
  8. Set result buffer for AdcGroup:Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcSWGroup_0, (void *)AdcSWGroup0_resultBuffer);
  9. Start AdcGroup conversion:Adc_StartGroupConversion(AdcConf_AdcGroup_AdcSWGroup_0);
  10. ......