DSP T320F2803x 模数转换模块 ADC

2023-11-10

一、ADC 概览

1.1 特点

29803x 的 ADC 模块是12位循环 ADC。 部分 SAR,部分流水线。其核心是 12 位的转换器,有两个采样保持器,可同时或顺序采样。通过多路复用后有 16 个模拟转换输入通道。转换器可以配置为与内部带隙基准一起运行,以创建基于真实电压的转换,或者与一对外部电压基准(VREFHI/LO)一起运行,以创建基于比率的转换。

ADC 模块的功能包括:

  • 具有内置双采样保持(S / H)的 12 位 ADC 内核
  • 同时采样或顺序采样模式
  • 全范围模拟输入:0 V 至 3.3 V ,或 VREFHI / VREFLO 比例
  • 多达 16 个通道,多路复用输入
  • 16 个转换开始,可配置的触发源、采样窗和通道
  • 16 个存放转换值的结果寄存器(单独寻址)
  • 多个触发源:
    —— S/W - 软件触发
    —— ePWM 1-7 触发
    —— GPIO XINT2 触发
    —— CPU 定时器 0/1/2 触发
    —— ADCINT 1/2 触发
  • 9 个灵活的 PIE 中断,可在任何转换后配置中断请求

1.2 ADC框 图

ADC 框图

二、SOC 操作原则

2.1 SOC 框图

与之前的 ADC 类型相反,此 ADC 不是基于排序器进行转换的,而是基于 SOC 进行转换的。SOC 设置单个通道转换单个信号的配置。在SOC设置有三种配置:开始转换的触发源配置,转换通道的配置,采样窗口的配置。每个 SOC 是独立配置的,可以配置成触发源、通道和采样窗口大小的任意组合。多个 SOC 可以根据需求配置成同一触发源、通道和/或采集窗口。

触发源通过 ADCSOCxCTL[TRIGSEL] 和 ADCINTSOCSEL1 或 ADCINTSOCSEL2 寄存器中的相应位组合来进行配置。

软件还可以通过 ADCSOCFRC1 寄存器强制执行SOC事件。

通过 ADCSOCxCTL 寄存器的 CHSEL 位 和 ACQPS 位可以配置通道和采样窗口大小

SOC 框图

比如,要配置当 ePWM3 定时器达到其周期匹配时发生在通道 ADCINA1 上的单次转换,必须首先设置 ePWM3 以在周期匹配时输出SOCA或SOCB信号。在这种情况下,我们将使用SOCA。 然后,使用其 ADCSOCxCTL 寄存器设置 SOC 之一。无论选择哪个 SOC 都没有影响,我们选择 SOC0。 ADC允许的最快采样窗口为7个周期。为采样窗口选择最快的时间,为转换的通道选择 ADCINA1 通道,为SOC0 触发器选择 ePWM3,我们分别将 ACQPS 字段设置为 6,将 CHSEL 字段设置为 1,将 TRIGSEL 字段设置为 9。写入寄存器的结果值为:

ADCSOC0CTL = 4846h; // (ACQPS=6, CHSEL=1, TRIGSEL=9)

这样配置时,将在ePWM3 SOCA事件中启动ADCINA1的单次转换,并将结果值存储在ADCRESULT0寄存器中。

相反,如果ADCINA1需要外加过3倍的过采样,则可以为SOC1,SOC2和SOC3赋予与SOC0相同的配置。

ADCSOC1CTL = 4846h;
ADCSOC2CTL = 4846h;
ADCSOC3CTL = 4846h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=1, TRIGSEL=9)

如此配置后,将在ePWM3 SOCA事件中串行启动ADCINA1的四次转换,并将结果值存储在ADCRESULT0 – ADCRESULT3寄存器中。

另一个应用程序可能需要从同一触发器中采样3个不同的信号。 这可以通过简单地更改 SOC0-SOC2 的 CHSEL 字段而使 TRIGSEL 字段保持不变来完成。

ADCSOC0CTL = 4846h;
ADCSOC1CTL = 4886h;
ADCSOC2CTL = 48C6h;
// (ACQPS=6, CHSEL=1, TRIGSEL=9)
// (ACQPS=6, CHSEL=2, TRIGSEL=9)
// (ACQPS=6, CHSEL=3, TRIGSEL=9)

