TC3xx系列芯片--EVADC模块介绍

1、EVADC模块介绍

对于汽车芯片来说,模数转换(Analog Digixtal Conversion,ADC)是一个必不可少的功能,无论是功能安全的电压监控,还是板载传感器的信号交互,都离不开ADC模块。

Infineon Aurix2G TC3XX中有两个ADC模块,一个是DSADC,该模块转换速度快,主要为了配合旋变控制器进行电机控制;另一个就是本文要介绍的增强型多功能模数转换器,采用逐次逼近式转换原理进行模式转换。

逐次逼近式转换,当开始采样时,将SAR寄存器的最高位置1,其余位清零,并由DAC输出与该值匹配的电压,与输入电压进行比较,若输入电压大于该电压,则保留最高位,否则最高位清零;然后向次高位向最低位,循环这个反馈调节,直到最低位比较完毕,此时得到的SAR寄存器就是采样值。假设SAR的位宽为N,此时电压值为Vin=VREF*SAR/2^N,采样误差为Verr=VREF/2^N。位宽越高则精度越高,但同时也意味着转换时间越长。原理如下图:

2、模块功能介绍

2.1、模块概括

EVADC模块内部有多个硬件转换单元,每个单元都包含采样、转换模块,能够独立进行AD转换。每个硬件转换单元可服务多个通道,这些通道由多路连接器连接到转换单元上,用户可灵活配置每个转换单元的转换通道。

每个硬件转换单元都是独立工作的,它所包含的通道可灵活进行组合,即Adc Group

EVADC模块包含三个簇,每个簇有多个硬件转换单元,按特性分为三组:

1、Primary converter cluster:主转换簇,配备8:1多路选择器,8阶段转换序列,最低0.5us转换时长;

2、Second converter cluster:次转换簇,配备16:1多路选择器,16阶段转换序列,最低1us转换时长;

3、Fast compare cluster:快速比较簇,单通道,更新速率最快0.2us;

ADC模块的总时钟来源于fADC,除了用于ADC模块的转换时钟源以外,还可以用于仲裁、不同单元的同步等功能。每个硬件转换单元有独立的时钟分频器DIVA(GxANCFG.DIVA),用于分出转换模块使用的时钟频率fADCI。计算公式为fADCI=fADC/(DIVA+1)。fADCI时钟频率一般为20MHz--40MHz,不宜太高,否则噪声过大。

fSPB时钟用于CPU对ADC模块的寄存器访问时钟。

硬件转换单元可以设置4种转换模式,通过单元内部的GxARBCFG.ANONS寄存器决定:

  • ANONS = 11b:Normal Operation,普通模式,硬件转换单元持续处于工作状态,出现转换请求就能够立刻执行。
  • ANONS = 10b:Fast Standby mode,待机快速模式,当没有转换请求时,硬件单元会进入休眠模式,出现转换请求时会被自动唤醒,唤醒的延时大约为1us;但能够降低低功耗;
  • ANONS = 01b:SlowStandby mode,待机慢速模式,当没有转换请求时,硬件单元会进入休眠模式,当出现转换时会被自动唤醒,唤醒的延时大约为5us;但最大程度降低功耗;
  • ANONS = 00b:Converter switched Off,关机模式,复位或启动之后默认模式,转换请求之前需要先设置ANONS以离开关机模式;

以上四种模式中有三种工作模式,普通模式是最常用也是最简单的模式,若对功耗有较为严格的要求,可以考虑后续两种模式,但要充分衡量系统对转换实时性的要求。若要求采样频率仅为毫米级,则结合GTM等定时器进行定时触发即可。

2.2、ADC kernel 硬件转换单元结构

单个硬件转换单元,它的功能框图如下图所示:

它的外部连接主要有以下部分:

  • Analog reference ground VAGND:ADC参考GND;
  • Analog reference voltage VAREF:ADC参考电压,也就是ADC采样的量程;
  • Analog input channels CHx:ADC输入通道,也就是被测源;
  • Extrn.multiplexer control EMUX:多路复用控制器,配合外部复用开关使用,一般很少使用。

它的内部主要有以下几个模块:

  • Request Control:请求控制器,主要负责处理转换请求,仲裁等;
  • AD Converter:AD转换器,主要负责逐次逼近转换的实现;
  • Input Channel Selection:输入选择器(图中的通道输入连接处),用于实现通道组合,也就是我们说的Adc Group
  • Conversion Control:转换控制器,主要负责转换模式的设置,如滤波,预充等;
  • Result Handling:结果处理器;
  • Interrupt Generation:中断发生单元,主要用于向IR模块产生中断信号;

