【F28003x】 ADC模块

文章目录

  • 优先级
  • Burst Mode
  • EOC and Inrerrupt Operation
  • Post-Processing Blocks(PPB)
    • PPB Offset Correction
    • PPB Limit Detection and Zero-Crossing Detection
  • Synchronous Operation
  • Achieving Simultaneous Sampling

模拟子系统包括 ADC、温度传感器、DAC、CMPSS(比较器子模块)
ADC的每个SOC也可以在ADCINT1和ADCINT2标志设置时触发,这对于创建连续转换非常有用。
ADC转换的通道顺序,与初始化配置时的顺序一致。
如:
【F28003x】 ADC模块_第1张图片
根据配置,当CPU1 Timer 2生成一个事件时,SOC0、SOC1、SOC2和SOC3将最终按此顺序被采样和转换。ACINA5(信号1)的转换结果将在ADCRESULT0中。同样,ADCINA0(信号2)、ADCINA3(信号3)和ADCINA2(信号4)的结果将分别在ADCRESULT1、ADCRESULT2和ADCRESULT3中。
在任何时候,无论soc是否已配置为接受特定的触发器, 软件触发器都可以设置要转换的soc。这是通过在ADCSOCFRC1寄存器中写入位来实现的。

优先级

当同时设置多个SOC标志时,两种优先级形式中的一种决定了它们转换的顺序。缺省情况下,优先级方法为轮询。在该方案中,没有一个SOC具有固有的更高的优先级。

高优先级模式首先分配给SOC0,然后按数字顺序递增。SOCPRIORITY字段中写入的值定义了第一个非高优先级的SOC。换句话说,如果将值4写入SOCPRIORITY,则SOC0、SOC1、SOC2和SOC3定义为高优先级,其中SOC0最高。
【F28003x】 ADC模块_第2张图片
【F28003x】 ADC模块_第3张图片

Burst Mode

Burst模式允许单个触发器一次通过一个或多个循环soc。在ADCBURSTCTL寄存器中设置位BURSTEN将ADC配置为burst模式。这将导致TRIGSEL字段被忽略,但仅对配置为轮询操作(不是高优先级)的soc而言。所有循环soc都是基于ADCBURSTCTL寄存器中的BURSTTRIG字段触发的,而不是TRIGSEL字段。在接收到突发触发器之后,ADC包装器不会设置所有的轮询soc进行转换,而只设置(ADCBURSTCTL。突发规模+ 1)soc。

EOC and Inrerrupt Operation

每个SOC都有相应的转换结束(EOC)信号。这个EOC信号可以用来触发ADC中断。ADC可以配置为在采集窗口结束或在电压转换结束时生成EOC脉冲。这是使用ADCCTL1寄存器中的位INTPULSEPOS配置的。
每个ADC模块有4个可配置ADC中断。这些中断可以由16个EOC信号中的任何一个触发。每个ADCINT的标志位可以直接读取,以确定相关的SOC是否完整,或者中断是否可以传递到PIE。
ADCCTL1.ADCBSY位并不清晰地表示一组soc中的所有转换都已完成,只表示ADC已准备好处理下一个转换。为了确定一个SOC序列是否完整,观测一个ADCINT标志到序列中的最后一个SOC,并监视该ADCINT标志。
【F28003x】 ADC模块_第4张图片

Post-Processing Blocks(PPB)

每个ADC模块包含四个后处理块(PPB)。这些块可以使用ADCPPBxCONFIG与16个RESULT寄存器中的任何一个相关联。配置字段。每个PPB可以同时删除一个与ADCIN通道相关的偏移量,减去一个参考值,标记一个过零点,标记一个高或低比较限制。此外,过零和比较标志可以触发PWM和/或产生中断。PPB还能够记录与PPB相关的SOC被触发到实际开始采样之间的延迟。

PPB Offset Correction

在许多应用中,外部传感器和信号源产生偏移。ADC偏移量的全局调整不足以补偿这些偏移量,这些偏移量因通道而异。后处理块可以消除这些偏移与零开销,节省大量的控制周期。

通过首先指向ADCPPBxCONFIG来完成偏移量校正。CONFIG到所需的SOC,然后将偏移校正值写入ADCPPBxOFFCAL,后处理块将自动从原始转换结果中增加或减去OFFCAL寄存器中的值,并将其存储在ADCRESULT寄存器中。

  • 向OFFCAL寄存器写入0可以有效地禁用偏移量校正功能,将未更改的原始结果传递给ADCRESULT寄存器。

  • 可以将多个ppb指向同一个SOC。在这种情况下,实际应用的OFFCAL值将是具有最高优先级的PPB的值。

  • 特别地,当在SOC0上使用PPB时需要小心,因为默认情况下所有PPB都指向这个SOC。这可能导致编号较低的PPB被编号较高的PPB的偏移校正无意覆盖。

PPB Limit Detection and Zero-Crossing Detection

许多应用程序对ADC转换结果执行限制检查。PPB可以自动执行对上限和下限的检查,或者在ADCPPBxRESULT更改符号时执行检查。基于这些比较,它可以自动生成PWM和/或中断,降低样本到ePWM的延迟,减少软件开销。该功能还使具有安全意识的应用程序能够基于超出范围的ADC转换跳闸ePWM,而不需要任何CPU干预。

要启用此功能,首先指向ADCPPBxCONFIG.CONFIG到所需的SOC,然后向一个或两个寄存器ADCPPBxTRIPHI写入值。LIMITHI ADCPPBxTRIPLO。LIMITLO(过零检测不需要进一步配置)。当超过这些限制时,将在ADCEVTSTAT寄存器中设置PPBxTRIPHI位或PPBxTRIPLO位。注意,ADCEVTSTAT寄存器中的PPBxZERO位是由EOC门控的,而不是由ADCPPBxRESULT寄存器中的符号更改门控的。

  • 如果需要对来自同一个ADC模块的不同PPB事件采取不同的操作,那么ADCEVTINT ISR将不得不读取ADCEVTSTAT寄存器中的PPB事件标志,以确定是哪个事件导致了中断。

  • 如果需要为高比较、低比较和/或过零分别生成不同的ePWM行程,可以通过将多个ppb指向相同的SOC来实现。

  • 过零检测电路认为零的结果为正。
    【F28003x】 ADC模块_第5张图片

Synchronous Operation

只要每组soc具有相同的触发器选择和ACQPS设置,就可以在实现同步操作的同时使用多个触发器源。
对于具有相同编号的soc, ACQPS值必须相同,但是对于具有不同编号的soc,可以使用不同的ACQPS值。
【F28003x】 ADC模块_第6张图片

Achieving Simultaneous Sampling

虽然每个ADC没有双S+H电路,但很容易实现同步采样。这是通过在两个或多个ADC模块上设置SOC触发器来实现的,以使用相同的触发器源。下面的示例演示了基于ePWM3事件的同步采样。采样ADCINA3和ADCINC5。使用了20个SYSCLK周期的采集窗口,但可能有不同的持续时间。
在这里插入图片描述

你可能感兴趣的:(dsp,单片机,dsp开发)