【搞一点AUTOSAR】基于TC397的MACL-ADC配置解读(使用EB)

2023-10-27

【搞一点AUTOSAR】基于TC397的MACL-ADC配置解读(使用EB)


前言

本文描述的配置基于英飞凌TC397芯片,ADC模块是MCAL相当重要的部分,本文先对模块,API函数等做基本介绍,下一篇描述如何完成基本的ADC配置


在这里插入图片描述

一、ADC模块介绍

1、ADC模块的功能

初始化并控制微控制器的内部模拟数字转换器单元(s)。它提供启动和停止转换的服务,以启用和禁用转换的触发源。此外,它还提供服务来启用和禁用通知机制和例程,以查询转换的状态和结果。

ADC模块在的ADC通道组上工作,这是由的ADC通道构建的。ADC通道组将模拟输入引脚(ADC Channel)、所需的ADC电路本身和转换结果寄存器组合成一个实体,它可以通过ADC模块进行单独控制和访问。

2、模块相关概念首字母缩略介绍:

DEM :Diagnostic Event Manager 诊断事件管理
DET :Default Error Tracer 默认错误跟踪器
ADC :Analogue Digital Converter 模数转换器
MCU :Microcontroller Unit 微控制器管理单元
API :Application Programming Interface 应用程序接口
HW :Hardware 硬件
SW :Software 软件
ADC HW Unit : ADC硬件模块,表示一种微控制器输入电子设备,它包括执行“模拟到数字转换”所需的所有部件。
ADC Module :ADC基本软件模块ADC驱动程序,也缩写为ADC驱动程序
ADC Channel :表示绑定到一个端口引脚的逻辑ADC实体。多个ADC实体可以映射到同一个端口引脚。
ADC Channel Group :连接到同一ADC硬件单元的一组ADC通道(例如,一个采样和保持转换器和一个A/D转换器)。整个组的转换是由一个触发源触发。
ADC Result Buffer (ADC Streaming Buffer, ADC Stream Buffer) :ADC驱动程序的用户必须为每个组提供一个缓冲区。如果选择了流媒体访问模式(streaming access mode)该缓冲区可以保存同一组通道的多个样本。如果选择了单一访问模式,缓冲组中保留每个通道的一个样本。
Software Trigger :启动一个ADC通道组或连续一系列ADC通道组转换的软件API调用
Hardware Trigger :启动ADC通道组的一次转换的ADC内部触发信号。ADC硬件触发器在ADC硬件内部生成,例如基于ADC计时器或触发器边缘信号。触发器硬件是紧密耦合的或集成在ADC硬件中的。在检测到硬件触发器后,无需使用任何软件即可启动ADC通道组转换。注意:如果ADC硬件不支持硬件触发器,则将软件触发器与GPT/ICU驱动程序结合使用,可以实现类似的行为。例如,在GPT计时器通知功能中,可以启动软件触发的ADC通道组转换。
Conversion Mode
One-Shot: ADC通道组的转换在触发后执行一次,并将结果写入分配的结果缓冲区。触发器可以是软件API调用或硬件事件。
Continuous: ADC通道组的转换在软件API调用(开始)后连续执行,并将结果写入分配的结果缓冲区。转换本身正在自动运行(受硬件/中断控制)。连续转换可以通过软件API调用(停止)来停止。
Sampling Time, Sample Time :模拟值采样的时间(例如加载电容器,
Conversion Time :将采样的模拟值转换为数字表示的时间。
Acquisition Time : Sample Time + Conversion Time(样本时间+转换时间)

二、基于TC397的EB_MCAL_ADC模块介绍

1.Config Variant与AdcConfigSet

在这里插入图片描述

Config Variant :变体配置,默认选择VariantPostBuild就好了;
Note:
VariantLinkTime: 链接时生效的参数。
VariantPreCompile:编译前生效的参数。
VariantPostBuild: 混合编译前以及编译后生效的参数。

AdcSyncClockDisable :此参数确定模拟时钟是否在同步/非同步模式下生成。转换器控制(CONVCTRL)时钟的配置由MCU驱动器完成;
AdcSystemClock :这个参数是指MCU驱动程序配置的系统时钟。使用这个系统时钟,给ADC组的计时器触发器重新加载值(触发器也是一个计时器,相当于ADC模块的计时器需要一个标准时间,就像现实里会用伦敦时间,北京时间作为标准,系统时钟就是起到这个作用);

2. AdcGeneral

在这里插入图片描述

AdcDeInitApi :从代码中添加/删除服务Adc_DeInit(),若勾选,则可使用去初始化功能;

AdcDevErrorDetect :打开或关闭默认错误跟踪器(Det)的检测和通知。

AdcSafetyEnable:启用/禁用安全检查和所有相关通知;启用ADC驱动程序安全特性的预处理器开关。通过打开此开关,隐式地启用了这些安全功能:对API参数进行了范围检查;ADC配置结构有一个唯一的标记手段,该手段将由驱动程序验证;发布ADC驱动程序的安全使用情况,供用户设置相应的ADC设置;(AUTOSAR标准文档中未规定,而是TC_397芯片自带的功能)

AdcMultiCoreErrorDetect :从代码中添加/删除多核错误检测功能

AdcInitCheckApi :从代码中添加/删除服务Adc_InitCheck(),该服务用于验证ADC驱动程序完成的初始化(AUTOSAR标准文档中未规定,而是TC_397芯片自带的功能);

AdcEnableLimitCheck:启用或禁用ADC驱动程序中的限制检查功能;确定在优先级机制禁用的情况下,队列机制是否处于活动状态;(全局启用限制检查,若未启用,则AdcChannelHighLimit和AdcChannelLowLimit、AdcChannelRangeSelect不可用)(AUTOSAR标准文档中未规定,而是TC_397芯片自带的功能)

AdcEnableQueuing:确定在优先级机制禁用的情况下,队列机制是否处于活动状态;如果启用了优先级机制,则队列机制始终处于活动状态,而参数ADC_ENABLE_QUEUING不会被求值;

AdcEnableStartStopGroupApi :从代码中添加/删除服务Adc_StartGroupConversion()和Adc_StopGroupConversion();

AdcGrpNotifCapability :确定组通知机制(启用和禁用通知的功能)在运行时是否可用。AdcNotification函数必须在该API启用时才可用;

AdcHwTriggerApi:从代码中添加/删除服务Adc_EnableHardwareTrigger()和Adc_DisableHardwareTrigger()

AdcReadGroupApi :从代码中添加/删除服务Adc_ReadGroup()。

AdcVersionInfoApi :从代码中添加/删除服务Adc_GetVersionInfo()。

AdcStartupCalibApi:从代码中添加/删除服务Adc_GetStartupCalStatus()和Adc_TriggerStartupCal()

AdcTriggerOneConversionEnable :该参数允许在API—Adc_TriggerStartupCal()中触发启动校准之前,为每个配置的HW单元执行一个虚拟转换。

AdcSyncConvEnable :支持ADC HW组之间的同步转换。

在这里插入图片描述

AdcPriorityImplementation
确定转换请求的优先级机制是否可用,如果可用,则确定优先级机制的类型。此选择适用于具有软件触发源和硬件触发源的组;
有三种优先级机制可以选择分别是:
AdcPriorityHw(硬件优先级机制):只有硬件优先级机制可用
(AdcPriorityHwSw):硬件和软件优先级都可用;
 ADC_PRIORITY_NONE :优先级机制不可用;
软件触发组的组优先级通常配置为低于硬件触发组的组优先级级别;

AdcResultHandlingImplementation:确定ADC驱动程序的结果处理模式;
ADC_INTERRUPT_MODE_RESULT_HANDLING:转换结果在请求源ISR (AUTOSAR模式)中传输。
ADC_DMA_MODE_RESULT_HANDLING:使用DMA通道传输转换结果。ADC_POLLING_MODE_RESULT_HANDLING:使用同步api传输转换结果。

AdcResultAlignment :ADC结果缓冲区中的ADC原始结果对齐方式(左/右对齐)。

AdcMaxChConvTimeCount (0 -> 16962)
在转换请求停止时,A/D转换器中正在进行的信道转换不能立即停止。相反,软件需要等待信道转换完成。为了确保转换器处于空闲状态,需要对转换器状态轮询进行等待,其最大等待时间由AdcMaxChConvTimeCount中输入的值定义

AdcSleepMode
该参数决定ADC驱动程序是否接受或拒绝来自SCU的休眠模式请求。
ADC_SLEEP_MODE_ACCEPT: 接受SCU的睡眠模式请求 ;
ADC_SLEEP_MODE_REJECT: 拒绝SCU的睡眠模式请求;

AdcSupplyVoltage
该参数将模拟电路调整到所选的电源电压,该参数的默认值为对应SFR的重置值
ADC_VOLTAGE_3P3V: 3.3V固定电源接通;
ADC_VOLTAGE_5V: 固定5V电源接通;
ADC_VOLTAGE_CONTROLLED_BY_SUPPLY: 电压范围由电源控制;

AdcRuntimeApiMode
参数定义运行时api将在其中操作的特权模式。
由于ADC驱动程序访问SFRs,在监控器模式下操作ADC驱动程序更加高效。因此,默认的操作模式是supervisor。
当AdcInitDeInitApiMode配置为User-1模式时,AdcRuntimeApiMode必须配置为User-1模式

AdcInitDeInitApiMode
配置参数定义初始化和反初始化api将在其中操作的特权模式。
由于ADC驱动程序访问SFRs,在监控器模式下操作ADC驱动程序更加高效。因此,默认的操作模式是supervisor。

3.AdcPublishedInformation

在这里插入图片描述

AdcPublishedInformation
关于PublishedInformation(发布信息)
这个模块包含了由BSW模块的实现者定义的数据,当模块适应(即配置)到实际的硬件和软件环境时,这些数据不会改变。它包含版本和制造商信息。这对于为每个BSW提供明确的版本标识是必要的模块。这个模块一般不用配置,保持默认即可,因为主要与硬件相关的部分有关。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【搞一点AUTOSAR】基于TC397的MACL-ADC配置解读(使用EB) 的相关文章

  • Spring Boot整合Mybatis-Plus快速入门(二)

    之前快速搭建项目中 创建的类名与表名以及属性名都是一致的 所以mybatis plus可以根据类名以及属性名进行对应的操作 那么如果表名与属性名中不一致或属性名与列名不一致时我们应该怎么处理呢 这里mybatis plus为我们提供了很多注
  • 解决VMware14打开虚拟机黑屏问题

    最近把VMware升级到14 0之后 运行虚拟机之后无法显示图像 屏幕一团黑 但点击显示缩略图的时候是可以看到系统已经启动并在正常运行的 可以通过以下方法解决 以管理员身份打开命令提示符 输入命令 netsh winsock reset 重
  • 知识图谱(七)——事件抽取

    文章目录 一 任务概述 1 事件的定义 2 事件抽取的定义 3 相关评测和语料资源 二 限定域事件抽取 1 基于模式匹配的事件抽取方法 1 有监督的事件模式匹配 2 弱监督的事件模式匹配 3 优缺点 2 基于机器学习的事件抽取方法 1 有监
  • arm-none-eabi-gcc编译、链接选项详解

    1 mthumb 和 mthumb interwork mthumb 的意义是 使用这个编译选项生成的目标文件是Thumb指令的 目前还没有发现GNU编译器中有哪一个选项可以指定生成的目标文件是thumb 2的 相对应的 marm 的意义是

随机推荐

  • 多态,虚函数,纯虚函数

    多态 借助虚函数 基类指针既可以使用基类 父类 的成员函数 也可以使用派生类 子类 的成员函数 它有多种形态 或多种表现方式 这就是多态 简单说就是同一条语句可以执行不同的操作 看起来有不同表现方式 这就是多态 构成多态的条件 多态存在的三
  • .net 平台下的数学库math.net(一)

    Math NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算 科学运算 它是C 开发的开源类库 Math NET含了一个支持线性代数的解析器 分析复杂微分 解方程等等功能 这个项目大部分采用的是MIT X11开源软件协议 目前该组
  • ConstraintLayout实用特性

    转载自赵彦军的博客 前言 在2016年的Google I O大会上 Google 发布了Android Studio 2 2预览版 同时也发布了Android 新的布局方案 ConstraintLayout 但是最近的一年也没有大规模的使用
  • 【ABviewer从零开始教学查看器篇②】关于打开文件的快捷方式

    ABViewer是一款高质量 高效率 低成本的多功能设计及工程文档管理工具 能为您提供全面的专业的浏览及编辑功能 同时支持30多种光栅和矢量图形格式 在小编看来 ABViewer是一款非常简单且实用的CAD文档查看与编辑器 对于使用小白可能
  • 判断是否是数组

    整理了一些 留待自己复习用 1 instanceof var a name fangxiaoming age 19 var b 1 2 3 4 console log a instanceof Array false console log
  • 【翻译】我们建立了一个.NET操作员SDK(所以您不必这样做)。

    我们用C 语言构建了一个 NET操作者SDK 因此您可以用C 或任何 NET语言构建自己的Kubernetes操作者 当然也 有Go Operator SDK 还有我们的Java Operator SDK 那么为什么不为 NET社区提供一些
  • 用 Visual Studio 2019 编译 FFmpeg 简单教程

    需要的东西 Visual Studio 2019 这个自行解决吧 本人用的是社区版 MSYS 环境 去 https www msys2 org 下载 本人下载的是 msys2 x86 64 20210725 exe yasm exe 去 h
  • Security in IP-Based IoT Node and Device Authentication

    Abstract The IoT security aims for enabling IoT data protection in various interconnected nodes These frameworks require
  • 触屏fling/scroll/drag的区别及其详细过程

    原文地址 Android 触屏fling scroll drag的区别及其详细过程 作者 飘锦丹枫 Google了一下 终于搞清了touch screen下的几种操作模式 对应的是事件 对于一个view 常用的操作有点击 click 和长按
  • 原生js实现ajax请求(带请求头header)和数据传参过程代码

    一 Ajax 概述 Ajax 是 Asynchronous Javascript And XML 的简写 Ajax是一门技术 并不是一门语言 使用XHTML CSS来标准化呈现 使用XML和XSLT进行数据交换及相关操作 使用XMLHttp
  • java程序输出中文乱码解决方案

    标题java程序输出中文乱码解决方案 乱码如下 你好 在一些Java程序中我们输入的中文在输出时会出现乱码的情况 一下是解决方案 1 在编译xx java文件时使用javac encoding utf 8 xx java语句进行编译可以解决
  • sed 过滤字符文本 (一行行的)

    前面写过用sed对整个文件过滤的 代码很简单 现在这个是能够取出其中的一行行来过滤的 为了获取更多的相关信息 注意列表中的空格先变为 然后再变回来 不然会出错 bin sh i grep chenbing my c temp sed s g
  • 关于代码评审

    总结于 代码之丑 专栏 郑晔 为何要做代码评审 代码评审 也就是很多人熟悉的 Code Review Wikipedia 上定义是这样的 代码评审 是指对计算机源代码系统化地审查 常用软件同行评审的方式进行 其目的是在找出及修正在软件开发初
  • c#处理json数据

    这篇文章讲的很详细 亲测可行 此外我在添加一点注意事项 1 json转C 实体类 之前用了一个转的不行 害的我半天弄不出来 后面找到一个 JSON转C 实体类 BeJSON com 这个转出来的很不错 一下子就成功了 2 如果想在没有环境的
  • Chrome插件消息传递实例

    首先吐槽 360极速浏览器应用开发平台 的开发文档 在消息传递 http open chrome 360 cn extension dev messaging html 一节中 翻译极其低劣 Sending a request from t
  • SpringBoot通过自定义字段注解以及反射获取对象

    在Java的开发过程中 注解的应用场景是非常广泛的 Java也提供了很多内置的注解 比如 Override Deprecated SuppressWarnings等等 之前也写过一篇注解相关的文章 SpringBoot自定义注解 AOP以及
  • mysql机制_Mysql 重连机制<转载>

    连续两天早上发现服务上不去了 mysql server has gone away 然后又通过mysql客户端连了一下mysql 没问题 看来是程序写错了 我的connection没有重连机制 查了一下相关的资料 django是每次操作都重
  • MA35D1记录1-源码编译

    上面是我的微信和QQ群 欢迎新朋友的加入 今天年假结束 突然发现新唐即将发布MA35D1 去官网和git仓库查了下 新唐趁我放假又偷偷更新了一些资料 之前发布的是yocto的环境 那个我倒也用 但时不时要翻墙 对国内用户来说 多少有点恶心人
  • linux(centos7)下建立web页面

    我打算从centos7配置IP开始记录 就是记录一下我的搭建过程 1 在VMware虚拟机选择centos7镜像安装完毕后 设置用户 密码 发现进入的是图形化界面 于是通过CTRL ALT F3进入命令行界面 现在用的VMware版本导致我
  • 【搞一点AUTOSAR】基于TC397的MACL-ADC配置解读(使用EB)

    搞一点AUTOSAR 基于TC397的MACL ADC配置解读 使用EB 文章目录 搞一点AUTOSAR 基于TC397的MACL ADC配置解读 使用EB 前言 一 ADC模块介绍 1 ADC模块的功能 2 模块相关概念首字母缩略介绍 二