英飞凌AURIX 2G系列MCU外设模块EVADC实现原理及MCAL配置项详解
目录
一、版本控制
二、功能概述
三、主要模块及涉及EB配置项
(一)通用时钟方案与控制
(二)内部相关模拟模块的激活与控制
1.模数转换器控制
2.模拟信号缓冲
3.校准
4.降噪方法
5.Alias功能
(三)转换请求产生
(四)请求源仲裁
(五)快速比较通道操作
(六)转换时间
(七)转换结果处理
(八)同步转换
(九)中断服务请求产生
四、其他EB配置项
五、重要寄存器
六、参考文档
一、版本控制
版本 |
撰写日期 |
撰写记录 |
字体颜色 |
V1.0 |
2023.07.12 |
以当前时间点对EVADC模块的认识,撰写了此文档,旨在阐述AURIX 2G系列单片机关于EVADC模块的实现原理及对应MCAL配置工具EB的重要配置项。 |
黑色 (有部分红色字体仅为辨识突出) |
二、功能概述
三、主要模块及涉及EB配置项
注:本文档的涉及EB配置项未详细解释,仅将各模块与配置项对应起来,若理解EVADC模块原理,可在EB软件中轻松理解各配置项意义。
(一)通用时钟方案与控制
(二)内部相关模拟模块的激活与控制
1.模数转换器控制
2.模拟信号缓冲
在ADC内核工作过程中,ADC转换电路中的电容会被充电放电多次。在采样和保持阶段,电容被输入的模拟信号充电,在转换阶段,电容被选择的参考电压充电,在这两个过程中,AURIX 2G系列MCU的ADC模块都支持叠加其他的充电方式来更快地完成充电功能。
涉及EB配置项:
3.校准
校准会自动补偿硬件因工艺变化和老化引起的偏差,以确保每次转换的精确结果。
涉及EB配置项:
4.降噪方法
模拟输入信号几乎总是包含一定量的噪声。这可以在传感器本身处产生,即在源处产生,也可以沿着信号的传输路径输入到转换器,另外微控制器的一些数字模块产生的一些噪声也可能影响转换器的工作,因此噪声无法避免,但有办法去削弱,AURIX提供了几种方法来衰减影响转换器工作和性能的噪声成分:
涉及EB配置项:
这里有个点需要说明:
不是每个ADC内核的每个通道都能对其一起转换属性独立控制(即并非每个通道都有专用寄存器控制转换属性),AURIX 2G的EVADC模块提供了这样一种方式,即整个EVADC模块有两个全局容器,每个ADC内核也有两个专属于自己内核通道的专用容器,总共就有4个容器供通道选择,这样就可以对属于同一类转换精度需求的分配在同一个容器里面。上图中的AdcHwUnitInputClass_0即第一个全局容器。
5.Alias功能
为了支持某些信号的多次采样,EVADC模块支持Alias功能,每个ADC内核仅通道0和通道1有此功能,这个功能是指通道0在满足触发条件时,会开始对链接的那个x通道进行转换,并且转换结果可以存放在通道0的结果寄存器中,这样就可以实现了某些信号通道的多次频繁采样,不过一般在工程应用中较少使用。
涉及EB配置项:
(三)转换请求产生
涉及EB配置项:
当配置成硬件触发时,一般链接的是GTM中的ATOM或者TOM,具体如何将某个组的触发源于某个确定的TOM通道或者ATOM通道需要在EB的MCU模块中配置,这部分需要参考附件手册查明硬件链接资源关系。若链接了GTM,还需要配置对应链接通道的频率快慢,这个很影响ADC的转换频率,具体频率取决于对应需求。
(四)请求源仲裁
涉及EB配置项:
(五)快速比较通道操作
(六)转换时间
用上面的图可以很清楚明了的指明每个通道的转换分为哪几个步骤,每个步骤的时间由什么寄存器的位控制。
- 其中第一个中括号是采样的时间,采样时间有专用寄存器配置,要注意的是采样时间务必要满足各内核的最小采样时间要求;
- 第二个中括号是转换时间,转换时间取决于转换的精度,这里举的例子是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内核链接的是哪个公共服务请求节点,还得看附录手册。
四、其他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》
3. 《TC38X User's Manual Appendix.pdf》