【搞一点AUTOSAR】MCAL-ADC转换请求和转换队列

系列文章目录

【搞一点AUTOSAR】基于TC397的MACL_ADC配置(Davinci工具链)

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



前言

在这里插入图片描述

友友们,求点赞、互动、收藏呀


一、SARADC是什么?

汽车芯片中的ADC主要有两种 SARADC和Delta-Sigma 模数转换器( DSADC)。
逐 次 逼 近 型 模 数 转 换 器 ( Successive Approximation Register Analog-to-digitalConverter, SARADC),基于逐次逼近原理,可以对电压信号进行采样。

二、 模块结构图

SARADC的基本功能单元可以分为模拟部分数字逻辑部分

模拟部分对应图中的模数转换单元,模数转换单元最多支持 16个转换通道,实现电压信号的采样和保持,根据逐次逼近原理输出 12位的数字转换结果。

数字逻辑部分主要包括转换请求控制单元、转换控制单元、转换结果处理单元和 中断生成单元。

SARADC支持软件触发、内部触发、外部触发等多种触发方式,可以根据应用需求配置不同的采样触发方式、转换序列和结果处理。
在这里插入图片描述

  • SARADC 的时钟和复位控制在 RCC 模块实现
  • SARADC 可以通过 EXTI、 GTM 和 CCU6 模块实现外部的触发控制和门控,内部的结果处 理单元控制转换结果。
  • 除了 CPU 和 DMA 可以直接访问之外,通过 HDI(Hardware DataInterface)接口, GTM、 FC 和 DTS
    模块能够实时读取 SARADC 的采样转换结果
  • SARADC支持查询、中断和 DMA 的应用方式,转换完成后产生的中断通过 INTC 模块管理后由 CPU处理
  • 可以将SARADC组成同步组,通过同步组实现同步采样功能。

三、转换控制

  1. SARADC 的时钟源来自 AHB 总线时钟,通过配置相应的寄存器 可以选择合适的工作频率,推荐的工作频率为 12.5MHz。
  2. 如果应用上不需要 ADC 一直激活采样,可以通过软件关闭模拟转换单元来减少功耗。
  3. 芯片上电复位后默认模拟转换单元关闭。
  4. 在配置模拟转换控制寄存器时,需要先配置其他位域,再配置 相应的寄存器,启动模拟转换单元。
  5. 启动模拟转换单元后, 仲裁模块等待 1.5μs 后才会发出有效请求, 否则触发请求无效。
  6. SARADC 在连续对同一个模拟通道采样时,默认两次转换之间保证 2个时钟采样时间。如果存在通道切换,可以通过配置相应的寄存器来设定通道切换时,额外增加的采样时间。
  7. SARADC 分辨率默认为 12 位,分辨率可以通过修改 相应的寄存器 进行配置
  8. SARADC 参 考 电 压 可 以 选 择 来 自 VAREF 或 者 通 道 0 的 输 入 电 压 , 通过相应的寄存器 进行配置
  9. 支持校准功能

四、转换请求生成

1、转换请求队列生成图

  • 转换请求生成模块可根据应用软件配置产生相应的的转换请求序列,每个 SARADC 都有 3 个深度为 16 的 FIFO 队列( Q0、 Q1 和 Q2)来存储请求序列。
  • 每个 SARADC 同时支持 3 个转换队列请求的输入,并将转换请求交由仲裁器进行统一调度。
  • 仲裁器周期性扫描请求源,并选择具有最高优先级的转换请求交给模拟转换单元启动模数转换。
  • Stage0 为下一个被转换通道信息,当转换动作开始,它的内容会立即被存到 Backup Stage中。如果该转换队列为低优先级,且仲裁中被其它高优先级队列打断,则该队列再次启动转换时,首先对 Backup Stage 中的通道进行处理。

转换请求队列生成图如下

在这里插入图片描述

2、三种触发方式:

通过触发事件,可以发起对某个模拟输入通道或一组通道的采样转换。

软件触发,内部定时器触发和外部触发。

软件触发:配置相应寄存器的值为1 ,软件直接触发采样。

内部定时器触发:每个队列都有一个 8 位定时器,向上循环计数。可以软件设置定时器触发采样,也可以通过外部触发启动内部定时器。当定时器开始工作,其它外部触发将被忽视。当转换序列为空,定时器停止工作。定时器的工作方式分为两种,一是按照寄存器配置等间隔触发;二是只在第一次触发时等待寄存器配置的时长,接下来的转换只要转换序列不为空,则连续进行触发转换,无需等待。

