TI DSP TMS320F280025 Note14:模数转换器ADC原理分析与应用

news2024/9/30 23:32:06

TMS320F280025 模数转换器ADC原理分析与应用


`

文章目录

  • TMS320F280025 模数转换器ADC原理分析与应用
  • 逐次比较型ADC和双积分型ADC工作原理
    • 逐次比较型 ADC
    • 双积分型 ADC
  • 280025ADC
  • ADC原理分析
    • ADC时钟
    • SOC
      • SOC内部原理
      • ADC触发方式
      • ADC采集(采样和保持)窗口
      • 通道寄生电容
    • 基准电压发生器模块
      • 外部参考模式
      • 内部参考模式
      • 选择参考模式
    • 后处理模块
      • 偏移校正
      • 设定值计算误差
      • 限制和过零检测
      • 触发到采样延迟捕获
  • ADC优先级
    • 轮转优先级
    • 高优先级
  • ADC中断
    • 中断溢出
    • 继续中断模式
    • 早期中断配置模式
  • ADC模拟引脚
  • ADC(定时器触发采样)使用
    • AdcDriver.c
    • AdcDriver.h
    • CPUtimers.c
    • CPUtimers.h


逐次比较型ADC和双积分型ADC工作原理

逐次比较型 ADC

采用逐次逼近法的 AD 转换器是有一个比较器、 DA 转换器、 缓冲寄存器和控制逻辑电路组成, 如下图所示:
在这里插入图片描述

基本原理是: 从高位到低位逐次试探比较, 就像用天平秤物体, 从重到轻逐级增减砝码进行试探。 逐次逼近法的转换过程是: 初始化时将逐次逼近寄存器各位清零, 转换开始时, 先将逐次逼近寄存器最高位置 1, 送入 DA 转换器, 经 DA转换后生成的模拟量送入比较器, 称为 U0, 与送入比较器的待转换的模拟量 Ux进行比较, 若 U0<Ux, 该位 1 被保留, 否则被清除。 然后再将逐次逼近寄存器次高位置 1, 将寄存器中新的数字量送 DA 转换器, 输出的 U0 再与 Ux 比较, 若 U0<Ux,该位 1 被保留, 否则被清除。 重复此过程, 直至逼近寄存器最低位。 转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器, 得到数字量的输出。 逐次逼近的操作过程是在一个控制电路的控制下进行的。

双积分型 ADC

采用双积分法的 AD 转换器由电子开关、 积分器、 比较器和控制逻辑等部件组成。 如下图所示:
在这里插入图片描述

其基本原理: 将输入电压变换成与其平均值成正比的时间间隔, 再把此时间间隔转换成数字量, 属于间接转换。 双积分法 AD 转换的过程是: 先将开关接通待转换的模拟量 Vi, Vi 采样输入到积分器, 积分器从零开始进行固定时间 T 的正向积分, 时间 T 到后, 开关再接通与 Vi 极性相反的基准电压 Vref, 将 Vref输入到积分器, 进行反向积分, 直到输出为 0V 时停止积分。 Vi 越大, 积分器输出电压越大, 反向积分时间也越长。 计数器在反向积分时间内所计的数值, 就是输入模拟电压 Vi 所对应的数字量, 实现了 AD 转换。

280025ADC

TMS32F280025有两个逐次比较型ADC,分别是ADCA和ADCC,每个ADC都具有以下特点:
•12位分辨率
•比率计VREFHI设定的外部引用和VREFLO引脚
•选择内部参考2.5 v和3.3 v
•单端信号转换
•输入多路复用器,最多16个通道
•16单独结果可寻址寄存器
•16 可配置的soc
•多个触发源
•四灵活的PIE中断
•可配置中断位置
•四个PBB后处理模块,每个具有:
-偏移校准
-误差校准
-高,低和过零比较,具有中断和ePWM跳闸能力
-触发到样本延迟捕获
•优先级:轮转/高优先级
•电压处理成转换结果需要大约10.5个ADCCLK
ADC框图如图所示
在这里插入图片描述

1.使用ADC时设置好参考电压,配置ADC SOC通道、采样周期、触发方式;
2.当设置的触发方式触发ADC时,模拟信号首先到ADC校准和控制模块,该模块可以直接产生ADC中断;
3.然后模拟信号到输入电路模块,经过采样保持电路进行采样;
4.采样后经过转化器得到数字量;
5.该数字量会保存在对应的ADC结果寄存器中,每个SOC对应一个结果寄存器,读取该寄存器即可得到ADC转化结果,也可以用过后处理模块进行后处理再输出

ADC原理分析

ADC框图分为以下几个模块:模拟数字控制逻辑、后处理模块、模拟-数字核心模块、基准电压发生器模块、模拟系统控制、输入电路、转换、SOCx (0-15)
在这里插入图片描述

ADC时钟

基本ADC时钟直接由系统时钟(SYSCLK)提供。SYSCLK用于生成ADC采集窗口。寄存器ADCCTL2有一个决定adccclk的precale字段。ADCCLK用于对转换器进行时钟控制,仅在转换阶段有效。在所有其他时间,包括在采样和保持窗口期间,ADCCLK信号被门控关闭。
核心需要大约10.5个ADCCLK周期来将电压处理成转换结果。用户必须确定所需的获取窗口的持续时间

为ADCCTL2确定一个合适的值。PRESCALE,请参阅设备数据手册以确定SYSCLK和ADCCLK的最大频率

SOC

SOC在框图中的位置
在这里插入图片描述

SOC内部原理

在这里插入图片描述
在这里插入图片描述

每个ADC的SOC都可以设置对应的触发方式、通道和采样周期

ADC触发方式

每个SOC可以配置为在许多输入触发器之一上启动。SOCx的主要触发器选择在ADCSOCxCTL中。TRIGSEL寄存器,可以选择:
• Disabled (software only)
•CPU定时器0/1/2
•GPIO:输入X-Bar INPUT5
•ADCSOCA或ADCSOCB从每个ePWM模块
此外,每个SOC也可以在ADCINT1或ADCINT2标志设置时触发。这是通过配置ADCINTSOCSEL1寄存器(用于SOC0到SOC7)或ADCINTSOCSEL2寄存器(用于SOC8到SOC15)来实现的。

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

外部信号源在快速有效地驱动模拟信号的能力上各不相同。为了达到额定分辨率,信号源需要对ADC核心中的采样电容充电至信号电压的0.5 lbs以内。采集窗口是采样电容器允许充电的时间量,可通过ADCSOCxCTL配置为SOCx.ACQPSregister。
ACQPS是一个9位寄存器,可以设置为0到511之间的值,导致采集窗口持续时间:
采集窗口= (ACQPS + 1)∙(系统时钟(SYSCLK)周期时间)
•采集窗口持续时间基于系统时钟(SYSCLK),而不是ADC时钟(ADCCLK)。
•选择的采集窗口持续时间必须至少与一个ADCCLK周期一样长。
•数据表指定最小采集窗口持续时间(以纳秒为单位)。用户负责选择满足此要求的获取窗口持续时间。

通道寄生电容

在这里插入图片描述
在这里插入图片描述

每个通道的寄生电容不一样,所以如果采样速率过高的话,注意选用的通道的寄生电容是否会影响采样

基准电压发生器模块

在这里插入图片描述

ADC的基准电压可以位内部电压也可以位外部电压

外部参考模式

ADC模块共享VREFHI和VREFLO输入。在外部参考模式下,这些引脚用作比率参考,以确定ADC转换输入范围。

•在没有外部VREFLO引脚的设备上,VREFLO内部连接到设备模拟地,VSSA。
•请参阅设备数据表以确定VREFHI和VREFLO的允许电压范围。
•外部参考模式需要VREFHI引脚上的外部电容。具体数值请参见设备数据手册。

内部参考模式

在内部参考模式下,器件驱动电压到VREFHI引脚上。然后,VREFHI和VREFLO引脚设置ADC转换范围。
内部参考电压可配置为2.5V或1.65V。当选择1.65V内部参考电压时,在转换前将ADC输入信号内部除以2,有效地使ADC转换范围从VREFLO到3.3V。
内部参考模式还需要VREFHI引脚上的外部电容。具体数值请参见设备数据手册。

选择参考模式

电压参考模式必须通过使用ADC_setVREF()或SetVREF()函数来配置,具体取决于使用的头文件,在C2000Ware中提供。使用这些函数中的任何一个都可以确保在ADC修剪寄存器中加载正确的修剪。此函数必须在设备复位后至少调用一次。
不要通过直接写入ANAREFCTL寄存器来配置电压参考模式。

后处理模块

在这里插入图片描述

作用如下:

偏移校正

去除可能由外部传感器和信号源引起的与ADCIN通道相关的偏移量零开销;保存周期

设定值计算误差

减去一个参考值,该参考值可用于从设定点或预期值自动计算误差,减少样本输出延迟和软件开销

限制和过零检测

自动执行高/低限制或过零检查,可以产生一个行程到ePWM和/或中断减少样本到ePWM的延迟和减少软件开销;在没有CPU干预的情况下,基于超出范围的ADC转换触发ePWM

触发到采样延迟捕获

能够记录SOC被触发和开始采样之间的延迟,允许软件技术减少延迟错误

ADC优先级

轮转优先级

当同时设置多个SOC标志时,优先级的两种形式之一决定转换顺序。默认的优先级方法是轮循。在这个方案中,没有SOC具有比其他SOC更高的固有优先级。优先级取决于轮循指针(RRPOINTER)。反映在ADCSOCPRIORITYCTL寄存器中的RRPOINTER指向最后转换的SOC。最高优先级的SOC被分配给下一个比RRPOINTER值大的值,在SOC15之后绕回SOC0。在重置时,该值为16,因为0表示已经发生了转换。当RRPOINTER等于16时,优先级最高的是SOC0。当ADC模块复位或复位值被写入SOCPRICTL寄存器时,RRPOINTER复位。通过写入和清除与ADC实例对应的SOFTPRES位来复位ADC模块。
在这里插入图片描述

高优先级

ADCSOCPRIORITYCTL寄存器中的SOCPRIORITY字段可用于从单个soc分配高优先级到所有soc。当配置为高优先级时,SOC在任何当前转换完成后中断轮询轮,并插入作为下一个转换。转换完成后,在转换中断的地方继续轮询轮。如果同时触发两个高优先级的SOC,则优先级低的SOC。
高优先级模式首先分配给SOC0,然后按数字顺序递增。写入SOCPRIORITY字段的值定义了第一个优先级不高的SOC。换句话说,如果将值4写入SOCPRIORITY,则将SOC0、SOC1、SOC2和SOC3定义为高优先级,其中SOC0最高。
在这里插入图片描述

ADC中断

每个SOC都有相应的转换结束(EOC)信号。此EOC信号可用于触发ADC中断。ADC可以配置为在采集窗口的末端或电压转换的末端产生EOC脉冲。这是使用ADCCTL1寄存器中的INTPULSEPOS位配置的。参见15.12节了解EOC脉冲的准确位置。
每个ADC模块有4个可配置的ADC中断。这些中断可以由16个EOC信号中的任何一个触发。可以直接读取每个ADCINT的标志位,以确定相关的SOC是否完成,或者中断是否可以传递给PIE
ADCCTL1.ADCBSY位清楚并不表示一组soc中的所有转换都已完成,仅表示ADC准备处理下一个转换。要确定一个SOC序列是否完成,将ADCINT标志链接到序列中的最后一个SOC,并监视该ADCINT标志
在这里插入图片描述

中断溢出

如果EOC信号在ADCINTFLG寄存器中设置了一个标志,但该标志已经设置,则会发生中断溢出。
默认情况下,溢出中断不传递给PIE模块。当ADCINTFLG寄存器中的给定标志发生溢出时,将设置ADCINOVF寄存器中的相应标志。此溢出标志仅用于检测是否发生溢出;该标志不会阻止进一步的中断传播到PIE模块。
当ADC中断溢出发生时,应用程序必须检查ISR内或后台循环中适当的ADCINTOVF标志,并在检测到溢出时采取适当的行动。下面的代码片段演示了在尝试清除ADCINT标志后,如何在ISR内检查ADCINTOVF标志。

// Clear the interrupt flag
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; //clear INT1 flag for ADC-A
// Check if an overflow has occurred
if(1 == AdcaRegs.ADCINTOVF.bit.ADCINT1) //ADCINT overflow occurred
{
   
 AdcaRegs.ADCINTOVFCLR.bit.ADCINT1 = 1 //Clear overflow flag 
 AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1 //Re-clear ADCINT flag
}
//
// Clear the interrupt flag
//
ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);
//
// Check if an overflow has occurred
//
if(true == ADC_getInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1))
{
   
 ADC_clearInterruptOverflowStatus(ADCA_BASE, ADC_INT_NUMBER1);
 ADC_clearInterruptStatus(ADCA_BASE, ADC_INT_NUMBER1);
}

继续中断模式

ADCINTSEL1N2和ADCINTSEL3N4寄存器中的INTxCONT位配置了当ADCINTFLG尚未从先前中断中清除时如何处理中断。默认情况下禁用此模式,并且不会向PIE发出额外的重叠中断。通过激活此模式,ADC中断总是到达PIE。如果在设置ADCINTFLG时发生中断,那么无论INTxCONT位的配置如何,ADCINTOVF寄存器都保持设置。

早期中断配置模式

启用早期中断模式可以允许应用程序在ADC结果准备好之前进入ADC中断服务程序。这允许应用程序做任何必要的前期工作,以便应用程序可以在ADC结果可用时立即对ADC结果采取行动。如果早期中断的时机太早,则应用程序需要浪费时间,直到更新的ADC结果可用为止。为了防止这种情况,ADC中断进入早期中断模式的时间可以通过ADCINTCYCLE寄存器中的DELAY字段进行配置。
•要使用可配置的中断时间,ADC必须处于早期中断模式。为了实现这一点,在ADCCTL1中将位INTPULSEPOS清除为0。
•ADCINTCYCLE寄存器中的DELAY值设置了在ADCINT标志被设置之前SOC脉冲下降沿之后额外的SYSCLK周期数。
•如果DELAY值超过EOC,则ADC中断与EOC一起产生。
•当INTPULSEPOS设置为1时,将值写入DELAY对中断的产生没有任何影响。

ADC模拟引脚

ADC引脚分配如下表
在这里插入图片描述

ADC(定时器触发采样)使用

AdcDriver.c

#include "main.h"

//
// Defines
//
#define RESULTS_BUFFER_SIZE     5

//
// Globals
//

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2181010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

心理咨询预约管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 心理咨询预约管理系统2拥有三个角色&#xff1a; 管理员端 首页 系统近况&#xff08;咨询师和注册来访者数量&#xff0c;预约数量&#xff09; 显示最新的消息、留言和公告&#xff0…

回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于POA-SVR鹈鹕算法优化支持向量机的数据…

rk3399开发环境的介绍

零. 前言 由于Bluez的介绍文档有限&#xff0c;以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求&#xff0c;加上网络上其实没有一个完整的介绍Bluez系列的文档&#xff0c;所以不管是蓝牙初学者还是蓝牙从业人员&#xff0c;都有不小的难度&#xff0c;学习曲线也相…

中信银行西安分行:“极地来信”沉浸展西安站正式启幕

9月7日&#xff0c;中信银行“极地来信”跨界整合品牌线下巡展西安站在MOMOPARK艺术购物中心正式启幕。本次活动聚焦中国极地考察的冰路征程&#xff0c;以沉浸式展览与艺术创意传递中国极地考察“向南而行”的无畏精神&#xff0c;并将极地考察的探索之路与金融创新的实践之路…

智慧平台 PersonalDayInOutSchoolData SQL注入漏洞

漏洞描述 EDU 某智慧平台 PersonalDayInOutSchoolData 接口存在SQL注入漏洞&#xff0c;未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息&#xff08;例如&#xff0c;管理员后台密码、站点的用户个人信息&#xff09;之外&#xff0c;甚至在高权限的情…

OpenCL 学习(1)---- OpenCL 基本概念

目录 Overview异构并行计算OpenCL 架构平台模型执行模型OpenCL 上下文OpenCL 命令队列内核执行编程模型存储器模型存储器对象共享虚拟存储器 Overview OpenCL(Open Computing Language&#xff0c;开放计算语言) 最早由苹果公司提交草案&#xff0c;并于 AMD, IBM ,intel 和 n…

python14_运算符复合赋值

复合赋值缩写 A 7 B 3 C "hello" D "world" E True F False# 加法赋值运算符,7 3 10 def add1(a, b):a b # 等同于a a breturn a# 字符串加法赋值运算符,hello world helloworld def add2(c, d):c d # 等同于字符串拼接,c c dreturn c# …

尚乐代驾重做

微信小程序客户端登陆 一 总体流程 前段携带code发送请求给后端&#xff0c;后端利用微信小程序相关api解析这个code&#xff0c;获取能唯一认证登陆身份的openid。接着先到数据库查询是否有这个id&#xff0c;如果没有就保存用户信息实现注册&#xff0c;并返回token到前端…

百度百科 X-Bk-Token 算法还原

声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 文章目录 声明案例地址参数分析X-Bk-Token算法追踪X-Bk-Token后缀算法还原c 值跟踪与算法还原往期逆向文章推荐最近太忙了,博客摆烂了好…

算法题——层序遍历(一层按一组输出)

输入[1,2,3,4,5] 输出[[1],[2,3],[4,5]] (按照一层输出为一组) 思路&#xff1a; 使用队列&#xff0c;在队列内层再加入一层for循环&#xff0c;每层的个数就是队列中当前队列的个数。 python&#xff1a; from collections import dequeclass Solution(Object):def levelO…

VUE a-table 动态拖动修改列宽+固定列

实现效果 实现思路 自定义表头&#xff0c;在标题后面加两个标签&#xff0c;分别用来显示拖拽图标&#xff08;cursor: col-resize&#xff09;&#xff0c;和蓝色标记线&#xff08;有的时候鼠标移动过程中不一定会在表内&#xff0c;这个时候不显示图标&#xff0c;只显示蓝…

独立样本t检验及其案例分析

作者简介&#xff1a;热爱数据分析&#xff0c;学习Python、Stata、SPSS等统计语言的小高同学~个人主页&#xff1a;小高要坚强的博客当前专栏&#xff1a;SPSS本文内容&#xff1a;独立样本t检验及其案例分析作者“三要”格言&#xff1a;要坚强、要努力、要学习 目录 一、引…

2024版Clion debug无法查看函数内数组内容 解决办法

参考Clion debug查看数组中的内容&#xff0c;新版本有所变化 众所周知&#xff0c;进入函数的数组debug不显示内容&#xff0c;解决办法如下&#xff1a; 在Evaluate expression中输入 *(int(*)[10])(数组名)

硬件设计基础之闲聊千兆以太网

一、千兆以太网的介绍 常见的以太网有几种形式&#xff0c;10Mbps、100MHz、1000Mbps、10Gbps等&#xff0c;当然还有更高的&#xff0c;接触的少些&#xff0c;暂且不聊。 10Mbps、100Mbps&#xff0c;多见于单片机使用&#xff0c;比如STM32/GD32 1000Mbps、10Gbps&#x…

React学习笔记(3.0)

classnames优化类名控制 classnames是一个简单的JS库&#xff0c;可以非常方便的通过条件动态控制class类名的显示。 安装classnames&#xff1a; npm i classnames 导入&#xff1a; import classNames from classnames <div className{classNames(box3,{box2:11})}&g…

ESXI识别USB设备

步骤&#xff1a; 插入usb设备到服务器。关闭虚拟机&#xff0c;添加USB控制器&#xff0c;根据U盘选择usb 3.0控制器&#xff0c;再添加usb设备如果usb设备灰色&#xff0c;进入主机打开SSH。使用xshell进行连接&#xff0c;运行以下命令&#xff1a; ESXI识别USB设备 - 插入…

浏览器插件的标准项目结构通常包括以下几个目录和文件

浏览器插件的标准项目结构通常包括以下几个目录和文件&#xff1a; my-extension/ ├── manifest.json // 插件的元数据和配置 ├── background.js // 背景脚本 ├── content_scripts/ // 内容脚本目录 │ └── content.js // 内容脚本…

如何使用ssm实现基于在线开放课程的Web前端设计与实现+vue

TOC ssm746基于在线开放课程的Web前端设计与实现vue 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大&#xff0c;人为计算方面才是一个巨大的短板&#xff0c;所以发明了各种计算设备&#xff0c;从结绳记事&#xff0c;到算筹&#xff0c;以及算盘&#xff0c;到如今…

基于ssm的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于ssm的宠物领养管理系统3拥有两种角色 管理员&#xff1a;用户管理、管理员管理、宠物管理、领养管理、评论管理、团队活动管理、志愿者申请管理、领养列表 用户&#xff1a;查看各种…

51单片机应用开发(进阶)---数码管+按键+蜂鸣器(电磁炉显示模拟)

实现目标 1、加强数码管、按键的学习&#xff0c;实现数码显示变量数据&#xff08;四位数的显示&#xff09;&#xff1b; 2、4位数码2个按键无源蜂鸣器实现模拟电磁炉功率调节及显示&#xff1b; 一、内容描述 功能描述&#xff1a;1、开机显示电磁炉功率300&#xff0c;每…