MCAL ADC Module原理和配置详解

原创 嵌入式软件实战派 2021-07-21 12:30
↑点击上方蓝色字体,关注“嵌入式软件实战派”回复“AUTOSAR”获得更多实战教程。
本文从以下角度详细讲解MCAL ADC的原理、配置和使用:
  1. 基本概念

  2. 模块依赖

  3. 功能要求

  4. 工具配置

  5. 应用实现


1. 基本概念
ADC,即Analogue Digital Converter缩写。简单来说,它是将输入的模拟信号转换为数字信号输出。
提到转换,里面就会涉及到采样、精度、转换时间等概念或参数。
在AUTOSAR中,关于ADC的概念要先理解下
    ADC Module
ADC 基础软件模块 ADC Driver,也缩写为 ADC Driver
    ADC Channel
表示绑定到一个端口引脚的逻辑 ADC 实体。
    ADC Channel Group
一组 ADC 通道链接到同一个 ADC 硬件单元。整个组的转换由一个触发源触发。
    ADC Result Buffer (ADC Streaming Buffer, ADC Stream Buffer)
ADC 驱动程序的用户必须为每个组提供一个缓冲区。 如果选择了流访问模式(streaming access mode),该缓冲区可以保存同一组通道的多个样本。如果选择单一访问模式(single access mode),每个组通道的一个样本将保存在缓冲区中。
    Software Trigger
启动一个 ADC 通道组或一系列连续 ADC 通道组转换的软件 API 调用。
    Hardware Trigger
ADC 内部触发信号,用于启动 ADC 通道组的一次转换。 ADC 硬件触发在 ADC 硬件内部产生 检测到硬件触发后,无需软件即可启动 ADC 通道组转换。
注意:如果 ADC 硬件不支持硬件触发,可以通过软件触发结合 GPT/ICU 驱动程序实现类似的行为。
    Conversion Mode
One-ShotADC 通道组的转换在触发后执行一次,并将结果写入分配的结果缓冲区。触发器可以是软件 API 调用或硬件事件。
ContinuousADC 通道组的转换在软件 API 调用(启动)后连续执行,并将结果写入分配的结果缓冲区。连续转换可以通过软件 API 调用(停止)停止。
    Sampling Time/Sample Time
采样模拟信号的时间
    Conversion Time
采样模拟信号转换成数字信号的时间
    Acquisition Time
Sample Time + Conversion Time.
 
2. 模块依赖
MCU
ADC会用到MCU的时钟配置。时钟频率会对ADC有以下影响:
    • Trigger frequency
    • Conversion time
    • Sampling time
Port
这个是ADC的Port复选功能配置。
Det
ADC的错误捕获用。
 
ADC的头文件结构如下:
 
3. 功能要求
ADC不仅仅只有我们简单理解的采样读取这些功能的,AUTOSAR里面对其有很多要求,ADC模块也实现了很多功能。
下表列出了ADC用户可能需要的功能以及ADC模块以何种方式提供这些功能。
ADC Buffer Access Mode
上文有提到“Buffer Access Mode”的概念,以下通过一个案例来解释:
1. Configuration
示例配置由三个 ADC Group组成。G1包含2个通道,G2和G3各包含一个通道。对于G1 和G2,Group访问模式 配置为ADC_ACCESS_MODE_STREAMING。G3的Group访问模式为ADC_ACCESS_MODE_SINGLE。ADC 驱动程序将Group 1-3 的转换结果存储在三个应用程序缓冲区中,通过三个配置的 ADC_RESULT_POINTER 访问:G1_ResultPtr、G2_ResultPtr 和 G3_ResultPtr。
    2. Initialization
用户必须为ADC Group结果提供应用程序结果缓冲区。每组需要一个缓冲区。如果选择了Streaming Access Mode,缓冲区大小取决于组通道数、Group访问模式和Stream采样数。在开始Group转换之前,用户必须使用API函数Adc_SetupResultBuffer初始化Group结果指针,该函数将Group结果指针初始化为指向指定的应用程序结果缓冲区。
    3. Adc_GetStreamLastPointer用法
