Autosar MCAL-ADC详解(一)-基于Tc27x的cfg软件

前言

既然谈到MCAL,那必定是与硬件芯片分不开的,但是网上的博客资料大部分都是按照理论知识来分析(也可能有些收费的我看不到。。。)。基于此,本文详细介绍Autosar MCAL中的ADC模块,应用的单片机为TC27x系列。

TC27x系列ADC硬件资源


ADC共有48+12个通道,查看datasheet可知,48Group0的通道0-7到Group5的通道0-7,12Group6的0-5到Group7的0-5。后12个引脚来自于Port的复用,前48个部分可以来自于Port的复用,也可以来自于Analog Inputs。ADC共有8个转换器。
截取其中一路通道Group0.0如下图所示:


对于48个模拟输入引脚来说,Analog Input Number(0-47)决定了其所在的Group和Channel.

Autosar ADC模块

在Autosar官方文档中的配置项有如下几个:

AdcConfigSet:此容器包含AUTOSAR Adc模块的配置参数和子容器

AdcGeneral:ADC驱动程序软件模块的一般配置(参数)。

AdcPublishedInformation:“通用”已发布信息未涵盖的其他已发布参数。请注意,这些参数具有“PUBLISHED-INFORMATION”配置类设置,因为它们是发布信息。

基本主要配置的是前两项内容。

AdcConfigSet

系统时钟

配置系统时钟是由McuClockReferencePoint而来,查看芯片手册可知,fVADC时钟由fSPB为基础时钟本文设为100MHZ

分频参数

分频图:

Analog clock frequency分频参数

datasheet中规定fADCI(转换器时钟)频率最高为20MHZ

cfg配置fADCI分频值


计算得到fADCI频率为100/(4+1)=20MHZ

Digital clock frequency分频参数
cfg配置fADCD分频值


计算得到fADCD频率为100/(3+1)=25MHZ

采样同步信号

采样同步信号由CCU6x的T13生成

cfg中配置采样同步信号来源


这个地方只是配置了可以由CCU6来触发同步信号,后面还有一个配置是否开启该功能

supply voltage选择

可选5V或3.3V,配置寄存器为GLOBCFG.LOSUP

预充控制

选择是否开启预充控制,此处选择带预充控制。VDDM指的为电源电压。

参考电流可以通过从电源电压VDDM预加载电容场来降低。该特性通过在寄存器GLOBCFG中设置REFPC位来启用。在这种情况下,参考电压和电源电压必须在同一水平上。电容场首先在第一相从VDDM预加载,然后在第二相调整为VAREF。

睡眠模式

选择是否允许睡眠模式,此处选择允许。该项由寄存器CLC.EDIS位控制

子配置项

AdcGlobInputClass

设置全局的采样精度和采样时间,对应的寄存器为GLOBICLASS,时间配置为0时,采样时间为2/fADC.采样精度不用多说,位数越高精度越高,12位对应的值为0-4096。该寄存器有两个一样参数项,参数的可以设置的不一样

cfg中配置AdcGlobInputClass


EMUX没有用到,暂时不管。

AdcHwUnit

AdcHwUnit是Autosar中规定的标准配置,一个AdcHwUnit对应一个ADC硬件单元(转换器),对于tc27X,最多有8个AdcHwUnit。规范中一个AdcHwUnit中包括AdcChannels,AdcGroups(CFG中扩展了AdcKernelInputClass,为对应ADC组的采样时间和转换精度)

Autosar规范中定义:由于一个AdcChannel可以是多个AdcGroup的一部分,这个容器(AdcChannel)不是作为AdcGroup的子容器实现的,而是作为AdcHwUnit的子容器实现的。也就是说同一个AdcChannel可以存在多个AdcGroup中。但一般在实际使用过程中,都是和硬件Group一一对应的

Arbitration Round Length

该项在用户手册中可以查到,由寄存器GxARBCFG.ARBRND配置。在28.5.3.1章中建议配置为4.
仲裁槽位的持续时间是可配置的。 tSlot = (DIVD+1) / fVADC.因此,一轮仲裁的持续时间为tARB = 4 × tSlot
cfg中配置如下:

Hw Unit Id

配置所属的硬件单元,

Post Cal

选择是否开启硬件校准,由寄存器GLOBCFG.DPCALx位决定是否禁止硬件校准。

cfg中配置为禁止校准:

Sync Conv Mode

