打印
[AURIX™]

MCAL-ADC转换请求和转换队列

[复制链接]
244|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、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组成同步组,通过同步组实现同步采样功能。
三、转换控制
SARADC 的时钟源来自 AHB 总线时钟,通过配置相应的寄存器 可以选择合适的工作频率,推荐的工作频率为 12.5MHz。
如果应用上不需要 ADC 一直激活采样,可以通过软件关闭模拟转换单元来减少功耗。
芯片上电复位后默认模拟转换单元关闭。
在配置模拟转换控制寄存器时,需要先配置其他位域,再配置 相应的寄存器,启动模拟转换单元。
启动模拟转换单元后, 仲裁模块等待 1.5μs 后才会发出有效请求, 否则触发请求无效。
SARADC 在连续对同一个模拟通道采样时,默认两次转换之间保证 2个时钟采样时间。如果存在通道切换,可以通过配置相应的寄存器来设定通道切换时,额外增加的采样时间。
SARADC 分辨率默认为 12 位,分辨率可以通过修改 相应的寄存器 进行配置
SARADC 参 考 电 压 可 以 选 择 来 自 VAREF 或 者 通 道 0 的 输 入 电 压 , 通过相应的寄存器 进行配置
支持校准功能
四、转换请求生成
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 里,直到目标寄存器的结果被读出后,才可以重新发起一次新的请求
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_44688936/article/details/128103031

使用特权

评论回复
沙发
caigang13| | 2024-12-9 08:29 | 只看该作者
一般16位以下分辨率的ADC都是采用的逐次比较型ADC

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

4143

帖子

2

粉丝