目录
一、版本控制
二、功能概述
三、主要模块及涉及EB配置项
(一)通用时钟方案与控制
(二)内部相关模拟模块的激活与控制
1.模数转换器控制
2.模拟信号缓冲
3.校准
4.降噪方法
5.Alias功能
(三)转换请求产生
(四)请求源仲裁
(五)快速比较通道操作
(六)转换时间
(七)转换结果处理
(八)同步转换
(九)中断服务请求产生
四、其他EB配置项
五、重要寄存器
六、参考文档
一、版本控制
版本 |
撰写日期 |
撰写记录 |
字体颜色 |
V1.0 |
2023.07.12 |
以当前时间点对EVADC模块的认识,撰写了此文档,旨在阐述AURIX 2G系列单片机关于EVADC模块的实现原理及对应MCAL配置工具EB的重要配置项。 |
黑色 (有部分红色字体仅为辨识突出) |
二、功能概述
- EVADC,全称Enhanced Versatile Analog-to-Digital Concerter,增强型通用模数转换器,使用的转换原理是SAR,Successive Approximation Register--逐次逼近寄存器,不了解SAR原理的可查阅相关资料。
- 本文档的对象MCU是TC38X,其EVADC模块总共有12个独立的ADC内核,这12个ADC内核分为3个簇,每个簇有不同的特性,分为:主转换簇,次转换簇,快速比较簇。其中,主转换簇是0-7内核,8-11内核是次转换簇,这两个簇的主要差别是转换时间的不同(这里的转化时间是指总的转换时间),其原因是两个簇对于采样的最小时间的限制不同,次转换簇会更大一些。所以基于此,可根据具体传感器信号的特征来确定哪些信号需要分到哪个簇。
- 每个簇内的ADC内核所支持的通道数量不同,每个通道不仅仅是作为ADC来用,还有其他的用途(比如说DSADC,Sent,具体参考芯片数据手册),不同簇的复用器属性不同,主转换簇是8:1的多路复用器,在开始某个通道的转换时,则复用器将这个通道作为复用器的输出,这三个簇的支持通道数量及支持的最快转换时间如下图所示:
- 快速比较簇是将外界输入的电压与一个自己设置的参考电压(支持10位的精度)进行比较,输出标志位表明这两者的大小关系,基于这一相对简单的功能所以有最快的转换时间。
- 每个ADC内核都有这几部分组成:请求控制单元,转换控制单元,模数转换单元,结果处理单元,中断产生单元等。
- 每个ADC内核的参考电压可以多种选择方案,一个是以ADC模块的统一参考电压VAREF作为参考,一个是以自己内核的通道0作为统一参考电压,这为特殊传感器的AD转换提供了一个很好的解决方案。
- 可以通过将外部模拟多路复用器连接到某个输入通道的方式来增加模拟输入通道的数量,具体增多了通道的原理是外面又多个一个X:1的多路复选,多路复选的选择靠的是芯片的EMUX Control 引脚输出的电平。
- 每个ADC内核有三个请求源,不同通道可以分配给不同的请求源,不同的请求源可以有不同的优先级,这些都可以通过专用的寄存器配置。根据通道所输入的信号的特性,可将一类的信号通道分配在同一个组内,属于同一个组的通道的请求源都相同,默认情况下,高优先级的组会分配在请求源2。同一个组内多个通道的转换顺序按照队列的顺序转换,排在前面先转换,排在后面后转换。
- 若三个请求源因为不同的触发源(软件、计时、外部事件)同时发起请求,请求源冲裁器会根据每个请求源的优先级先给高优先级的请求源转换。
- GTM中的MCS可以去读Result Handling中的Result
- RIF是可以去读雷达相关的数据
三、主要模块及涉及EB配置项
注:本文档的涉及EB配置项未详细解释,仅将各模块与配置项对应起来,若理解EVADC模块原理,可在EB软件中轻松理解各配置项意义。
(一)通用时钟方案与控制
- 所有的ADC内核都在统一的时钟频率下工作;
- ADC外设时钟fADC控制了ADC内核中所有逻辑块,比如说状态机,服务请求单元,仲裁器等。模数转换部分是在fADC分频后得到fADCI下工作的。
- 模拟相位同步器可以确保多个ADC内核的同步转换,对于不需要同步转换的ADC内核,就直接不引用相位同步器,直接开始转换。
- 为了确保EVADC时钟域之间的正确同步,外设时钟不能比总线时钟慢,即fADC >= fSPB。
- 涉及EB配置项:
(二)内部相关模拟模块的激活与控制
1.模数转换器控制
- 每个ADC内核的模数转换器支持多种工作模式,具体使用哪种模式取决于应用程序对信号的需求,对于那种并非需要转换器一直工作的信号,可以在不需要的时候休眠对应ADC内核,以节省功耗。
- 各模式及对应特征如下图所示:
2.模拟信号缓冲
在ADC内核工作过程中,ADC转换电路中的电容会被充电放电多次。在采样和保持阶段,电容被输入的模拟信号充电,在转换阶段,电容被选择的参考电压充电,在这两个过程中,AURIX 2G系列MCU的ADC模块都支持叠加其他的充电方式来更快地完成充电功能。
- 首先是采样阶段的模拟输入缓冲器,可以通过专用的寄存器使能它,并且设定缓冲的时间,时间的基准是fADC,在缓冲充电结束后,将会由模拟信号充电,这两个部分加起来的时间是总采样时间,所以这里要注意的是,我们在设定采样时间时要注意与最小采样时间的大小关系,要不然会影响采样的准确度。
- 接着是转换阶段的预充器,若这个被使能,则在转换阶段预充电会先对电容器进行一定时间的预充,充完后,再转到选定的参考电压,以完成后面的模数转换。这个预充可以通过专用的寄存器使能,充电时间也可以控制。
- 还有一个是闲时的预充使能,这个功能决定了ADC内核在IDLE状态下,采样电容是否会被预充,若使能了,则会预充到所选择参考电压的一半。
涉及EB配置项:
3.校准
校准会自动补偿硬件因工艺变化和老化引起的偏差,以确保每次转换的精确结果。
- 每个ADC内核在启动时会有一个初始启动校准,这个校准对于转换器特别重要,必须要进行,有专用的控制器控制此校准的使能与否,另外有专用的寄存器控制此校准的时间。注意这个初始校准不计算在通道的转换时间上,因为只有在进行了初始校准后,才能开始转换。
- 还有一个后校准步骤,这个是算在转换时间里面的,在转换过程的最后阶段。按照官方手册描述,由于器件老化引起的变化非常缓慢,并且后校准步骤会使电容器放电,因此当前版本的转换器不建议开启后校准功能。
涉及EB配置项:
4.降噪方法
模拟输入信号几乎总是包含一定量的噪声。这可以在传感器本身处产生,即在源处产生,也可以沿着信号的传输路径输入到转换器,另外微控制器的一些数字模块产生的一些噪声也可能影响转换器的工作,因此噪声无法避免,但有办法去削弱,AURIX提供了几种方法来衰减影响转换器工作和性能的噪声成分:
- 噪声消除转换,这个方法是在转换完成后(模拟量已经转成数字量),对转换的结果值进行一个噪声消除,具体的消除原理不知(涉及信号处理知识),但这个时间可以有专用的寄存器控制;
- 与统计噪声不同,同步噪声不能通过过采样来消除。扩展早期采样点特征通过在伪随机步长中移动采样相位的末端来衰减同步噪声,当启用这个功能时,采样相位随机缩短,最大可达100ns,所以在配置通道的采样时间时,务必要将采样时间设置成大于100ns。
- 积累的转换,这种是有了多个转换结果后再取平均值,首先预设累计了多少次时可以求平均值,在达到这个转换次数后,会产生中断服务请求以请求计算平均值。
- 各个转换器的相互干扰,每个转换器都使用了参考电压VAREF(备用参考电压除外),这不可避免地会使转换器间相互干扰,好在这可以通过同步转换的方式来避免这些干扰,但是有的通道的确不需要同步转换,考虑到这种干扰影响甚微(具体看采集ADC的精度需求),可以忽略这种影响。
涉及EB配置项:
这里有个点需要说明:
不是每个ADC内核的每个通道都能对其一起转换属性独立控制(即并非每个通道都有专用寄存器控制转换属性),AURIX 2G的EVADC模块提供了这样一种方式,即整个EVADC模块有两个全局容器,每个ADC内核也有两个专属于自己内核通道的专用容器,总共就有4个容器供通道选择,这样就可以对属于同一类转换精度需求的分配在同一个容器里面。上图中的AdcHwUnitInputClass_0即第一个全局容器。
5.Alias功能
为了支持某些信号的多次采样,EVADC模块支持Alias功能,每个ADC内核仅通道0和通道1有此功能,这个功能是指通道0在满足触发条件时,会开始对链接的那个x通道进行转换,并且转换结果可以存放在通道0的结果寄存器中,这样就可以实现了某些信号通道的多次频繁采样,不过一般在工程应用中较少使用。
涉及EB配置项:
(三)转换请求产生
- 每个ADC内核有3个请求源,每个请求源可以由不同的方式触发请求,具体有软件触发,硬件触发,其中硬件触发有定时的触发,有内部PWM信号触发,有外部引脚的事件触发,总共有15个可选触发器输入,还有16个可选门控输入。请求源在被触发后,会发起转换请求,每个请求源里面可以分配不同的通道,这个可以通过专用的寄存器配置,每个请求源的优先级可以手动配置,冲裁器会定期扫描请求源以查找挂起的转换请求,若同时有多个请求源挂起,会根据优先级优先转换优先级高的请求源。
- 每个触发源有两种转换模式,分别为单次模式和连续模式,单次模式是指每次的转换都需要每次的触发条件被满足,若不满足则不会转换,连续模式是指只要触发条件被满足,则后面可以连续的进行转换,不需要触发条件的再次满足,因此这里可以很容易得知硬件的触发方式只能选择单次转换模式;软件的触发两种模式都可以。
- 在EB配置中,引入了AdcGroup的概念,每个ADC内核最多支持32个AdcGroup,可以将具体同一类属性的信号通道分配在同一个组,每个通道的到底链接了哪个请求源最终都是通过每个通道的对应寄存器控制,在EB配置中,提供了两种方案来实现确定组的通道到底链接了哪个请求源,第一个是硬件方案,这个通过设置每个组的优先级(0-255)来确定属于哪个请求源,优先级为255的组的通道会分配给请求源2,优先级为254的组的通道会分配给请求源1,剩下的优先级的组的通道会分配给请求源1;还有一种是软件方案,这种方案允许通过软件直接操作相关寄存器来改变每个通道的所属请求源和每个请求源的优先级。注意,这部分的实现逻辑为EB提供的ADC驱动源码逻辑,关于EVADC这个模块并没有AdcGroup的概念。
涉及EB配置项:
当配置成硬件触发时,一般链接的是GTM中的ATOM或者TOM,具体如何将某个组的触发源于某个确定的TOM通道或者ATOM通道需要在EB的MCU模块中配置,这部分需要参考附件手册查明硬件链接资源关系。若链接了GTM,还需要配置对应链接通道的频率快慢,这个很影响ADC的转换频率,具体频率取决于对应需求。
(四)请求源仲裁
- 请求源仲裁器定期扫描挂起的请求源,若只有一个挂起,则这个请求源里的通道直接开始转换,若有多个请求源同时挂起,则会根据优先级来确定要转换的请求源,每个内核的三个请求源的优先级可通过寄存器配置(0最低,3最高),另外有个同步的请求源,这个请求源高于其他的任何一个请求源。
- 在涉及到多个请求源同时挂起时,有一个抢占模式的选择,每个请求源的抢占模式可单独配置。一个是wait-for-start模式,一个是cancel-inject-repeat模式,参考上面的图可容易理解具体模式的差别。
涉及EB配置项:
(五)快速比较通道操作
- 快速比较通道是直接将输入通道的电压与某个寄存器的一段位域所代表的电压相比,这个位域是10位的精度,参考电压是VAREF,DELTA值定义了迟滞,这个意味着比较的参考值不是一条线而是一段区域;最终输出的是比较的结果,体现在某个寄存器的某一位上;
- 快速比较通道的参考值的设置模式有很多选择,因为目前快速比较通道的应用较少,所以具体对快速比较通道的原理不做详细阐述,若有需求再研究。
(六)转换时间
用上面的图可以很清楚明了的指明每个通道的转换分为哪几个步骤,每个步骤的时间由什么寄存器的位控制。
- 每个ADC内核在启动转换前,都会有个启动校准的工作,这个若没有完成,则无法开始通道的转换,启动校准也有个时间的公式,但这个时间不算在通道的转换时间中,这个是内核一启动后开始做的工作。
- 转换时间的公式如下图所示:
- 其中第一个中括号是采样的时间,采样时间有专用寄存器配置,要注意的是采样时间务必要满足各内核的最小采样时间要求;
- 第二个中括号是转换时间,转换时间取决于转换的精度,这里举的例子是12位的,所以转换需要13个时钟周期,即转换的时间取决于转换精度(在时钟周期确定的情形下);
- 第三个中括号是噪声消除的时间,噪声消除的NRS代表消除的等级,有0/1/3/7四个等级,等级越高,所花的转换时间越长;
- 第四个中括号是后校准的时间,这个时间的计算公式如下图所示:
具体的时间也是可以通过寄存器配置的;
- 第五个中括号是内核Statemachine同步所花的时间;
- 转换时间中,噪音去除和后校准的时间都是可以DISABLE的,具体是否使能看具体的转换精度和时间需求;
- 在设置位STC和CALSTC时,要注意满足最小的时间需求;
- 快速比较通道所花的时间如下图所示:
从其中可以看出,主要的差别是在转换时间的差别上,因为只需要对比大小关系,不用转换出具体的电压值,另外快速比较通道也没有所谓的噪音消除时间和后校准时间。
- 涉及EB配置项
(七)转换结果处理
每个通道转换的结果可以单独存放在对应的通道结果寄存器,也可以存放在公共的全局结果寄存器,全局结果寄存器的意义在于可以节省DMA的通道数,若采用DMA进行数据的搬运的话,因为源地址都相同,所以可以节省DMA通道数,但是要注意各通道的转换结果被其他通道覆盖,所以这种情况下一般会引入中断,每次有新的转换结果就触发中断,让DMA来及时地搬走。一般情况下都是用各自单独的通道结果寄存器。
ADC需要为每个EB配置的GROUP准备用户空间用于存结果,也就是设置GROUP的缓存,在设置缓存时,EB有一些配置项需要注意:
-
AdcGroupAccessMode 这个参数定义了访问缓存的访问模式,有流访问模式和单一访问模式,若流访问模式则代表缓存区域可以存放这个Group里每个通道的多个样本,若是单一访问模式则都只能存放每个通道的一个样本;根据这个意思所以这个配置项不是孤立的,他和组的转换模式互相影响,组的转换模式若是one-shot模式,则只能是单一访问模式,若是连续转换模式,则单一和流访问模式都可以;
- 在流访问模式的基础上(只有流访问模式这个才生效,但在单一访问模式下,这两个配置项要和前面的配置项相吻合,不能自相矛盾),衍生出了另外两个配置项,AdcStreamingBufferMode和AdcStreamingNumSamples,AdcStreamingBufferMode表示流缓存区的属性,一种是线性缓冲区,一种是环形缓冲区,对于线性缓冲区,在这个缓冲区被存满了之后就立即停止转换(即使是连续模式的转换,若想触发,则需要再次调用API启动转换),而AdcStreamingNumSamples就定义了每个通道可存放的样本数,缓存会按照通道来排序,若AdcStreamingNumSamples为2,则先存放第一个通道的2个样本,再下一个通道的样本;若是环形缓冲区,则缓冲区满了之后会环绕继续转换,缓冲区的首地址存放首通道的转换结果,后面按照通道配置顺序一次排列。
- 涉及EB配置项:
(八)同步转换
几个独立的ADC内核可以同步进行模拟输入通道的转换,可以确保相关通道的采样相位同时启动,同步并行转换的请求优先级最高,比其他的三个请求源优先级都高,既然是同步转换,那就有个主从概念,就是该和哪个通道同步,因此,在设置同步转换时,要确定哪个内核为主,哪几个内核为次。一个内核里面的所有通道都可以同步转换,可以同步的内核如下表所示:
- 若一次性不用四个通道同时转换,在我的理解里,可以设置那个不用同步转换的内核的同步转换模式为alone,那么他自然就无法同步转换;
- 选择同步采样后,那些次内核的通道的触发源就没有意义了,还有一个转换时间上的配置我觉得肯定要配置成一致,如果不一致,是否都统一按照主内核的来转换我不确定,但我猜想是可以的;
- 同步转换在启动后,是不能被打断的,即使被配置成可抢占模式,一方面同步转换的请求源的优先级最高,另一方面,若被打断,容易造成同步的丢失。
- 一般情况下,在同步转换被触发后,是立即开始采样,采样完成后,在下一个最近的相位同步器的上升沿开始转换,即模式B,但是其实也有其他的几种模式,模式的具体情况如上图和上表。
涉及EB配置项:
(九)中断服务请求产生
服务请求这里相对逻辑比较简单,涉及到事件(触发源),服务请求节点。
- 事件被分为三种,注意,每个ADC内核的事件相互独立,分为请求源事件,通道事件和结果事件,请求源事件是指请求源完成了请求的转换序列,通道事件是指对应的通道完成了转换,结果事件是指结果寄存器有新的数据在更新。每个事件有对应的标志寄存器和清除寄存器,因为每个ADC内核有三个请求源,所以有三个标志位标志三个请求源的事件状态,还有专用的寄存器控制每个请求源的对应服务请求输出信号,同理,通道事件和结果事件也有专门的寄存器完成对应的功能。
- 服务请求输出信号分为专有和公共的,具体如下图所示,每个内核都有四个专用的服务请求节点,另外还有几组公共的服务请求节点,看下面的图和对应芯片的附录手册,可以发现TC38X有2组公共的服务请求阶段,每组里面有四个,每个ADC内核都有专用的服务请求节点和公共服务请求节点的选择,具体各个ADC内核链接的是哪个公共服务请求节点,还得看附录手册。
- 若在转换结果设置中设置了将某些通道的转换结果存放在全局结果寄存器中,则相应的全局结果也会有相应的结果事件,有标志位和清除位,全局的结果事件只能链接公共服务请求节点,2组服务请求节点总共8个都可以供其选择。
四、其他EB配置项
EB的EVADC配置主界面有些通用的配置,这些配置是针对整个EVADC模块的,具体意义较简单,不具体文字阐述。
五、重要寄存器
MCAL层涉及到对硬件的操作,其实都是对相关寄存器的操作,因此,这里列举了EVADC模块的重要寄存器,以方便加深模块的理解和问题的快速排查。
Short Name |
Long Name |
Description |
CLC |
Clock Control Register |
全局时钟使能寄存器 针对整个EVADC模块 |
GLOBCFG |
Global Configuration Register |
通用配置寄存器,针对整个EVADC模块 |
GLOBICLASSi |
Input Class Register i, Global |
全局通道属性容器,两个,i=0-1 |
GLOBEFLAG |
Global Event Flag Register |
全局结果寄存器结果事件标志寄存器 |
GLOBEVNP |
Global Event Node Pointer Register |
选择事件链接的中断服务请求节点 |
GLOBRCR |
Global Result Control Register |
全局结果控制寄存器 |
GLOBRES |
Global Result Register |
全局结果寄存器 |
GxTRCTR |
Trigger Control Register, Group x |
每个ADC内核的触发源控制寄存器 |
GxARBCFG |
Arbitration Config. Register, Group x |
每个ADC内核仲裁器的属性配置寄存器 |
GxARBPR |
Arbitration Priority Register, Group x |
每个ADC内核的三个请求源的冲裁优先级控制寄存器 |
GxANCFG |
Analog Fct. Config. Register, Group x |
每个ADC内核的一些模拟模块的属性配置寄存器 |
GxICLASSi |
Input Class Register i, Group x |
每个ADC内核的两个通道转换属性配置容器 |
GxSYNCTR |
Synchronization Control Register, Group x |
每个ADC内核的同步转换控制寄存器 |
GxVFR |
Valid Flag Register, Group x |
每个ADC内核的新结果状态标志位 |
GxCHCTRy |
Group x, Channel y Control Register |
每个通道的控制寄存器 |
GxRCRy |
Group x Result Control Register y |
每个通道的专用结果控制寄存器 |
GxRESy |
Group x Result Register y |
每个通道的专用结果寄存器 |
六、参考文档
撰写过程中,参考如下文档:
1.《AURIXTC3XX_um_part1_v2.0.pdf》
2.《AURIXTC3XX_um_part2_v2.0.pdf》文章来源:https://www.toymoban.com/news/detail-730104.html
3. 《TC38X User's Manual Appendix.pdf》文章来源地址https://www.toymoban.com/news/detail-730104.html
到了这里,关于英飞凌AURIX 2G 系列MCU关于外设模块EVADC的实现原理及对应MCAL(EB Tresos)配置项详细讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!