选择ADC内核的运行方式.如果需要同步转换-并行采样的话,这里需要配置ADC内核主机或从机。不需要同步转换的话,配置成STANDALONE即可。


下图显示了ADC0为主机,ADC1和ADC2为从机时的转换过程,对通道3进行同步采样。

主ADC请求对某个通道(对应的通道控制寄存器GxCHCTRy中的SYNC = 1)进行同步转换,连接的从ADC内核也请求同步转换

注意:程序寄存器GxSYNCTR需要在转换组中所有ADC核中的位域GxARBCFG.ANONS = 00B之后设置。之后设置主节点的位域ANONC为11b

AdcChannel

AdcChannel作为Autosar标准中定义的容器,跟硬件ADC通道对应。

An Channel Num

连接每个ADC硬件单元的8个模拟输入

For HWUNIT_ADC0: 0 - 7 for TC27x / TC29x and 0 - 15 for TC26x

For HWUNIT_ADC1: 8 - 15 for TC27x / TC29x and 16 - 31 for TC26x

For HWUNIT_ADC2: 16 - 23 for TC27x / TC29x and 32 - 47 for TC26x

For HWUNIT_ADC3: 24 - 31 for TC27x / TC29x and 48 - 63 for TC26x

For HWUNIT_ADC4: 32 - 39 for TC27x / TC29x

For HWUNIT_ADC5: 40 - 47 for TC27x / TC29x

For HWUNIT_ADC6: 48 - 55 for TC27x / TC29x

For HWUNIT_ADC7: 56 - 63 for TC27x / TC29x

For HWUNIT_ADC8: 64 - 71 for TC29x

For HWUNIT_ADC9: 72 - 79 for TC29x

For HWUNIT_ADC10: 80 - 87 for TC29x

该配置项需要与实际应用对应,与硬件原理图相关。

cfg中配置硬件通道:

Channel High/Low Limit

转换结果最大/小值限制,该值还受limit check开关影响,没有enable limit check时设置无效。

cfg中配置Channel High/Low Limit,实际由于limit check未使能,所以配置没作用


当转换/比较的结果在用户定义的边界内或边界外时,就可以生成通道事件(参见位域CHEVMODE)

Channel Limit Check

enable/disable Limit checking,此处未enable

Channel Id

该ID为名称定义用,不需要与硬件通道ID一致,一般AdcGroup中的Channel Id是顺序的,而对应的An Channel Num可能不是顺序的。

Channel Range Select

这个配置是在Autosar规范中定义的。类型如下:

选项描述
ADC_RANGE_ALWAYS完全范围,独立于通道限制设置
ADC_RANGE_BETWEEN下限和上限之间的范围-包括高限制值
ADC_RANGE_NOT_BETWEEN超出上限或低于下限的范围-包括下限值
ADC_RANGE_NOT_OVER_HIGH范围低于高限值-包括高限值
ADC_RANGE_NOT_UNDER_LOW范围高于下限值
ADC_RANGE_OVER_HIGH范围高于上限值
ADC_RANGE_UNDER_LOW范围低于下限制-包括下限值

cfg中配置:(实际查看vector代码,这个配置好像没有起作用,根本没有定义,理论上来说这个应该是软件实现的,tc27x中没有这个相关寄存器配置)

Channel Ref Voltsrc High

通道的上参考电压,可以选择VAREF或CH0。由寄存器GxCHCTRy.REFSEL配置。
cfg中配置:

Channel Ref Voltsrc Low

通道的下参考电压,此处只能配置为VAGAND

Input Class Selection

选择采样时间和精度,TC27x可以选择全局也可以选择组,对应的寄存器为 GxICLASS0,GxICLASS1,GLOBICLASSy(x:0-7,y:0-1)
cfg中配置:(AdcKernelInputClass和AdcGlobInputClass配置项一样

总结

ADC一篇写不完了,之后再更新后面的配置吧,然后对转换过程进行全局的梳理。大部分配置项都是参考的用户手册和数据手册,主要根据Autosar规范,具体应用到芯片时,会有一些差异和扩展

参考资料:

Infineon-TC27x_D-step-UM-v02_02-EN.pdf

Infineon-TC27xDC-DataSheet-v01_00-EN.pdf

AURIX™公开课第15讲-逐次逼近模数转换器SAR ADC


若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~
你的鼓励是对小弟的最大支持~~~
建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新~

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

赞哥哥s

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

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

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

打赏作者

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

抵扣说明:

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

余额充值