DSP T320F2803x 模数转换模块 ADC

一、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框 图

DSP T320F2803x 模数转换模块 ADC
ADC 框图

二、SOC 操作原则

2.1 SOC 框图

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

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

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

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

DSP T320F2803x 模数转换模块 ADC
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时钟)相加,可以得出总采样时间。 下面的中显示了各种采样时间的示例。

DSP T320F2803x 模数转换模块 ADC
具有不同 ACQPS 值的采样时间

2.3 触发操作

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

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

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

DSP T320F2803x 模数转换模块 ADC

DSP T320F2803x 模数转换模块 ADC

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

DSP T320F2803x 模数转换模块 ADC

DSP T320F2803x 模数转换模块 ADC

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

2.4 通道选择

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

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

ADCSOCxCTL[CHSEL]:

DSP T320F2803x 模数转换模块 ADC
ADCSOCxCTL[CHSEL]

三、ONESHOT 单次转换支持

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

DSP T320F2803x 模数转换模块 ADC
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】:

DSP T320F2803x 模数转换模块 ADC

四、ADC 转换优先级

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

罗宾环优先级例子:

DSP T320F2803x 模数转换模块 ADC
罗宾环优先级例子:

 

 

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

DSP T320F2803x 模数转换模块 ADC

DSP T320F2803x 模数转换模块 ADC

DSP T320F2803x 模数转换模块 ADC

五、同时采样模式 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 寄存器中。
DSP T320F2803x 模数转换模块 ADC
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 :

DSP T320F2803x 模数转换模块 ADC
同步采样模式的时序示例 / Late Interrupt Pulse

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

DSP T320F2803x 模数转换模块 ADC
同步采样模式的时序示例 / Early Interrupt Pulse

 

六、EOC 和中断操作

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

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

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

DSP T320F2803x 模数转换模块 ADC
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 功率电平必须通过软件进行控制,并且与设备功率模式的状态无关。