通过这种方式配置后,将在ePWM3 SOCA事件中串行启动三个转换。 通道ADCINA1上的转换结果将显示在ADCRESULT0中。 通道ADCINA2上的转换结果将显示在ADCRESULT1中。 通道ADCINA3上的转换结果将显示在ADCRESULT2中。 转换的通道和触发器与转换结果的显示位置无关。 RESULT寄存器与SOC相关联。

2.2 ADC采集(采样和保持)窗口

外部驱动器在快速有效地驱动模拟信号方面的能力各不相同。 一些电路需要更长的时间才能正确地将电荷转移到ADC的采样电容器中。 为了解决这个问题,ADC支持控制每个单独的SOC配置的采样窗口长度。 每个 ADCSOCxCTL 寄存器都有一个 6 位字段 ACQPS用于确定采样和保持(S / H)窗口的大小写入该字段的值比该SOC的采样窗口所需的周期数少一个。 因此,该字段中的值15将给出16个时钟周期的采样时间。 允许的最小采样周期数为7(ACQPS = 6) 通过将采样窗口大小与ADC的转换时间(13个ADC时钟)相加,可以得出总采样时间。 下面的中显示了各种采样时间的示例。

具有不同 ACQPS 值的采样时间

2.3 触发操作

可以将每个 SOC 配置为从许多输入触发器之一启动。如果需要,可为同一通道配置多个 SOC。以下是可用输入触发器的列表:

  • 软件
  • CPU 定时器 0/1/2 中断
  • XINT2 SOC
  • ePWM 1-8 SOCA 和 SOCB

ADC开始转换控制寄存器 【ADCSOCxCTL,x为0~15】:

ADC中断触发SOC选择1寄存器【ADCINTSOCSEL1】:

ADC中断触发SOC选择2寄存器【ADCINTSOCSEL2】:其描述与上面一样,但其控制的是 SOC8 到 SOC15.

2.4 通道选择

可以将每个 SOC 配置为转换任何可用的 ADCIN 输入通道。将 SOC 配置为顺序采样模式时,ADCSOCxCTL 寄存器的四位 CHSEL 字段定义要转换的通道。 将 SOC 配置为同时采样模式时,CHSEL字段的最高有效位将被丢弃,而较低的三位将确定要转换的通道对。

ADCINA0与VREFHI共享,因此在使用外部基准电压模式时,不能将其用作可变输入源。

ADCSOCxCTL[CHSEL]:

ADCSOCxCTL[CHSEL]

三、ONESHOT 单次转换支持

此模式将允许您在轮询组中对下一个触发的 SOC 执行一次转换。 ONESHOT 模式仅对轮询组中存在的通道有效。 在循环方案中未配置为触发 SOC 的通道将根据 ADCSOCPRIORITYCTL 寄存器中 SOCPRIORITY 字段的内容获得优先级。

ONESHOT 单次转换

ONESHOT 模式对顺序模式和同时模式的影响将在下面说明。

顺序模式:仅允许在 RR 模式下的下一个活动 SOC(从当前RR指针向上一个)生成SOC; 其他 SOC插槽的所有其他触发器将被忽略。

同时模式:如果当前 RR 指针具有同时启用的 SOC。 有效SOC将从当前RR指针增加2。 这是因为同时模式将为SOCx和SOCx + 1创建结果,而SOCx + 1永远不会被用户触发。

注意:由于上述实现原因,ONESHOT = 1 且 SOCPRIORITY = 10h 不是有效的组合。 在任何情况下,这都不应该是用户期望的操作模式。 上面的限制是下一个SOC必须最终被触发,否则ADC将不会为其他乱序触发生成新的SOC。 任何非正交通道都应置于优先模式,不受ONESHOT模式影响

SOC 优先级控制寄存器【SOCPRICTL】:

四、ADC 转换优先级

当同时设置多个 SOC 标志时,两种优先级形式之一决定了它们的转换顺序。 默认优先级方法是罗宾环(Round Robin)。 在此方案中,没有SOC具有固有的更高优先级。 优先级取决于循环指针(RRPOINTER)。 反映在 SOCPRICTL寄存器中的 RRPOINTER 指向最后转换的SOC。 最高优先级 SOC 被赋予大于 RRPOINTER 值的下一个值,并在 SOC15 之后回绕到 SOC0。 复位时该值为16,因为 0 表示已经发生转换。 当 RRPOINTER 等于16 时,最高优先级被赋予 SOC0。 当 ADCCTL1.RESET 位置 1 或写 SOCPRICTL 寄存器时,RRPOINTER 通过器件复位复位。

