MCAL-基于Infineon-TC3xx芯片的ADC模块

第一章 基于Infineon-TC3xx芯片的ADC模块
`

@[TOC](文章目录)


前言

MCAL是MicroController Abstraction Layer(微控制器抽象层)的缩写。MCAL位于AUTOSAR软件架构中基本软件(Basic Software,BSW)的底层,如下图橙色部分,是可以直接访问MCU寄存器和内部外设的底层驱动。这样划分的目的是使上层软件(如ECU抽象层、系统服务层等)独立于MCU硬件平台,保证上层软件的标准化和通用性。
在切换芯片的时候,IoHwAb_ADC模块基本不用修改,但是对于具体ADC模块的配置,和芯片特性强相关的地方还是有很多地方不一样的(AUTOSAR MCAL标准定义的配置项都是一样的),本文将详细介绍基于Infineon TC377芯片MCAL_ADC模块使用EB工具进行配置的步骤。
在这里插入图片描述

1.TC377芯片ADC硬件资源

在配置一个MCAL模块的时候主要关注这个模块的三个特性:

1)ADC硬件单元:ADC模块有多少个ADC硬件单元Unit,每个Unit有多少个通道Channel,这样我们就可以知道这个ADC模块最大可以配置多少路ADC数据了。

  1. ADC时钟源:知道ADC时钟源和可以使用的分频系数就可以知道ADC模块最大/小的使用时钟频率了(时钟频率在ADC模块作用不是特别明显,在配置PWM/ICU模块的时候就非常重要)。

  2. ADC中断源:使用ADC转换完成中断的话就需要知道使用的中断源,也就是每个Unit/Group的中断号,这个中断号在配置OS的ISR的时候需要用到。

Note: 如果是新手的话,查看TC3xx系列芯片共有的特性应该查看下图的文档:
5728403e-99c4-11ed-bfe3-dac502259ad0.png

查看TC37x具体芯片的硬件资源情况需要查看下图的另一份文档:5741e89a-99c4-11ed-bfe3-dac502259ad0.png

两份文档需要结合起来看,才能找到自己想要的东西。

1.1ADC硬件单元

57554c1e-99c4-11ed-bfe3-dac502259ad0.png

TC37xx有8组ADC采集单元,Group0-8是Primary Groups,Group8-11是Secondary Groups,每组Primary Group有8个Channels,每组Secondary Group有18个Channels,总共可以同时采集84 + 164 = 96路ADC值。

1.2.ADC时钟源

5796a38a-99c4-11ed-bfe3-dac502259ad0.png
ADC模块使用fADC作息模块参考时钟,fADC的具体配置在MCU模块(后面分析TC3xxMCU模块的时候再具体分析)。

1.3ADC中断源

57a352b0-99c4-11ed-bfe3-dac502259ad0.png

Group0-3的ISR中断地址计算公式为:0x670 + x0x10 + y0x4,其中x为Group号,也就是0/1/2/3,y是选择那一路Service Request输出。

那这个y值怎么确定?-- 见下文分析

57d451d0-99c4-11ed-bfe3-dac502259ad0.png

Group 0可以配置使用G0SR0-3中的一路作为中断输入请求信号。

57e8390c-99c4-11ed-bfe3-dac502259ad0.png
在这里插入图片描述
通过配置GxSEVNP寄存器的SEViNP位域可以选择使用那一路Service Request Line。

不过需要注意的是在EB的MCAL_ADC配置项里面没有关于每个Group的Service Request的配置项,所以GxSEVNP寄存器的SEViNP位域为默认值0。

综上所诉,我们得出Group0使用的中断服务的地址为:

Group0的ISR中断地址:0x670 + 00x10 + 00x4 = 0x670,其他Group使用的中断服务的地址以此类推。

  1. TC3XX MCAL特有的配置

2.1 External Multiplexer Control

5819d82c-99c4-11ed-bfe3-dac502259ad0.png

在TC3xx的ADC模块的General配置属性里面有关于Emux相关的配置选项,这些配置参数不是AUTOSAR_MCAL标准定义的,是TC3xx芯片特有的。
在这里插入图片描述

从上文可以 得知TC37x总共可以同时采集96路ADC,如果项目中采集的ADC超过96路(芯片引脚又足够用)该怎么办?-- 换更多Pin脚的芯片显然不划算,那就可以考虑TC3xx的EVADC模块硬件实现的外部多路复用器的功能,简单的来讲,就是使用一路ADC通道可以采集最多八路的ADC信号,具体由Emux相关寄存器配置实现。

一般情况,ADC通道足够,在配置MCAL_ADC的时候不用配置EMUX,了解有这个特性即可。

2.2 Input Class Register

58244230-99c4-11ed-bfe3-dac502259ad0.png

在ADC 模块的顶层配置容器里面有一个全局(Global)的配置容器ADCGlobalInputClass。

584ba7d0-99c4-11ed-bfe3-dac502259ad0.png

在AdcHwUnit配置容易下面有一个AdcHwUnitInputClass的子配置。

58715796-99c4-11ed-bfe3-dac502259ad0.png

AdcChannel配置容器下的每一路Channel都会引用一个AdcInputClass,可以选择Globl的InputClass,也可以选择每一个HwUinit下的Input Class。

那这个Input Class 到底是什么了? – 查看芯片手册

在这里插入图片描述

配置InputClass其实就是配置GxlCLASSi和GLOBICLASSi系列寄存器。

58b57db8-99c4-11ed-bfe3-dac502259ad0.png

翻译过来就是:全局输入类寄存器为通过其通道控制寄存器GxCHCTRy中的位字段ICLSEL选择它们的相应组的每个通道定义采样时间和数据转换模式。

58d5b3a8-99c4-11ed-bfe3-dac502259ad0.png

翻译过来:特定于组的输入类寄存器为通过其通道控制寄存器GxCHCTRy中的位字段ICLSEL选择它们的任何组的每个通道定义采样时间和数据转换模式。

也就是说Input Class在配置每个AdcChannel的采样时间、转换模式(具体哪些模式可以参考芯片手册)、预充电时间等输入属性,个人觉得如果没有特殊性能要求的话,这些可选属性维持默认配置就可以了。

3.总结

现在的芯片手册基本都快上万页了,在接触一块新的芯片的时候先把芯片手册看完,基本是不可能的,就算看完也记不住,所有只有等需要解决疑惑的时候带着问题的查手册,才是比较合适的学习方法。

  • 36
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
AURIX TC3xx 是一款高性能的汽车电子控制单元(ECU),具备强大的处理能力和丰富的外设接口。其中,ADC(模数转换器)是一种重要的外设,用于将模拟信号转换为数字信号,用于数字信号处理。 在AURIX TC3xx中,ADC的使用可以通过MCAL(Microcontroller Abstraction Layer)软件进行触发。MCAL是一种软件层,用于抽象硬件的功能,并提供统一的接口供应用程序调用。通过MCAL软件触发ADC,可以实现对ADC的配置和控制,以满足具体应用的需求。 软件触发ADC主要包括以下几个步骤: 1. 配置ADC模块:通过MCAL软件,对ADC模块进行配置,包括工作模式(单次转换或连续转换)、采样分辨率、时钟源等参数的设置。 2. 配置转换组:将需要采集的模拟信号分配给不同的转换组。每个转换组包含一个或多个ADC通道,用于采集对应的模拟信号。 3. 触发转换:通过MCAL软件,触发ADC转换操作。可以选择软件触发、硬件触发或触发事件等方式来启动转换。 4. 数据获取与处理:当ADC转换完成后,MCAL软件将获取到的数字信号存储于相应的数据寄存器中,应用程序可以通过读取这些寄存器来获取转换结果。此外,应用程序还可以对获取到的数据进行进一步的处理、分析和应用。 软件触发ADC的优势在于灵活性和可扩展性。通过MCAL软件配置和控制ADC,可以根据不同的应用需求进行灵活的设置和调整,使ADC的工作更符合具体应用场景,提供更高的性能和准确度。同时,MCAL软件还提供了丰富的代码库和函数接口,便于开发人员使用和集成其他功能,实现更多复杂的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值