概述
配置概述
基于TC397、EB tresos 23.00。
- 首先,在 AUTOSAR PORT 的配置中将相应的 Pin 配置为复用,并配置相应的电气属性;
- 在 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使用简述
- 根据配置定义result buffer,uint16 AdcSWGroup0_resultBuffer[通道数][AdcStreamingNumSamples]。如,以上配置:uint16 AdcSWGroup0_resultBuffer[8][5]。
- Enable AdcGroup:Adc_EnableGroupNotification(AdcConf_AdcGroup_AdcSWGroup_0);
- Set result buffer for AdcGroup:Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcSWGroup_0, (void *)AdcSWGroup0_resultBuffer);
- Start AdcGroup conversion:Adc_StartGroupConversion(AdcConf_AdcGroup_AdcSWGroup_0);
- 一轮转换完成(全部通道完成一次转换)后,触发中断,中断调用Notification,在Notification中可添加用户代码,如,Stop AdcGroup conversion。
- Stop AdcGroup conversion:Adc_StopGroupConversion(AdcConf_AdcGroup_AdcSWGroup_0);
- Access result:Adc_GetStreamLastPointer()/Adc_ReadGroup(); 或者直接访问 AdcSWGroup0_resultBuffer[8][5];
- Set result buffer for AdcGroup:Adc_SetupResultBuffer(AdcConf_AdcGroup_AdcSWGroup_0, (void *)AdcSWGroup0_resultBuffer);
- Start AdcGroup conversion:Adc_StartGroupConversion(AdcConf_AdcGroup_AdcSWGroup_0);
- ......