Autosar MCAL-ADC配置PWM硬件触发采样

news2024/11/27 22:27:29

文章目录

  • 前言
  • ADC配置
    • AdcGroupRequestSource
    • AdcGroupTriggSrc
    • AdcHwExtTrigSelect
    • AdcHwGatePin
    • AdcGeneral-AdcHwTriggerApi
    • AdcHwGateSignal
    • AdcHwTrigSignal
    • AdcHwTrigType
  • Gtm
    • GtmConnections
  • PWM
  • 实际使用
  • 总结

前言

在实际项目开发过程中,关于ADC采样,大部分使用软件触发即可,但是在特定情况下,需要应用到硬件触发采样,如在测量电流时,可能就需要使用到ADC的硬件触发功能。本文基于Davinci cfg及TC27x芯片,介绍如何配置通过PWM触发ADC采样。

ADC配置

在之前的一篇文章中,介绍了ADC的大部分配置,传送门:Autosar MCAL-ADC详解(二)-基于Tc27x的cfg软件

下面介绍和硬件触发相关的配置

AdcGroupRequestSource

REQSRC0_8STG_QUE对应Group Queued source
REQSRC1_NCH_SCAN对应Group Scan source
REQSRC2_BGND_SCAN对应Background Scan source

此处我们选择REQSRC0_8STG_QUE,在芯片手册中对于Group Queued source有如下流程图:

此处很清楚的可以看到,对于硬件触发来说,我们要配置trigger inputs和gating inputs的来源。在后面的配置项中介绍。关于其他请求源,可以参考芯片手册。

cfg中配置:

AdcGroupTriggSrc

此处选择HW触发


cfg中配置:

AdcHwExtTrigSelect

由Group Queued source图可知,该trigger可以由REQTRx[H:A]输入,也可以由gating的pin直接输入。

对于trigger的选择,在芯片手册中有如下定义:


此处我们选择trigger由gating input。

cfg中配置:

AdcHwGatePin

配置Gating pin,在芯片手册中有如下定义:


此处我们选择GTM_adcx_trig0

cfg配置:

AdcGeneral-AdcHwTriggerApi

要使用HW触发ADC,需要使用该API函数。

cfg中配置:

AdcHwGateSignal

此处我们使用的是gate pin作为trigger,且使用PWM波的上升沿触发,这里配置NONE即可,不关心Gate的输入,只关心跳变沿

在芯片手册中对应的寄存器为:

对应的位为:


cfg中配置:

AdcHwTrigSignal

此处我们选择PWM上升沿触发,具体触发点在PWM中配置duty实现。

在芯片手册中对应的位为:


cfg中配置:

AdcHwTrigType

此处配置为外部触发

Gtm

GtmConnections

现在需要将对应的PWM通道(TOM)和ADC映射,在手册中有如下映射关系:


该对应关系存在于GTM模块中,配置也是在这个模块中配置。

此处我们采用TOM Channel6作为trigger0

cfg中配置:


对应的生成代码对应的值

  
static const uint8 Gtm_kAdcConnections0[GTM_NO_OF_ADC_MODULES] = 
{
 0x01U, 0x00U, 0x00U, 0x00U, 0x00U,
};

PWM

需要配置对应的PWM模块关联对应的TOM模块

之前有介绍过PWM模块的配置,具体可以参考:

Autosar PWM配置及使用

实际使用

ADC初始化时使用Adc_EnableHardwareTrigger函数允许ADC硬件触发


Adc_EnableHardwareTrigger(AdcGroupId);

软件运行过程中对相应通道的ADC采样进行处理。

总结

以上介绍了PWM硬件触发ADC的配置项。在实际使用中,可以按照自己的需求来修改。


若你觉得本文对你有帮助,欢迎点赞,关注,收藏,转发~~~ 你的鼓励是对小弟的最大支持~~~

建了一个WX公众h,《汽车电子学习笔记》感兴趣可以关注一下~~~文章都会同步更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

存储器与cpu的连接

1. 只读存储器 只读存储器中一般用于保存系统程序或者系统的配置信息; 早期的只读存储器, 在厂家就写好了内容改进1, 用户可以自己写, 一次性改进2, 可以多次写-- 要能对信息进行擦除;改进3,  电可擦…

【Leetcode 剑指Offer】第3天 字符串(简单)