当软件或者硬件向一个EVADC模块发送请求,由请求控制器进行仲裁和处理,然后由转换控制器根据配置来控制对应的通道转换,然后由AD转换器进行AD转换,最终结果输入到结果处理器中,并通过中断发生单元根据对应的事件触发中断。

2.2.1Request Control

请求控制器如下图所示:

每个硬件转换单元内部有三个可配置的转换请求源,可以配置为多种来源,有硬件触发如GTM定时采样、软件触发、ADC内部定时器触发。由于每个ADC硬件可能存在多个Adc Group,多个Group同时进行请求的时候则需要仲裁(使能了优先级的情况),请求控制器中存在仲裁处理单元,能够对多个同时到达的请求进行仲裁,当一个高优先级请求到达,而当前优先级请求正在执行时,根据配置有三种处理方式:

在我们平常使用ADC时,一般一个ADC转换单元里只配置一个Group,该Group包含了这个转换单元里的所有通道,ADC请求一次则会执行所有通道,因此很少会用到优先级。

2.2.2Input Channel Selection

我们看到转换控制器中有三个转换源(Request Source),这里对应我们的Group,当我们在一个Group里配置包含哪些通道,最终硬件设置的是这三个转换源。即每个转换源转换哪些通道,在Group中设定好了,我们只需请求该转换源,就可以执行对应Group中所有通道的转换。

2.2.3Conversion Control

转换控制这里包含了通道转换的相关参数,包括充能时间、降噪模式等、全部包含在InputClass中。

2.2.4Analog/Digital Converter

Converter是实现逐次逼近转换的物理单元,执行通道的采样转换。当选定通道之后,AD转换器中有一个采样-保持单元,连接到SAR上,将逐次逼近的采样结果输送到结果处理单元中。

2.3.5Result Handling

每个ADC通道有16个结果寄存器,转换通道与结果寄存器的连接关系是可以灵活连接的。例如只选了通道1、4、7,可以选择把他们的结果依次存放到结果寄存器1、2、3中。若使用了wait-for-read模式,每次结果产生后若没有被读取(软件或DMA读取),则下一次转换请求会被拒绝。另外结果寄存器还能构成FIFO队列,而不是直接覆盖。

其中需注意的是,EVADC的转换精度是12bit,但是结果寄存器是16位宽,默认模式下可以选择使用前12位或者后12位,若使用了累积模式,也就是多次采样取均值,则能够启用全部16位。

2.2.6Service Request Generation

TriCore架构中中断称为服务请求(Service Request)。ADC模块能够产生三个类型的中断:

  • Source Event:转换请求完成中断,当一个源请求完成后,向IR模块发送中断信号;每个硬件转换单元有4个中断输出信号,一般前三个配置为三个Source对应的中断信号;
  • Channel Event:通道转换完成事件,这个中断事件可以和结果限制检查配合使用,当某个通道的结果位于我们指定的范围时,(一般是过高或过低),可以产生中断信号;
  • Result events:结果可用事件,这个中断是配合累积转换序列使用的,累积转换的结果是多次的,因此如果使用该模式,以结果可用事件的中断信号为准。

这里需要注意,EVADC的中断信号并不是固定连接的,而是可以灵活配置的。

对于硬件单元内部来说,因为一个硬件单元有三个内部的请求源,所以可以产生三个Source Event中断信号;有8/16个通道,可以产生对应数量的Channel Event中断信号。

每个硬件单元有4个中断输出引脚(Service Request Output Line),这些引脚向外连接到中断路由器中。用户可以通过配置,选择如何使用这4个中断引脚。

2.3、转换请求与仲裁

2.3.1、转换请求的产生

在AD转换的使用中,最常用的是一个转换请求执行一组通道转换,而这组通道需要一个载体,告诉硬件哪些通道是需要执行的,其顺序如何,这个载体就是转换队列(Request Queue)。主转换簇中的硬件单元支持8级队列(通道数也为8),次转换簇最多支持16级队列(通道数为16),因此一个队列能够完成所有通道转换的配置。

前面我们提到,一个硬件转换单元内部有3个转换源控制单元,每个转换源控制单元内部结构如下:

在框图的右上角,我们可以看到一个队列,在请求转换之前,需要先配置队列。向GxQINRi(x为硬件单元,i为请求源)寄存器写入通道的相关配置,就会将通道请求压入队列中。

QINR的具体位域内容根据通道配置设置即可。