罗宾环优先级例子:

罗宾环优先级例子:

 

 

SOCPRICTL 寄存器中的 SOCPRIORITY 字段可用于从单个 SOC 向所有 SOC 分配高优先级。当配置为高优先级时,SOC 将在任何当前转换完成后中断罗宾环,并作为下一个转换插入。转换完成后,循环轮将继续其中断的位置。如果同时触发两个高优先级SOC,则编号较低的SOC将优先。

五、同时采样模式 Simultaneous Sampling Mode

在某些应用中,保持两个信号采样之间的延迟最小是很重要的。 ADC 包含双采样和保持电路,以允许同时采样两个不同的通道。 通过 ADCSAMPLEMODE 寄存器为一对 SOCx 配置了同步采样模式。 偶数号的 SOCx 和随后的奇数号的 SOCx(如 SOC0 和 SOC1)通过一个使能位(SOC0 和 SOC1 为SIMULEN0)耦合在一起。 耦合行为如下:

  • SOCx 的任何一个触发器都将启动一对转换。
  • 转换的通道对将由与触发的 SOCx 的 CHSEL 字段的值相对应的 A 通道和 B 通道组成。 该模式下的有效值为 0 - 7。
  • 两个通道将同时采样。
  • A 通道将始终首先转换。
  • 偶数 EOCx 脉冲将基于 A 通道转换生成,奇数 EOCx 脉冲将基于B通道转换生成。 
  • A 通道转换的结果放在偶数 ADCRESULTx 寄存器中,而 B 通道转换的结果写到奇数 ADCRESULTx 寄存器中。
CHSEL字段

比如,如果 ADCSAMPLEMODE.SIMULEN0 位置 1,并且SOC0的配置如下:

  • CHSEL = 2 (ADCINA2/ADCINB2 pair)
  • TRIGSEL = 5 (ADCTRIG5 = ePWM1.ADCSOCA)

当 ePWM1 发出 ADCSOCA 触发信号时,将同时采样 ADCINA2 和 ADCINB2(假定优先级)。 之后,将立即转换 ADCINA2 通道,并将其值存储在 ADCRESULT0 寄存器中。通过 ADCCTL1.INTPULSEPOS设置当 ADCINA2 的转换开始或完成时,将发生 EOC0 脉冲。 然后,将转换 ADCINB2 通道并将其值存储在 ADCRESULT1 寄存器中。 通过 ADCCTL1.INTPULSEPOS 设置,当 ADCINB2 的转换开始或完成时,将发生 EOC1 脉冲

同步采样模式的时序示例 / Late Interrupt Pulse :

同步采样模式的时序示例 / Late Interrupt Pulse

同步采样模式的时序示例 / Early Interrupt Pulse

同步采样模式的时序示例 / Early Interrupt Pulse

 

六、EOC 和中断操作

就像有 16 个独立的 SOCx 配置集一样,EOCx 脉冲也有 16 个。

在顺序采样模式下,EOCx 直接与 SOCx 相关联。 在同时采样模式下,偶数号和随后的奇数号的 EOCx 对与偶数号和随后的奇数号的 SOCx 对相关联。 根据 ADCCTL1.INTPULSEPOS 的设置,EOCx 脉冲将在转换开始或结束时发生。 

ADC 包含 9 个可标记为 和/或 的中断传递到PIE。 这些中断中的每一个可以配置为接受任何可用的 EOCx 信号作为其信号中断源。 可操作 INTSELxNy 寄存器中完成了以 EOCx 作为中断源的配置。 此外,可以将 ADCINT1 和 ADCINT2 信号配置为生成 SOCx 触发信号。 这有利于创建连续的转化流。

ADC 中断结构框图

 

七、ADC 上电顺序

ADC 复位后是关闭状态。在对 ADC 的任何寄存器进行写操作前,必须将 ADCENCLK.PCKCR0 置位,使能时钟。

ADC 的启动顺序为:

  1. 如果使用外部参考源,需操作 ADCCTL1 寄存器的 ADCREFSEL 位进行使能
  2. 在ADCCTL1寄存器(5-7 位 ADCPWDN, ADCBGPWD, ADCREFPWD)中启动参考源、带隙和模拟电路
  3. 通过设置 ADCCTL1.ADCENABLE 使能ADC
  4. 在首次转换之前,需要延时 1 ms