ADC 驱动程序将G1、G2 和 G3组的转换结果存储在相应的结果缓冲区 G1_ResultBuffer[]、G2_ResultBuffer[] 和 G3_ResultBuffer[]中。ADC驱动程序不支持从ADC API函数直接访问ADC硬件结果寄存器。
用户提供三个指针 G1_SamplePtr、G2_SamplePtr 和 G3_SamplePtr调用Adc_GetStreamLastPointer后会指向ADC申请结果缓冲区。精确的指针G1_SamplePtr在调用Adc_GetStreamLastPointer后指向最近完成的转换回合的最新G1_CH0结果(G1_CH0是G1组定义中的第一个通道)。group 1的应用结果缓冲区保存了 G1_CH0 的3份Stream结果,以及G1_CH1的3份Stream结果。了解应用程序结果缓冲区布局,用户可以访问最新一轮转换的所有组通道结果。G2_SamplePtr和G3_SamplePtr也对齐,调用Adc_GetStreamLastPointer后,指向对应组的第一个组通道的最新结果。两组都只有一个频道。G2_SamplePtr 指向G2_CH2结果之一(最新结果)。由于G3配置为Single Access Mode,因此G3_SamplePtr始终指向G3_CH3。
 4. Adc_ReadGroup用法
如果启用了可选的API函数Adc_ReadGroup,则用户必须为所选组提供额外的缓冲区,该缓冲区可以保存一轮组转换的结果。调用Adc_ReadGroup将最新的结果从应用程序结果缓冲区复制到应用程序读取组缓冲区。在该示例中,一个应用程序读取缓冲区 (G2_G3_ReadBuffer) 用于组G2和G3。
ADC的转换和交互
上图中
Example 1:包含通道[CH0CH1CH2CH3 CH4]的通道组配置为连续转换模式。完成每次扫描后,将调用Notification(如果已启用)。然后自动开始新的扫描。
Example 2:包含通道[CH0CH1CH2CH3 CH4]的通道组配置为One-Shot转换模式。完成扫描后,将调用Notification(如果已启用)。
Example 3:包含通道[CH3]的通道组配置为连续转换模式。完成每次扫描后,将调用Notification(如果已启用)。然后自动开始新的扫描。
Example 4:包含通道[CH4]的通道组配置为One-Shot转换模式。完成扫描后,将调用Notification(如果已启用)。
 ADC的状态交互
ADC模块有一个状态机。而这状态是特定于组的,而不是特定于模块。以下图表显示了ADC组的可能的配置选项。状态转换取决于ADC组配置。
由于可能的case比较多,以下我仅挑选几种来说明(更多的描述请见官方文档AUTOSAR_SWS_ADCDriver.pdf):
    1. ADC State Diagram for One-Shot/Continuous Group Conversion Mode
2. ADC State Diagram for One-Shot Conversion Mode, Software Trigger Source, Single Access Mode
    3. ADC State Diagram for Continuous Conversion Mode, Software Trigger Source, Linear and Circular Streaming Access Mode
 ADC的时序交互
4. 工具配置

嵌入式软件实战派 专注嵌入式软件开发领域知识传授,包括C语言精粹,RTOS原理与使用,MCU驱动开发,AUTOSAR搭建,软件架构方法设计等。
评论
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 161浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 49浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 95浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 111浏览
  •  光伏及击穿,都可视之为 复合的逆过程,但是,复合、光伏与击穿,不单是进程的方向相反,偏置状态也不一样,复合的工况,是正偏,光伏是零偏,击穿与漂移则是反偏,光伏的能源是外来的,而击穿消耗的是结区自身和电源的能量,漂移的载流子是 客席载流子,须借外延层才能引入,客席载流子 不受反偏PN结的空乏区阻碍,能漂不能漂,只取决于反偏PN结是否处于外延层的「射程」范围,而穿通的成因,则是因耗尽层的过度扩张,致使跟 端子、外延层或其他空乏区 碰触,当耗尽层融通,耐压 (反向阻断能力) 即告彻底丧失,
    MrCU204 2025-01-17 11:30 179浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 150浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 181浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 121浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 30浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 73浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 360浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