TI DSP TMS320F280025 Note8:模数转换器(ADC)

TMS320F280025 模数转换器(ADC)


`


模数转换器(ADC)模块是5型ADC。请参阅C2000实时控制外设参考指南,以获得具有相同类型模块的所有设备的列表,以确定类型之间的差异,以及类型内特定设备的差异列表。

介绍

ADC模块是一个12位逐次逼近(SAR)风格的ADC。ADC由一个核心和一个包装器组成。该核心由模拟电路组成,模拟电路包括通道选择MUX、采样保持(S/H)电路、逐次逼近电路、参考电压电路和其他模拟支持电路。封装器由配置和控制ADC的数字电路组成。这些电路包括可编程转换逻辑、结果寄存器、模拟电路接口、外设总线接口、后处理电路和其他片上模块接口。
每个ADC模块由一个采样保持(S/H)电路组成。ADC模块被设计为在同一芯片上复制多次,允许多个ADC同时采样或独立操作。ADC封装器是基于转换开始(SOC)的

特点

每个ADC都有以下特点:
•12位分辨率
•比率计VREFHI设定的外部引用和VREFLO别针
•选择内部参考2.5 v和3.3 v
•单端信号转换
•输入多路复用器与16通道
•16个可配置的soc
•16个可单独寻址的结果寄存器
•多个触发源

  • S / W -软件立即开始-所有ePWMs ADCSOC A或B
  • GPIO XINT2
  • CPU计时器0/1/2
    -ADCINT1/2
    •四个灵活的PIE中断
    •可配置中断位置
    •四个后处理模块,每个具有:
    -饱和偏移校准
    -设定点计算的误差
    -高,低和过零比较,具有中断和ePWM跳闸能力
    -触发到样本延迟捕获
    并非每个通道都从所有adc中被固定出来。检查设备数据表以确定哪些通道可用。

框图

在这里插入图片描述

ADC方框图反映了设备内部可配置的ADC通道数量。
可用外部ADC输入的实际数量因部件和封装而异。

ADC可配置性

一些ADC配置由soc单独控制,而另一些则由每个ADC模块全局控制。表总结了ADC的基本选项和可配置级别。后面的小节将讨论这些配置。
在这里插入图片描述

将这些值以不同的方式写入不同的ADC模块可能导致ADC异步操作。有关adc同步或异步工作的指导

时钟配置

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

分辨率

ADC的分辨率决定了模拟范围被量化为数字值的精细程度。每个ADC模块支持12位的固定分辨率

参考电压

外部参考模式
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寄存器来配置电压参考模式。

信号模式

ADC支持单端信令。
在单端模式下,转换器的输入电压通过一个引脚(ADCINx)采样,参考VREFLO

预期转化结果

基于给定的模拟输入电压,期望的数字转换如表所示。小数值被截断。
在这里插入图片描述

转换结果

根据给定的ADC转换结果,对应的模拟输入如表所示。这对应于可以产生这种转换结果的模拟电压可能范围的中心。
在这里插入图片描述

SOC工作原理

ADC触发和转换顺序是通过可配置的转换开始(soc)完成的。每个SOC是一个配置集,定义单个通道的单个转换。在该集合中,有三种配置:启动转换的触发源、要转换的通道和采集(样本)窗口持续时间。在接收到为SOC配置的触发器后,包装器确保使用指定的获取窗口持续时间捕获指定的通道。
可以根据需要为相同的触发器、通道和采集窗口配置多个soc。配置多个soc以使用相同的触发器允许触发器生成一系列转换。配置多个soc使用相同的触发器和通道允许过采样。
在这里插入图片描述

SOC配置

每个SOC都有一个配置寄存器ADCSOCxCTL。在这个寄存器中,可以为触发源、要转换的通道和采集(样本)窗口持续时间配置SOCx。

触发操作

每个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输入特性(见图)可在设备数据手册中找到
在这里插入图片描述

这些输入模型必须与实际信号源阻抗一起使用,以确定采集窗口持续时间。

通道选择

每个SOC都可以配置为转换任何ADC通道。此行为由ADCSOCxCTL.CHSEL寄存器为SOCx选择。
在这里插入图片描述

SOC配置举例

ePWM触发器的单次转换

当ePWM定时器达到周期匹配时,要配置ADCA在通道ADCIN1上执行单个转换,需要做一些事情。首先,需要配置ePWM3产生SOCA或SOCB信号(这里的SOC是指ePWM模块中的信号)。关于如何做到这一点,请参阅增强脉宽调制器模块(ePWM)章节。假设选择了SOCB。
SOC5是任意选择的。可以使用16个soc中的任何一个。
假设SYSCLK频率为100MHz,需要100ns采样窗口,则采集窗口持续时间必须为100ns/10ns = 10个周期。ACQPS字段必须设置为10 - 1 = 9。

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最高。
在这里插入图片描述

图给出了一个使用高优先级SOC的例子。

Burst Mode

突发模式允许单个触发器一次通过一个或多个循环soc。在ADCBURSTCTL寄存器中设置位BURSTEN,为突发模式配置ADC包装器。这将导致TRIGSEL字段被忽略,但仅适用于配置为轮询操作(非高优先级)的soc。而不是TRIGSEL字段,所有轮询soc都是基于ADCBURSTCTL寄存器中的BURSTTRIG字段触发的。在接收到突发触发器后,ADC包装器不设置要转换的所有轮询soc,而只设置(ADCBURSTCTL.BURSTSIZE + 1)soc。要设置的第一个SOC是基于轮询指针的具有最高优先级的SOC,随后的SOC被设置,直到BURSTSIZE SOC被设置。
当将ADC配置为突发模式时,用户负责确保在接收到下一个突发触发器之前允许每个突发转换完成。(ADCBURSTCTL.)BURSTSIZE + 1)必须小于或等于为轮询优先级配置的soc数量。
例如,如果SOCPRIORITY = 12,即SOC12、SOC13、SOC14、SOC15处于轮询状态,则ADCBURSTCTL。为了使突发模式正常工作,BURSTSIZE设置必须≤3。

Burst Mode Example

突发模式可以用来在每一个其他触发器上采样一组不同的信号。在下面的例子中,ADCIN7和ADCIN5在CPU1 Timer 2的第一个触发器和之后的每个其他触发器上被转换。
ADCIN2和ACIN3在CPU1定时器2和之后的每个其他触发器的第二个触发器上转换。
所有信号都用20个SYSCLK周期宽的采集窗口进行转换,但可以根据需要为每个SOC配置不同的持续时间。

AdcaRegs.BURSTCTL.BURSTEN = 1; //Enable ADC burst mode
AdcaRegs.BURSTCTL.BURSTTRIG = 3; //CPU1 Timer 2 triggers burst of conversions
AdcaRegs.BURSTCTL.BURSTSIZE = 1; //conversion bursts are 1 + 1 = 2 conversions long
AdcaRegs.SOCPRICTL.bit.SOCPRIORITY = 12; //SOC0 to SOC11 are high priority
AdcaRegs.ADCSOC12CTL.bit.CHSEL = 7; //SOC12 converts ADCINA7
AdcaRegs.ADCSOC12CTL.bit.ACQPS = 19; //SOC12 uses sample duration of 20 SYSCLK cycles
AdcaRegs.ADCSOC13CTL.bit.CHSEL = 5; //SOC13 converts ADCINA5
AdcaRegs.ADCSOC13CTL.bit.ACQPS = 19; //SOC13 uses sample duration of 20 SYSCLK cycles 
AdcaRegs.ADCSOC14CTL.bit.CHSEL = 2; //SOC14 converts ADCINA2
AdcaRegs.ADCSOC14CTL.bit.ACQPS = 19; //SOC14 uses sample duration of 20 SYSCLK cycles 
AdcaRegs.ADCSOC15CTL.bit.CHSEL = 3; //SOC15 converts ADCINA3
AdcaRegs.ADCSOC15CTL.bit.ACQPS = 19; //SOC15 uses sample duration of 20 SYSCLK cycles 

当收到第一个CPU1 Timer 2触发器时,如果ADC空闲,立即转换SOC12和SOC13。如果ADC繁忙,一旦SOC12和SOC13获得优先级,则转换SOC12和SOC13。SOC12和SOC13的结果分别在ADCRESULT12和ADCRESULT13中。在SOC13完成后,循环指针将最高优先级赋予SOC14。因此,当收到下一个CPU1 Timer 2触发器时,SOC14和SOC15被设置为pending并最终转换。SOC14和SOC15的结果分别在ADCRESULT14和ADCRESULT15中。随后的触发器继续在转换SOC12和SOC13以及转换SOC14和SOC15之间切换。
虽然上面的示例在两组转换之间切换,但可以使用类似的方法实现三个或更多不同的转换集。

突发模式优先级示例

使用突发模式和高优先级soc的优先级解析示例如图15-6所示。
在这里插入图片描述

EOC和中断操作

每个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模块包含四个后处理模块(PPB)。这些块可以使用ADCPPBxCONFIG与16个RESULT寄存器中的任何一个相关联。配置位字段。后处理模块具有以下功能:
•移除与ADCIN通道相关的偏移量
•减去参考值
•标记过零点,可选择触发PWM并产生中断
•标记高或低比较限制,可选择触发PWM并产生中断•记录相关SOC触发器与采样实际开始时之间的延迟
在这里插入图片描述

PPB偏移校正

在许多应用中,外部传感器和信号源会产生偏移。ADC偏置的全局微调不足以补偿这些偏置,这些偏置因通道而异。后处理模块可以在零开销的情况下消除这些偏移,从而在严格的控制循环中节省了许多周期。
偏移校正是通过首先指向ADCPPBxCONFIG来完成的。配置到所需的SOC,然后将偏移校正值写入ADCPPBxOFFCAL。、登记。后处理块自动从原始转换结果中添加或减去OFFCAL寄存器中的值,并将该值存储在ADCRESULT寄存器中。这个加法/减法在低端达到0,在高端达到4095
•向OFFCAL寄存器写入0有效地禁用偏移校正功能,将原始结果不变地传递给ADCRESULT寄存器。
•可以将多个ppb指向相同的SOC。在这种情况下,实际应用的OFFCAL值来自具有最高数值的PPB。
•在SOC0上使用PPB时需要特别小心,因为所有PPB默认都指向该SOC。这可能导致编号较低的PPB被编号较高的PPB无意地覆盖偏移校正。

PPB误差计算

在许多应用中,必须从ADC转换的数字输出计算设定点或期望值的误差。在其他情况下,双极信号对于控制计算是必要的或方便的。PPB可以自动执行这些功能,减少样本到输出的延迟并减少软件开销。
通过首先指向ADCPPBxCONFIG来完成错误计算。配置到所需的SOC,然后将值写入ADCPPBxOFFCAL。OFFREF登记。后处理块自动从ADCRESULT值中减去OFFREF寄存器中的值,并将该值存储在ADCPPBxRESULT寄存器中。这个减法产生一个符号扩展的32位结果。通过在ADCPPBxCONFIG寄存器中设置TWOSCOMPEN位,也可以在将计算值存储到ADCPPBxRESULT寄存器之前选择性地反转计算值。
•不要将大于12位的值写入ADCPPBxOFFREF寄存器。
•由于ADCPPBxRESULT寄存器对于每个PPB都是唯一的,因此可以将多个PPB指向相同的SOC并为每个PPB获得不同的结果。
•向ADCPPBxOFFREF寄存器写入0有效地禁用错误计算功能,将ADCRESULT值不变地传递给ADCPPBxRESULT寄存器。
•向ADCPPBxOFFREF写入新值会立即更新ADCPPBxRESULT寄存器。然而,从PPB出来的标志直到下一个转换结束(EOC)才会改变。例如,如果更改ADCPPBxOFFREF寄存器导致ADCPPBxRESULT更改符号,但下一次转换将结果带回与更改OFFREF之前相同的符号,则不设置ADCPPBxZERO标志。

PPB极限检测和过零检测

许多应用程序对ADC转换结果执行限制检查。PPB可以根据高、低限制或ADCPPBxRESULT更改符号时自动执行检查。基于这些比较,PPB可以自动产生对PWM的跳闸和中断,降低ePWM延迟和减少软件开销。该功能还使具有安全意识的应用程序能够在没有任何CPU干预的情况下,基于超出范围的ADC转换触发ePWM。
要启用此功能,首先指向ADCPPBxCONFIG。配置到所需的SOC,然后将值写入一个或两个寄存器ADCPPBxTRIPHI。limit和ADCPPBxTRIPLO。LIMITLO(过零检测不需要进一步配置)。当超过这些限制时,在ADCEVTSTAT寄存器中设置PPBxTRIPHI位或PPBxTRIPLO位。注意,ADCEVTSTAT寄存器中的PPBxZERO位是由转换结束(EOC)进行门控的,而不是由ADCPPBxRESULT寄存器中的符号变化进行门控的。
ADCEVTCLR寄存器有相应的位来清除这些事件标志。ADCEVTSEL寄存器具有相应的位,允许事件通过PWM传播。ADCEVTINTSEL寄存器具有相应的位,允许将事件传播到PIE。
•如果需要对来自同一ADC模块的不同PPB事件采取不同的操作,那么ADCEVTINT ISR必须读取ADCEVTSTAT寄存器中的PPB事件标志,以确定哪个事件导致中断。
•如果需要为高比较、低比较和过零分别生成不同的ePWM跳闸,则可以通过将多个ppb指向相同的SOC来实现。
•过零检测电路认为零的结果为正。

在这里插入图片描述

PPB样本延迟捕获

当多个控制循环在同一ADC上异步运行时,来自两个或多个循环的ADC请求有可能发生冲突,从而导致其中一个样本延迟。这在系统中显示为测量误差。通过了解延迟发生的时间和发生的延迟量,软件可以采用外推技术来减少错误。
为此,每个PPB在ADCPPBxSTAMP寄存器中都有字段lystamp。该字段包含关联SOC被触发和SOC开始转换之间的SYSCLK周期数。
这是通过拥有一个基于SYSCLK的全局12位自由运行计数器来实现的,它位于ADCCOUNTER寄存器中的FREECOUNT字段中。当相关SOC的触发器到达时,该计数器的值被加载到位字段ADCPPBxTRIPLO.REQSTAMP中。当SOC的实际示例窗口开始时,REQSTAMP中的值将从当前FREECOUNT值中减去,并存储在lystamp中。
如果在SOC触发器和SOC获取的实际开始之间超过4096个SYSCLK周期,FREECOUNT寄存器可能会溢出不止一次,导致不正确的lystamp值。在使用非常慢的转换时要小心,以防止这种情况发生。
如果使用软件触发相关的SOC,则采样延迟捕获不起作用。但是,如果不同SOC的软件触发导致与PPB相关的SOC延迟,则样本延迟捕获可以正确记录延迟

开/短路检测电路(OSDETECT)

在这里插入图片描述

该电路可以通过向ADCOSDETECT寄存器中的DETECTCFG字段写入值来操作。这使得电路在任何转换的S+H相位期间向输入源电压。表15-7给出了不同DETECTCFG设置下OSDETECT电路的电压和驱动强度。
在这里插入图片描述

Implementation

OSDETECT实现的代表性电路由信号源的串联电阻RS、并联电容CP、等效OSDETECT电阻ROSDETECT和电压VOSDETECT 如图15-11所示,可以作为计算进入采样电容的信号电平的基础。ROSDETECT和VOSDETECT是OSDETECT电路贡献的等效输入电阻和电压源,不同配置设置下的值如表15-7所示。如果信号源VS处于驱动状态,且开启了OSDETECT功能,将输入信号导出为S/H,参见图15-11。
在这里插入图片描述

输入阻抗RS和CP是信号源的组成部分,也可以在设计中实现对信号进行前置或控制信号沉降时间以满足S/H要求。在使用OSDETECT特性时必须考虑输入路径,因为这会影响转换结果。例如,当启用此功能时,驱动输入信号将信号VS通过RS连接到OSDETECT电路,并影响ADC结果。较大的CP值(大于数百pF)需要使用更高的ACQPS来确保输入端的信号在转换之前已经稳定下来。

使能电路

  1. 配置用于转换的ADC(例如通道、SOC、ACQPS、预分频器、触发器等)。
  2. 如表15-7所示,为分压器连接设置ADCOSDETECT寄存器。
  3. 启动转换并检查转换结果。
    根据输入端的驱动因素以及RS和CP的值来解释结果。如果VS信号可以与输入引脚断开,则电路可以用于检测输入引脚的开路和短路,如下部分所述。

检测一个开放的输入引脚

通过循环各种OSDETECT设置,输入信号被拉向源电压。
具有良好驱动强度(引脚未打开)的输入受到的影响最小。但是,如果引脚断开,则采样电压接近表15-7所示的源电压。
检测短路输入引脚
通过循环各种OSDETECT设置,输入信号被拉向源电压。驱动强度有限的输入(引脚不短路)被拉向每个源电压。然而,如果引脚短路,信号保持在相同的电压。

上电的顺序

在设备上电或系统级复位时,ADC断电并禁用。当给ADC上电时,请使用以下顺序:

  1. 在PCLKCR13寄存器中设置该位使能所需的ADC时钟。
  2. 在ADCCTL2的precale域中设置所需的ADC时钟分频器。
  3. 通过在ADCCTL1中设置ADCPWDNZ位上电ADC。
  4. 允许采样前的延迟。有关必要的时间,请参阅数据表。
    如果多个adc同时上电,则可以在一条写指令中对所有adc分别完成步骤1和步骤3。此外,只要延迟发生在所有adc开始上电之后,就只需要一个延迟。

AD# C校准

在制造和测试过程中,德州仪器对adc的增益、偏置和线性进行校准。
这些修剪设置存储在TI保留的OTP内存中,可以使用c可调用函数加载。
Device_cal()函数将ADC的修剪值从OTP内存复制到相应的修剪寄存器。
直到适当的工厂装饰加载,ADC和其他模拟模块没有指定在数据表规范内操作。类似地,如果修剪值不是出厂设置,而是放置到修剪寄存器中,则不指定ADC(和其他模块)在数据表规范中操作。
引导ROM调用校准函数,因此修剪值最初是在没有用户干预的情况下填充的。
但是,如果由于模块重置或出于其他原因修改而清除了修剪,则用户必须调用校准函数(在C2000Ware头文件中定义)。

ADC零偏置校准

在工厂测试期间确定和校准ADC偏移误差。但是,如果最终应用程序特别要求,用户仍然可以选择执行偏移校准。本节介绍如何使用内部VREFLO连接进行单端操作的偏移校准。
零偏移误差定义为在VREFLO转换电压时发生的与0的差值。零偏移误差可以是正的也可以是负的。为了纠正这个错误,将相等幅度和相反极性的调整写入ADCOFFTRIM寄存器。这个寄存器中包含的值在ADC结果寄存器中可用之前被应用。此操作完全包含在ADC核心中,因此结果的时序不受影响,并且对于任何修剪值保持ADC的完整动态范围。
无论转换器分辨率如何,每个ADCOFFTRIM步骤的大小都是(VREFHI-VREFLO)/ 65536
使用以下步骤在12位单端模式下重新校准ADC偏移量:

  1. 设置ADCOFFTRIM为+112步(0x70)。这增加了一个人为偏移量,以解释可能驻留在ADC核心中的负偏移量。
  2. 在VREFLO(内部连接)上执行16次转换的某个倍数,累积结果(例如,32*16次转换= 512次转换)。使用ACQPS的最大值,以确保较长的稳定时间,以考虑内部VREFLO连接的寄生阻抗。
  3. 将累积结果除以16的倍数(例如,对于512次转换,除以32)。
  4. 设置ADCOFFTRIM为112 -步骤3的结果。

ADC Timings

将模拟电压转换为数字值的过程分为S+H相位和转换相位。ADC采样和保持电路(S+H)由SYSCLK进行时钟控制,而ADC转换过程由ADCCLK进行时钟控制。adccclk是根据ADCCTL2寄存器中的PRESCALE字段对SYSCLK进行分割而产生的。
S+H持续时间是正在转换的SOC的ACQPS字段的值加上1乘以SYSCLK周期。用户必须确保此持续时间超过1 ADCCLK周期和数据表中指定的最小S+H持续时间。转换时间约为10.5个ADCCLK周期。确切的转换时间总是SYSCLK周期的整数。请参阅15.12.1节中的时序图和表以了解准确的时序。

ADC时序图

下面的图表显示了两个soc的ADC转换时序给出以下假设:
•SOC0和SOC1配置为使用相同的触发器。
•触发器发生时,没有其他soc正在转换或挂起。
•轮循指针处于导致SOC0首先转换的状态。
•ADCINTSEL配置为在SOC0转换结束时设置ADCINT标志(该标志是否传播到CPU导致中断由PIE模块中的配置决定)。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

额外的信息

以下部分包含额外的实用信息。

确保同步运行

为了获得最佳性能,设备上的所有adc必须同步操作。设备数据表规定了在同步和异步模式下的性能,这些参数在操作模式之间存在差异。
为了确保同步操作,设备上的所有adc必须同步操作。这是通过向所有adc写入配置来实现的,这些配置使所有adc的采样和转换阶段精确对齐。实现这一点的最简单方法是为每个ADC的触发选择和ACQPS (S+H持续时间)的SOC配置写入相同的值。此外,同步adc还必须为SOC优先级控制、突发模式、突发触发和突发大小配置相同的值。

基本同步操作

下面的示例在ADCA和ADCC上配置两个soc,每个soc具有相同的触发选择和ACQPS值。这导致ADCA和ADCC之间的同步操作。对于有两个以上adc的设备,可以使用相同的原理同步所有的adc
在这里插入图片描述

在这里插入图片描述

从图15-14中可以注意到几点。首先,虽然具有相同编号的soc的ACQPS值必须相同,但对于具有不同编号的soc可以使用不同的ACQPS值。因此,同步操作不需要单个全局S+H时间,而是只有同时采样的通道需要相同的S+H持续时间。这个例子的另一个要点是,任何通道选择值都可以用于任何SOC。最后,这个例子假设了循环操作。如果使用高优先级的soc,则所有adc的优先级必须设置为一致。

与多个触发源同步操作

只要每组soc具有相同的触发选择和ACQPS设置,就可以使用多个触发源,同时仍然实现同步操作
下面的示例演示了使用三个soc和两个触发器源时ADCA和ADCC之间的同步操作。图15-15演示了任何相对触发时间的组合仍然会导致同步操作在这里插入图片描述

在这里插入图片描述

请注意,除软件触发外,TRIGSEL字段中可以选择的任何触发源都可以使用。没有办法同时发出所有adc的软件触发器,因此可能导致异步操作。ADCINT1或ADCINT2也可以用作触发器,只要ADCINTSOCSEL1和ADCINTSOCSEL2寄存器为所有adc配置相同,并且不使用软件触发来启动转换链。

SOC数不均匀的同步操作

如果只使用一个触发源,一个ADC可以比其他ADC使用更多的soc,同时仍然同步操作。
在这里插入图片描述

在这里插入图片描述

请注意,如果触发器在所有soc完成转换之前再次出现,则ADCC将立即在SOC0上开始转换,而ADCA将在SOC2完成之前再次开始转换SOC0。这将导致异步操作,因此必须小心不要溢出触发器。
在这里插入图片描述

重叠的转换

如果用户可以确保转换时间不重叠,那么就没有必要在所有adc上配置相同的所有soc,以实现与同步操作等效的性能。例如,如果系统中的两个ADC触发器来自两个始终180度的ePWM源,那么SOC0可以用于具有不同触发源和不同ACQPS值的ADCA和ADCC
在这里插入图片描述

在这里插入图片描述

选择获取窗口持续时间

为了正确操作,必须允许ADC的输入信号有足够的时间对样品充电并保持电容,Ch。通常,S+H持续时间的选择使采样电容充电到最终值的½LSB或¼LSB范围内,具体取决于可容忍的沉降误差。
确定所需沉降时间的最佳方法是模拟ADC和ADC驱动电路,以确保足够的沉降性能。有关ADC信号调理电路设计和评估的额外指导,请参阅C2000 mcu的ADC输入电路评估和C2000 ADC的电荷共享驱动电路。
所需沉降时间的近似值也可以使用RC沉降模型来确定。模型的时间常数由式给出:

在这里插入图片描述

在这里插入图片描述

因此S+H时间必须至少设置为:37.8ns˟7.13 = 270ns
如果SYSCLK = 100MHz,则每个SYSCLK周期为10ns。S+H持续时间为270ns/10ns = 27 SYSCLK周期,因此该输入的ACQPS设置为至少CEILING(27.0) - 1 = 26。
虽然这给出了所需采集窗口的粗略估计,但更好的方法是使用ADC输入模型、源阻抗/电容模型和SPICE(或类似软件)中的任何板寄生设置电路,并进行模拟以验证采样电容是否达到所需的精度。
器件数据手册规定了最小ADC S+H窗口持续时间。不要使用持续时间小于此规范的ACQPS值

实现同步采样

在这里插入图片描述

外部参考电路的设计

在这里插入图片描述

ADC-DAC环回测试

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值