外部触发:通过外部触发源触发采样,例如来自外部定时器脉冲触发。此外,队列Q2 可以由同一 ADC 内的其它队列( Q0 或 Q1 )的转换完成事件触发,需配置上图中的寄存器2=0XF。也可通过菊花链的方式来扩展转换队列,通过配置寄存器将其它相邻 ADC 的队列转换完成事件作为当前 ADC 的触发源。使用外部触发时需要禁用软件触发和定时器触发,需要配置寄存器,选择外部触发源或菊花链触发源。在触发源信号有效且 FIFO 队列不为空时产生转换请求

3、转换队列请求与门控信号

  • 转换队列请求是否发出还取决于门控信号,通过配置寄存器选择不同的门控模式。
  • 此外,如果转换队列控制寄存器配置为 QINRi. EXTR=0x1 ,则触发事件有效,才会产生通道转换请求。否则如果配置为 QINRi.EXTR=0x0,队列不为空,就立刻产生转换请求,无需等待触发。
  • 送到仲裁器的转换请求应包括待转换通道,外部上下拉电阻控制信息。
  • 为了实现任意通道序列转换的编程可控,采用了 FIFO 结构对待转换队列进行管理。
  • 发起一次转换请求前,应初始化 FIFO, 通过多次写入配置寄存器 QINRi 将待转换通道信息依次压栈入 FIFO(最大支持 16 个
    stage)。
  • 只有当转换队列 FIFO 不为空时,此队列请求源才会发起转换请求。
  • 软件需选择触发信号类型、触发源、模拟通道号以及请求的优先级。
  • 每个转换请求均可配置为单次转换或连续转换模式
  • 如果配置了 FIFO,除非 FIFO 里的队列转换完成,或者系统复位,或者软件配置了QMRi.FLUSH 主动清空 FIFO 队列,否则
    FIFO 里的队列数据一直有效。
  • wait-for-read模式:把某一个转换通道配置成了这个模式后,在对这个通道进行转换时,硬件需要先查询目标寄存器地址是否为空,即上一次采样的结果是否被读取,如果没有被读取,此次转换请求被中止,存到Backup Stage 里,直到目标寄存器的结果被读出后,才可以重新发起一次新的请求

总结

本周第二更

### 关于 AUTOSAR MCAL GTM 在达芬奇平台上的配置 #### 工程环境准备 为了在达芬奇平台上成功配置AUTOSAR MCAL GTM模块,需确保开发环境中安装有特定版本的工具链。单片机型号为TC234L,所使用的MCAL_Autosar版本为4.0.3,以及MCAL配置软件DaVinci Configurator 5.18.29和SWC配置软件DaVinci Developer 4.3[^4]。 #### 删除不必要的文件与代码片段 对于不涉及GTM模块的应用场景,在项目初始化阶段应清理掉无关紧要的部分。具体而言,应当移除`MCAL/intergration_general/src`目录及其子项,并且从`tricore_general`文件夹中剔除`Mcal.c`源码文件;与此同时,还需审查并去除存在于MCU组件里有关联至GTM的一切逻辑实现[^1]。 #### 初始化设置 针对GTM外设控制器的启动过程,建议编写专门用于完成底层资源分配及状态设定的init函数。此操作有助于保障后续高级别服务调用前的基础条件满足度。 #### 可执行单元设计 考虑到实际应用场景的需求差异性,每一个独立的功能处理流程都可通过定义成Runnable的形式加以体现。这些由开发者自定义编写的例程最终会被映射到操作系统层面的任务结构体当中去执行相应的工作负载[^2]。 #### 定时器端口引脚选择 当涉及到PWM信号输出或其他形式的时间敏感型控制任务时,合理规划好定时器资源至关重要。例如,在本案例中提到的选择方案——即通过指定`GtmTimerPortPinSelect=TOUT149_SELI_8_PORT34_PIN4`来决定具体的物理连接关系[^3]。 #### ADC采样通道分组策略 根据应用需求的不同,可以灵活调整模拟数字转换器(ADC)内部工作方式。比如在此处描述的情形下,ADC0被细分为两批不同的采集序列(`AdcGroup_0`, `AdcGroup_1`),它们各自遵循队列模式或背景扫描机制运作;而另一个实例则是ADC1里的两个群集(`Group2`,`Group3`)同样采取了类似的组织形态。 #### 特权级别管理 鉴于安全性和性能优化方面的考量,有必要明确规定哪些部分应该处于何种程度的安全上下文中运行。特别是像访问特殊功能寄存器(SFRs)这样的低级I/O动作往往更适合放在监督者(supervisor)权限之下进行;当然也可以依据实际情况切换至用户(user)-1模式,只要保证两者之间的一致性即可[^5]。 ```cpp // 示例:初始化GTM模块 void Init_GTM(void){ // 清理旧数据... // 设置新的参数... } // 示例:创建一个简单的Runnable void MyFirstRunnable(){ while(true){ // 执行某些任务... Os_Delay(1); // 延迟一段时间再继续循环 } } ```
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值