关断ADC电源时,可以同时清除步骤 2 中的所有三个位。 ADC 功率电平必须通过软件进行控制,并且与设备功率模式的状态无关。

八、ADC 校准

在制造和测试过程中,德州仪器(TI)会校准几个内部振荡器设置来校准 ADC。 这些设置作为名为 Device_cal() 的 C 调用函数的一部分嵌入到 TI 保留的 OTP 存储器中。 在boot ROM 引导启动过程中调用此函数会将工厂设置写入其各自的活动寄存器中,在此之前,ADC和内部振荡器将不遵守其指定参数。 如果在仿真过程中跳过了启动过程,则用户必须确保将调整设置写入各自的寄存器,以确保ADC和内部振荡器满足数据手册中的规格。 可以通过手动调用此函数或在应用程序本身中调用此函数,也可以通过 CCS 直接写入来完成。 为目标 MCU 创建适当的 .ccxml 文件时,CCS 中将包含用于设备校准的 gel 函数。

8.1 

零点偏移误差被定义为转换一个VREFLO电压时得到的结果。这个基本误差会影响ADC的所有转换,包括满刻度的增益和线性度指标,决定了转换器的直流精度。零点偏移误差可能是正的,或者是负的,正的意味着转换VREFLO时得到一个正的结果。负的意味着转换一个高于VREFLO的电压结果仍会是0。为了更正这种错误,两种误差的补码都会被写入ADCOFFTRIM寄存器。这个寄存器的值在AD转换结果保存到ADC结果寄存器之前会被用到。此操作被完全包含在ADC内核,所以结果的定时将不会受到影响,ADC能够保持全动态范围通过修改微调值。调用Device_cal()把厂家校正的零点偏移写到ADCOFFTRIM寄存器,用户能够修改ADCOFFTRIM的值以减少环境造成偏移误差。这个可以通过设置ADCCTRL1的VREFLOCONV位实现,不需要任何一个ADC通道。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DSP T320F2803x 模数转换模块 ADC 的相关文章

  • STM32——ADC采集

    目录 ADC简介 ADC主要特征 ADC功能框图 ADC引脚 电压输入范围 通道选择 单次转换模式 连续转换模式 转换顺序 规则序列 注入序列 触发源 转换时间 中断 转换结束中断 模拟看门狗中断 DMA请求 代码讲解 宏定义 xff1a
  • 光敏,红外,人体红外检测模块的模拟输出(ADC)实验——入门

    前面给大家介绍了传感器的开关输出的使用 xff0c 今天给大家介绍一下常见传感器的模拟输出的用法 xff0c 用到了STM32的ADC xff08 模数转换 xff09 模块和USART串口通信模块 代码就是正点原子的ADC实验的代码 今天
  • 【干货】STM32通过ADC模拟看门狗实现掉电保存

    1 前言 很多时候我们需要将程序中的一些参数 数据等存储在EEPROM或者Flash中 xff0c 达到掉电保存的目的 但有些情况下 xff0c 程序需要频繁的修改这些参数 xff0c 如果每次修改参数都进行一次保存 xff0c 那将大大降
  • MSP432(Keil5)——9.ADC驱动

    本次例程驱动了板载的ADC来读取一个模拟的角度传感器 xff0c 大家可以在ADC读取中断里面换成其他的计算 xff0c 具体引脚见程序代码 adc c span class token macro property span class
  • STM32F103C8T6 ADC功能

    12位逐次逼近型ADC 1us转换时间 输入电压0 3 3v和转化范围0 2 12 1 xff08 0 4095 xff09 成线性关系 2个ADC资源 xff0c ADC1和ADC2 xff0c 10个外部通道 有两种转换单元组 xff1
  • CCS6 配置工程头文件路径方法

    软件版本 Code Composer Studio Version 6 1 3 00034 配置头文件 给工程配置 右键工程名字没然后选择Properties 选择CCS Build gt Cxxxx Compiler gt Include
  • TI DSP TMS320C66x学习笔记之VLIB测试数据(三)

    VLIB是TI提供的针对C6x优化过的视觉库 下载地址 http software dl ti com libs vlib latest index FDS html 提供40多个核心函数 主要实现以下功能 Background Model
  • 关于OELD屏显示电池电量的简易方法

    如何采集电源电压大家可能都熟悉 stm32的ADC DMA能很方便迅速的帮我们采集到自己想要的电压数据 使用DMA进行数据搬运也能很好的减轻CPU的一部分压力 但是这样只是第一步 数据 用户想看到的有时候并不是数据 他们想要更直观方便的看到
  • 傅里叶变换的实质--正交之美

    引 最近在搞一个音频解码器 将随意录制好的声音按照不同的频率分离出不同的音频流 然后推到不同的音箱中 如果再考虑一下音场的谐性 那就是一个N 1声道的解码系统了 我只是想在女儿 或者儿子 出生之前为她做点事情 以便能最终做出个东西送给她 或
  • [转] DSP缓存机制

    本文主要以DSP讲解cache原理 但原理与CPU是相通的 故转载 原文地址 DSP 缓存机制 桑迪亚哥的博客 CSDN博客 dsp的cache DSP 缓存机制 注 本文说明的DSP基于TI c6000系列的C66x DSP 目录 DSP
  • TI(德州仪器) TMS320C674x逆向分析之二

    TI官网文档 http www ti com product tms320c6745 technicaldocuments 里面资料非常详细 可以对着里面一个个看 用的比较多的两个文档 TMS320C674x指令格式 TMS320C674x
  • Integral nonlinearity (INL) and differential nonlinearity (DNL) of data converters

    Syntax s inldnl analog digital range type s inldnl Name Value Description example s inldnl analog digital range type cal
  • DSP T320F2803x 模数转换模块 ADC

    一 ADC 概览 1 1 特点 29803x 的 ADC 模块是12位循环 ADC 部分 SAR 部分流水线 其核心是 12 位的转换器 有两个采样保持器 可同时或顺序采样 通过多路复用后有 16 个模拟转换输入通道 转换器可以配置为与内部
  • ESP32-C3入门教程 基础篇(一、ADC采样)

    经过前面的折腾 设计好了自己的测试开发板 搭建好了开发环境 然后正式开始进行功能测试了 测试顺序先从简单的开始吧 一步一步来 目录 前言 1 ADC采样示例测试 1 1 DMA连续采样 1 2 单次采样 1 3 测试源码 2 ESP32 C
  • 高速模数转换器(ADC)的INL/DNL测量

    摘要 尽管积分非线性和微分非线性不是高速 高动态性能数据转换器最重要的参数 但在高分辨率成像应用中却具有重要意义 本文简要回顾了这两个参数的定义 并给出了两种不同但常用的测量高速模数转换器 ADC 的INL DNL的方法 近期 许多厂商推出
  • 如何在DSP CCS开发环境中添加VLIB图像处理的库

    CCS Version 5 5 0 00077 VLIB VLIB Function Reference Release 3 3 2 0
  • simulink仿真 adc 采样ePWM输出例程

    新建文件夹并用matlab打开 写入这两个模块 配置 ADC 配置ePWM 不使能B 关了就行 其他的默认即可 配置烧录 连线 示波器接pwma1 和地 adc chanl1接 3 3v或者 0 3 3 都行 转化是 x 3 3 2 12
  • SD卡系列之---SD初始化(SPI)

    SD卡分为SDIO模式与SPI模式 SDIO模式使用SD总线协议 使用4根数据线进行数据传输 SPI使用1收1发2根数据线数据传输 理论上SDIO模式会比SPI模式速度快4倍 但SDIO模式还牵扯到CRC校验位的计算 所以 如果使用CPU有
  • STM8的ADC的五种工作模式

    STM8的ADC的五种工作模式 STM8的ADC是10位的逐次比较型模拟数字转换器 多达16个多功能的输入通道 拥有5种转换模式 转换结束可产生中断 STM8 ADC的初始化顺序如下 1 AD输入通道对应的IO设置为上拉输入 2 配置AD参
  • 深入浅出《Delta-Sigma Data Converters》(可下载)

    在数字信号处理领域 数据转换器是实现模拟与数字世界之间无缝转换的关键组件 而在这个子领域中 Delta Sigma Data Converter s 一书以其全面和深入的内容 为工程师 学者甚至爱好者们提供了一个极其宝贵的资源 今天将为大家

随机推荐