在MACL代码中队列的最后一条通道请求的中断服务请求GxQINRi.ENSI需打开,以发送队列转换完成信号。如果是硬件触发,则队列第一条的GxQINRi.EXTR需置位,以等待硬件触发。

另外若硬件触发或者软件触发连续转换,则需要将GxQINRi.RF置位,这样每个完成的转换会自动回到队列末尾,以实现自动填充,无需软件重复操作。

若需要硬件触发,则需要在GxQCTRLi(x为硬件单元,i为请求源)寄存器配置相应的触发设置。

触发方式

EVADC转换请求的触发方式一共有三种:

  • 软件触发:由软件通过写寄存器执行一次转换请求,GxQMRi.TREV = 1;
  • 内部定时器触发:EVADC硬件转换单元提供了内部定时器,用于定时触发,但是位宽仅10位,而ADC的频率一般为MHz级别,所以能够实现的延时仅微秒级别,所以一般不使用该方式;
  • 外部触发:这种触发的可配置性非常强,能够通过多种方式触发,包括但不限于外部引脚、GTM定时器触发;

另外转换的请求可选择单次还是连续,单次的每次转换都需要一次触发;连续模式下一旦触发就会连续进行转换。

2.3.2、转换请求仲裁

通常情况下我们一个硬件单元只设置一个Group,对应到请求源0。但是在某些场景下,受限于硬件电路设计,功能需求等因素,我们会应对同一硬件单元中存在不同请求源,且需要按照优先级来进行处理的情况。这个时候我们就会用到EVADC的请求仲裁功能。

我们可以通过寄存器GxARBPR来配置不同请求源的优先级,这样在多个请求同时出现的时候,仲裁单元就会选取优先级最高的先进行处理。

另外值得一提的是,如果使用了跨硬件单元同步处理功能,则该同步触发源的优先级是最高的。

2.4、硬件转换流程

本节我们介绍下转换的流程,这些流程是转换请求被接收后,由硬件执行的,无需软件操作。但若熟悉了这些流程后,读者-能够更好地理解ADC模块的功能和相关配置。

系统启动后,硬件会进行AD转换器的标定,以对转换进行校准,该流程仅在初始化阶段执行。

在允许阶段,当接收到转换请求,并完成仲裁之后,硬件即开始进行AD转换。AD转换包括4个步骤:充能、转换、降噪、和后标定。其中采样和转换是必须的,降噪和后标定是可选的。

2.4.1、初始化标定流程

在硬件转换单元启动之后,会按照用户设定的时间(GxANCFG.CALSTC)进行标定,该操作只在启动阶段执行一次,后续转换不在执行。转换时间计算公式如下:

计算机生成了可选文字: =256×((4+2xCALSTC)×00+5×%DC)I SUCAL

其中:

t(ADC) = 1/f(ADC)

t(ADCI) = t(ADC) * (DIVA +1)

向GLOBCFG.SUCAL写1执行标定流程。

2.4.2Sampling充能流程

硬件开始转换的第一流程是充能,充能是将输入电压或参考电压充入转换电容中。

充能的时间是可配置的,颗粒度是ADCI时钟周期(GxIClass.STCS),是最低时间是两个ADCI时钟周期(STCS = 0)。充能时间配置越长,采样越稳定,但采样耗时越长。一般使用默认的最低充能时间就够了,但是若该硬件单元时钟频率配置过高,则建议增加充能时间,否则充能不充分会导致采样结果出现较大偏差。

另外Aurxi芯片的EVADC模块还输入缓冲功能(Input Buffer),即在充能阶段之前先进入预充能,该功能能够增强信号输入能力,防止抖动。输入缓冲的颗粒度也是ADCI时钟周期,可配置为0、8、16、32。值得注意是,若配置了输入缓冲功能,配置的充能时长需要至少覆盖预充和充能两个阶段。

充能阶段的耗时为:

t(sampling) = (2 + STC) * t(ADCI)

2.4.3Conversion转换流程

充能完毕之后转换单元就需要对充能的电压进行结果转换,我们采用的是逐次逼近原理,所以转换的时间和采样精度,也就是结果位宽是成正比的。我们的的精度是12bit,因此采样阶段的耗时为:

t(Conversion) = 13 * t(ADCI)

2.4.4Noise Reduction降噪流程

Aurix的EVADC提供了降噪功能,作为硬件转换流程的可选步骤存在,包括以下几种方式:

Noise-Reduction Conversion降噪转换