字符串剑指 Offer 05. 替换空格字符串构造函数和析构函数操作函数剑指 Offer 58 - II. 左旋转字符串剑指 Offer 05. 替换空格 题:实现一个函数,把字符串 s 中的每个空格替换成"%20"。 class Solution { public:string replaceSpace(string s…

华为OD机试真题 用 C++ 实现 - 单词反转

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

Springcloud-Seata分布式事务

目录 一、什么是Seata? 二、Seata的执行流程 三、搭建Seata服务器 四、配置微服务客户端 分布式事务的解决办法: 使用消息中间件手写代码解决分布式事务使用第三方组件--->Seata阿里巴巴的产品 这里只介绍通过第三方插件-----Seata解决分布式事务的问题 一、什…

说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系

原生组件 fiber 原生组件 fiber,指的就是 type 为 “span”、“div” 的 fiber。 1.fiber.stateNode 指向真实 DOM 节点;2.node["__reactFiber$" randomKey] 指向对应 fiber,使用随机数是防止和业务代码的属性名冲突,…

【系统设计】攻击技术

一、跨站脚本攻击 概念 跨站脚本攻击(Cross-Site Scripting, XSS),是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代…

python | 第八、九章考试题

本篇文章是对北京理工大学嵩天老师的《Python语言程序设计》第八章:程序设计方法学、第九章:Python计算生态纵览考试题的学习记录。 目录 一、第八章考试题 1、英文字符的鲁棒输入 2、数字的鲁棒输入 二、第九章考试题 1、系统基本信息获取 2、二…

JavaScript学习第2天:JS内置对象、简单数据类型与复杂类型

一、内置对象 JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器对象 前面两种对象是JS 基础内容,属于 ECMAScript; 第三个浏览器对象属于JS 独有的 1、内置对象 内置对象就是指 JS 语言自带的一些对象。 JavaScript 提供了多个…

关于java8的List的stream流的foreach()方法问题探究(坑)与替代方案

一、起因 今天发现线上系统出现了一个bug&#xff0c; 我有一个“定时任务”每天凌晨触发&#xff0c;任务内容&#xff1a; ① 定时调用的系统暴漏的接口&#xff0c;来定时获取List<Object>数据。 ② 然后我会筛选出该List中符合条件的Object&#xff0c;对筛选出来的…

数组类模板

要求&#xff1a;设计一个数组模板类&#xff08;MyArray&#xff09;&#xff0c;完成对不同类型元素的管理操作步骤设计头文件在 qtcreate下先创建03_code的项目&#xff0c;然后右键点击03_code添加新文件&#xff0c;点击头文件&#xff0c;点击Choose命名为 myarry.hpp&am…

产品运营︱用户活跃度低的解决方法

app用户活跃度低&#xff0c;产品拉新变现效率慢&#xff0c;这是运营app时难免会遇到的情况。要想解决这类问题&#xff0c;就要从可能的原因下手&#xff0c;进行产品的优化改进&#xff0c;记录下改变后的关键数据变化&#xff0c;定期做好复盘工作进行调整。 一、app用户量…

117.Android 简单的拖拽列表+防止越界拖动(BaseRecyclerViewAdapterHelper)

//1.第一步 导入依赖库和权限&#xff1a; //依赖库&#xff1a; //RecyclerView implementation com.android.support:recyclerview-v7:28.0.0//RecyclerAdapter implementation com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28 //用到的权限&#xff1a; <!…

【华为OD机试模拟题】用 C++ 实现 - 求最大数字

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

优思学院:六西格玛管理的优势有哪些?

六西格玛的优势有哪些呢&#xff1f;以下我们来探讨一下。 一・降低企业整体成本 对企业而言&#xff0c;不良品要么被废弃&#xff0c;要么需要重新加工&#xff0c;或者需要在客户现场维修或更换&#xff0c;这些都会增加企业成本。根据美国的统计数据&#xff0c;执行3σ管…

搭建Scala集成开发环境

文章目录前言搭建Scala集成开发环境&#xff08;一&#xff09;启动IDEA&#xff08;二&#xff09;安装Scala插件&#xff08;四&#xff09;创建Scala项目1、创建Scala项目 - ScalaDemo012、创建Scala类 - HelloWorld3、创建Scala单例对象 - TestHelloWorld&#xff08;五&am…

HIVE 基础(四)

目录 分桶&#xff08;Bucket&#xff09; 设定属性 定义分桶 案例 建表语句 表数据 上传到数据 创建分桶语句 加载数据 分桶抽样&#xff08;Sampling&#xff09; 随机抽样---整行数据 随机抽样---指定列 随机抽样---百分比 随机抽样---抽取行数 Hive视图&#…

计算机基础知识——认识寄存器

下面我们就来介绍一下关于寄存器的相关内容。我们知道&#xff0c;寄存器是 CPU 内部的构造&#xff0c;它主要用于信息的存储。除此之外&#xff0c;CPU 内部还有运算器&#xff0c;负责处理数据&#xff1b;控制器控制其他组件&#xff1b;外部总线连接 CPU 和各种部件&#…

【软件测试】自动化测试的科幻大片,揭开面纱的后背......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 只要一听到 “自动化…

Solon v2.1.4 发布。支持 java、kotlin、groovy!

本次发布&#xff0c;重点测试和验证了在 java、kotlin、groovy 三种 jvm 语言里&#xff0c;开箱即用的特性。并发布 Solon Initializr&#xff1a; https://solon.noear.org/start/ &#xff08;也即将发布 idea 插件&#xff09; 最近&#xff0c;与小诺开源团队合作发布了…

JS中如何将一个普通对象转换为可迭代对象,并且可使用for...of迭代对象,内含手写一个简单的迭代器

文章目录一、认识迭代器二、为类数组添加迭代器方法三、为colorObj对象添加迭代器方法四、优化colorObj代码五、ES6内置迭代对象方法这里有一个普通对象&#xff1a; const colorObj {white: "小白",black: "小黑",gray: "小灰", }如何对 colo…