系列文章目录
【搞一点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组成同步组,通过同步组实现同步采样功能。
三、转换控制
- 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 里,直到目标寄存器的结果被读出后,才可以重新发起一次新的请求
总结
本周第二更