该功能是在转换阶段增加额外的流程,对转换进行优化,可选1、3、7降噪强度。降噪时间为:

t(NoiseReduction) = NRS*(4*t(ADCI)+3*t(ADC)

Spread Early Sample Point 扩展早期采样点

除了静态噪声外,同步噪声不能通过采样消除。扩展早期采样点特性通过以伪随机数步长,来移动采样相位的末端,来衰减同步噪声。通过配置GxICLASSi.CMS/CME来设置。若使用了该特性,充能阶段会被随机缩减最多100ns,这个需要计算采样时长中。

Accumulated Conversions累积转换

除了对信号进行降噪外,还能通过累积转换求平均值的方法来获取可靠的数据。用户可设定2--16个转换结果,最后硬件会自动进行累加。

2.4.5Post-Calibration后标定流程

后标定流程可以被添加到转换的末尾,用于矫正初始化中标定效果的老化。据手册描述,老化其实非常缓慢的,而且后标定流程使得转换电容放电,因此推荐不使用该功能。若使用了,后标定时间为:

t(PostCal) = (4 +2*CALSTC)*t(ADCI)+5*t(ADC)

2.4.6、转换总时间

转换的总时间除了充能、转换这两个必要流程,以及降噪、后标定这两个可选流程,每次转换还有一个固定的硬件状态机切换流程,占3个tADC。所以一次转换的总时间为:

T = t(Sampling) + t(Conversion) + t(NoiseReduction) + t(PostCal) + t(HardState)

2.5、转换结果与中断

2.5.1、转换结果处理

EVADC每个硬件单元有自己的与通道数对应的结果寄存器GxRESy,在我们设置结果关联时,我们可以选择通道与结果号一一对应,即通道X的结果保存到结果寄存器X中。除了单元内部的结果寄存器外,EVADC还有一个全局结果寄存器GLOB.RES,以方便进行跨通道的关联数据处理,一般情况下每个硬件单元配置使用各自的单元内部结果寄存器。其结果输出设定参考下面这张寄存器逻辑图:

数据对齐

前面提到,EVADC的精度是12位但是其结果寄存器中对应的结果位域是16位,以供其它功能使用。一般情况下我们使用右对齐12位:

Wait-for-read模式

EVADC模块还提供了一个等待读取模式,在该模式下,若新的结果没有被CPU或DMA读取过,则该通道的转换请求无法执行。

FIFO Buffer

EVADC提供了FIFO功能,即两个或两个以上相邻的结果寄存器,组成一个先进先出的队列,硬件会将用户指定的转换通道的结果保存到队列中,用户读取其中序号最小的结果寄存器即可取出队列中数据。

下图中结果寄存器0、1组成队列供通道3使用,2、3、4组成队列供其它通道使用,6、7组成队列供通道2、6、7使用。这种配置一般是应对需要多次采样结果结合使用的场景。

2.5.2、转换结果中断

前面我们提到,EVADC模块的中断信号类型有三种,转换请求完成中断、通道完成中断和结果可用中断,他们与4个中断输出引脚的连接是可配置的。

通常情况下,对于一个硬件单元,我们一般将三个请求源的中断信号分别配置给前三个中断输出引脚,用于AD转换结果的处理;将所有的通道结果中断信号,配置给第4个中断输出引脚,用于结果异常处理。

对于请求源中断信号,其连接配置参考下图对应的寄存器:

当请求源完成中断信号产生,则对应的GxSEFLAG中的对应位域会置位,可使用GxSEFCLR寄存器取清除。

当通道中断信号产生,则对应的GxCEFLAG中的对应位域会置位,可使用GxCEFCLR寄存器取清除。

当结果可用中断信号产生,则对应的GxREFLAG中的对应位域会置位,可使用GxREFCLR寄存器取清除。

2.6、引脚连接

ADC的硬件引脚连接不像Port模块,能够灵活配置,它的连接比较固定,例如硬件引脚的AN0对应的就是EVADC模块的G0CH0,AN8对应的就是G1CH0。具体的连接直接查阅芯片DataSheet中的Analog Inputs表格。

3、MACL配置

3.1、AdcGeneral

首先我们来到General界面,一般都是软件使能的配置:

3.2、AdcGlobalInputClass

EVADC模块的通道配置一个InputClass的概念,即输入配置类,该配置类包含了一些通道配置。预设了配置类之后,每个通道可独立选择使用指定的配置类。对于整个EVADC模块,存在两组Global Input Class,即全局配置类。然后每个硬件转换单元有自己私有的两个Input Class,即Group配置类。每个ADC通道可以在全局配置类和所在硬件单元的Group配置类中进行选择。如下图类的配置内容。

AdcChSampleTime充能时间

前面提到了充能阶段的充能时间是可配置的(最小为2*t(ADCI)),通过GxIClass.STCS进行设置。总充能时间为(2+STCS)*tADCI。充能时间越长,采样越充分,一般取STCS=0即可。若fADCI的频率较高,考虑增大充能时间参数。

AdcChPreChargeClkCycles输入缓冲时间

若在充能阶段使用了Input Buffer,则可配置其缓冲时间,它的配置档位是0、8、16、32个fADCI,通过GxIClass.AIPS控制。这里我们不使用输入缓冲。

AdcChConvMode降噪模式

降噪流程是可选的,配置档位NRS是0、1、3、7,具体时间参考前文降噪流程计算公式。通过GxIClass.CMS控制。这里我们不使用降噪。

Spread Early Sample Point 扩展早期采样点(AdcChSESPSEnable)

扩展早期采样点可在Input Class 配置中使能,通过GxIClass.ESEPS控制。

3.3、AdcHwUnit

硬件转换单元相关配置如下图:

AdcIdlePrechargezEnable & AdcInputBufferEnable & AdcPrechargeReference预充控制

Aurix的EVADC模块有三种预充,第一种是通道空闲预充,是在通道空闲的时候将其预充到参考电压的一半,通过GxANCFG.IPE控制;第二种是前文提到的Input Buffer预充,通过GxANCFG.BE控制使能,并通过通道配置控制预充时间;第三种是转换的时候通过参考电压对电容进行预充,能够实现最大精度,通过GxANCFG.RPE控制,该功能默认是使能的。这里我们只使用参考电压的预充。

AdcCalibrationSampleTime 标定时长 & AdcPostCalibrationDisable后标定关闭

如前所述,标定作为可选功能,通过GxANCFG.DPCAL(置1关闭)控制使能,通过GxANCFG.CALSTC控制时间参数CALSTC。后标定使能默认是打开的(勾选为关闭),这里我们使用后标定功能,默认标定时间参数选择2。

AdcAnalogCLockSyncDelay & AdcSampleSyncEnable同步转换

不同的硬件转换单元之间能够进行同步AD转换,通过配置可以实现。通过GxANCFG.SSE控制使能。这里不使用。

AdcPrescale硬件单元分频

在EB工具中选择AdcPrescale选项配置时钟分频,这里配置的实际是DIVA+1,若你想配置32倍分频,这里直接配32,工具会将DIVA写成31。如下图:

3.4、AdcChannel

通道配置如下图所示:

3.5、AdcGroup

在AdcGroup中需要配置转换请求源相关选项,首先配置General中,如下图:

\

AdcGroupAccessMode Adc组访问模式

这个配置是可选择单次或Strem模式,单次即一次一停,一组Buffer;Streaming就是能够进行多次转换,例如启动一次,转换5次,将5次的值存放到用户指定的Buffer中。

AdcGroupConversionMode Adc组转换模式

这里若是单次转换,选择oneshot,若Streaming需求的需要配置为Continuous。

AdcGroupId

软件GroupID识别号

AdcGroupTriggSrc触发源

这里可以选择是硬件触发还是软件触发,根据实际需求配置。

AdcStreamingBufferMode缓存区模式

这里如果是单词或Streaming模式的话,需要配置为Linear。若是连续,且不使用Streaming模式,也就是一次触发就永远持续转换,则需要使用Circular。

AdcStreamingNumSamples Streaming 采样次数

这里定义了Streaming模式下单词触发的采样次数,例如定义了5,则一次触发会进行5次转换,每次转换后也都会进一次中断。这里需要注意的是,软件初始给的Buffer一定要够用,一个结果占据uint16,若该参数为5,Group中配置通道数为8,则Buffer尺寸需要为5*8*uint16,下次再触发会从头覆盖该Buffer。

AdcGroupDefinition组定义

在AdcGroupDefinition配置项中,定义了Group中所包含的通道,也就说前面所说的压入转换队列的内容。一次转换请求就是将这些通道依次进行转换,全部转换完成触发一个中断。如下图:

AdcResDefinition结果定义

这个选项卡中定义了结果寄存器的选择,这里和组定义是一一对应的,例如这边的V_BATT_AD通道将存放到Res2中。

AdcNotification

这个配置项可以配置一个Notification函数,完成后ADC中断内会调用该函数通知用户。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sky丶半导体

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值