This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28335:ADC 的同步采样模式

Guru**** 1997655 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/570886/tms320f28335-simultaneous-sampling-mode-for-adc

器件型号:TMS320F28335

我想在 F28335中使用 ADC 的同步采样模式。 目前、我已将其设置为进行顺序采样。 转换开始按如下方式触发:

ADC A:由 ePWM1触发

ADC B:由 ePWM3触发

ADC A 和 B 发布它们自己的中断。 那么、我的问题是、它们在各自的 ISR 中进行了相应的采样、对吧?


那么、如果我使用同步采样模式、因为两个 ADC 将一起采样、我是否应该在单个 ISR 中对这两个 ADC 进行采样? 此外、中断是否应由 ADC A 或 ADC B 生成? 如果我的问题没有意义、请原谅并提供帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rohit、

    如果在该器件上配置了2个独立的序列发生器(SEQ1和 SEQ2)、它们将不会连接到 ADC S+H A 或 ADC S+H B。您可以转换每个序列中所需的任何 ADC 通道、结果将转至相应的 ADC 结果寄存器。 但是、SEQ1仅由 ePWM SOC A 触发、SEQ 2仅由 ePWM SOC B 触发(但这些 ePWM 触发器不限制每个序列中可以采样的 ADC 通道)。

    当您启用同步采样模式时、您可以在给定 SEQ 中再次选择所需的任何通道以及按任何顺序。 唯一的区别是、对于一个通道配置、您将在结果寄存器中得到2个结果、一个来自 S+H A、一个来自 S+H B。您仍然可以使用正常的序列结束中断来读取结果。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、同步采样模式的优势是什么? 或者更像同步采样的用途是什么? 如果 ADC A 和 ADC B 的 SOC 分时、这是否意味着在同步采样中、如果 ADC B SOC 未激活、则仅对 ADC A 进行采样? 请说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rohit、

    同步采样允许同时对两个电压进行采样(电压仍按顺序转换)。 这些电压位于不同的 S+HS (A 或 B)上、但会在同一 ADC 中进行转换(只有一个 ADC)。 这非常适合需要具有相同采样时刻的样片的应用(例如具有多个电机相位的电机控制)。

    我认为您可能正在将 S+H 和 SOC 结合起来、因此我将再次声明给定的 SOC A 或 SOC B (这些是 ePWM 时基中可配置的触发时间)与 ADC S+H A 或 S+H B 没有关联(这些是 ADC 的通道组)。 您可以从 SOCA 触发器对 ADC 输入 B3进行采样、也可以同时对来自 SOCB 触发器的 ADC 输入 A2和 B2进行采样、然后对 A4和 B4进行采样...等等
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Devin、我仍然不清楚这一点。 我将介绍四种情景和方法来描述工作流。 请告诉我它是否正确、如果错误、请更正。

    情况1. ePWM 1触发 SOC A、ePWM 3触发 SOC B。触发间隔为5us。 启用同步采样。
    SOC A 到达时。

    ADC A 采样值 A0、B0、A1、B1和 A2、B2由于同时采样被启用、即使 SOC B 尚未到达也是如此。
    2.当任一 ADC 中的转换完成时发出中断。 所有六个通道的结果都根据需要发送到变量。
    3.5uS 之后、SOC A、SOC B 到达。 然后重复步骤2和3。

    情况2. ePWM 1同时触发 SOC A 和 SOC B。启用同步模式。
    SoC A 和 SOC B 到达一起。 通道 A0、B0、A1、B1、A2和 B2按上述顺序进行采样。
    2.发出中断。 值被传输到变量。

    情况3. ePWM 1触发 SOC A 和 ePWM 3 SOC B。触发器间隔为5us。 启用顺序采样模式。
    SoC A 到达并对 A0、A1和 A2进行采样。 ADC B 未采样。
    2、ADC A 的 EOS 发出中断。A0、A1和 A2的值被传输到变量中。
    SoC B 的到达时间比 SOC A 晚5us。对 B0、B1和 B2进行采样。 ADC A 未采样。
    4、ADC B 的 EOS 发出中断。来自 B0、B1和 B2的值被传输到变量。

    情况4. ePWM1触发 SOC A 和 SOC B。启用顺序模式。
    SoC A 和 SOC B 到达。 按上述顺序对 A0、A1、A2、B0、B1和 B2进行采样。
    2.为任一 ADC 的 EOS 布置中断、并且值从全部六个通道传输到所需的变量。

    我认为我目前正在使用案例3、我打算转到案例2。 请澄清我的解释是否错误。

    此外、如果我的理解正确、ADC 有以下模式:

    顺序模式

    2.同步采样模式

    a. 2个序列发生器、每个都有8个值

    b. 1个具有16个值的级联序列发生器

    我的问题是、如果我对这些模式的理解是正确的、那么顺序模式和具有级联序列发生器的同步模式之间有何区别?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rohit、

    查看案例3:

    情况3. ePWM 1触发 SOC A 和 ePWM 3 SOC B。触发器间隔为5us。 启用顺序采样模式。
    SoC A 到达并对 A0、A1和 A2进行采样。 ADC B 未采样
    2、ADC A 的 EOS 发出中断。A0、A1和 A2的值被传输到变量中。
    SoC B 的到达时间比 SOC A 晚5us。对 B0、B1和 B2进行采样。 ADC A 未采样。
    4、ADC B 的 EOS 发出中断。来自 B0、B1和 B2的值被传输到变量。

    SOCA 无需仅触发通道。  您可以轻松地执行以下操作:

    SoC A 到达并对 A0、B3和 A1进行采样(顺序)。  

    如果您在 ADC 用户指南(spru812a)中查看通道选择寄存器、您会发现您实际上可以选择任何通道:

    现在、在顺序模式下、您还可以采样:

    SoC A 到达且对 A2、B2、A5、B5进行采样(顺序)。  

    A2和 B2在时间上会相当接近、但并不相同。  相反、如果您配置为同步模式、则可以执行相同的操作:

    SoC A 到达且对 A2、B2、A5、B5进行采样(同时对 A2+B2和 A5+B5进行采样)。  

    现在、您的 A2和 B2样本会在同一时刻采集、这对于某些应用而言是有利的。  但是、您会失去不对 A 和 B 通道对进行采样的灵活性(例如、您无法进行 A2、B2、A5、B7)。  

    现在、就 SOCB 触发器的用途而言、您可以使用它对同一组信号进行采样、也可以使用它对完全不同的信号集进行采样。  这两种配置都是有效的配置(顺序模式):

    案3a. ePWM 1触发 SOC A 和 ePWM 3 SOC B。触发器间隔为5us。 启用顺序采样模式。
     SoC A 到达并    对 A0、B1和 B7进行采样。  
    2、ADC SOC A 的 EOS 发出中断。A0、B1和 B7的值被传输到变量。
    SoC B 的到达时间比 SOC A 晚5us。A0、B1和 B7将再次采样。  
    4、ADC SOC B 的 EOS 发出中断。A0、B1和 B7的值 被传输到变量。

    案件3b。 ePWM 1触发 SOC A 和 ePWM 3 SOC B。触发器间隔为5us。 启用顺序采样模式。
     SoC A 到达并    对 A0、B1和 B7进行采样。  
    2、ADC  SOC A 的 EOS 发出中断。A0、B1和 B7的值被传输到变量。
    SoC B 的到达时间比 SOC A 晚5us。对 A5、B5和 B0进行采样。  
    4、ADC  SOC B 的 EOS 发出中断。来自 A5、B5和 B0的值 被传输到变量中。

    3a 和3b 之间的区别在于通道选择的配置方式。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Devin、您好、这会使事情清除很多。 下面我要谈最后一个问题:

    我想在 t=0时同时对 ADC A0、B0和 ADC A2、B2进行采样。

    2.我想在假设时间 t=5us 时同时对 ADC A1和 B1采样。

    我的问题是、如何配置寄存器、SOC A 会对 A0、B0和 A2、B2进行采样、而 SOC B 会对 A1和 B1进行采样。 由于我需要对、根据我的描述、需要同步采样、这一点非常清楚。

    以上就是我一直想做的事情。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rohit、

    查看 示例1-1。 ADC 用户指南(http://www.ti.com/lit/ug/spru812a/spru812a.pdf)中的"同步采样双序列发生器模式示例"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    (支柱的其余部分在上方被切断)

    此示例展示了如何在同步模式下使用2个序列发生器、每个 SEQ 上有4对转换。 要获得所需的值、您需要将 SEQ1上的 maxconv 更改为"1"、并将 SEQ2上的 maxconv 更改为"0"。 然后、您还需要更改特定信道的信道选择:

    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0//A0和 SEQ1上的 B0
    在 SEQ1上、AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 2//A2和 B2
    AdcRegs.ADCCHSELSEQ1.bit.CONV07 = 1//A1和 B1 (在 SEQ2上)

    注:如果您实际上希望 A0、B0、A2和 B2同时全部处于同一状态,则可以使用在两个 CH2转换之间夹在 CH0转换中的技巧...SEQ1应为 CH2->CH0->CH2。 然后、您可以对通道2样本进行平均值计算、以获得与 CH0样本相同的平均时间样本。 这并不像同时对全部4个采样一样好、但比两个连续对要好一些。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好 Devin。 感谢您的解释。 因此、这意味着当 SOC 触发器到达时(无论是 SOC A 还是 SOC B)、最多可以进行16次转换。 现在、要进行这些转换的 ADC 通道由十六个4位 CONVnn 位字段的内容决定、该过程从 CONV0指向的通道的转换开始、到 CONV15中的通道转换结束 (或更快地将 MAXCONV 设置为小于15)。 这些通道可以是 A0到 B7之间的任何值。 产生的中断来自 SOC A 或 SOC B (以启动转换的触发器为准)。

    现在、在上面描述的案例2中、ePWM1同时触发 SOC A 和 SOC B。如果 SOC A 要采样、例如 A0、A1、B0、B1、 而 SOC B 设置为采样 A2、B2、A3、B3。 由于 SOC A 和 SOC B 同时到达、那么对哪些通道进行采样? 哪个 SOC 优先、或者一个 SOC 被完全忽略?


    我还注意到有一个 ADCINT 中断、它在 PIE 表中的 x=1、y=6。 当 x=1、y=1和 x=1、y=2有两个序列发生器中断时、该中断的作用是什么? 请解释一下?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Rohit、

    在级联序列发生器模式下可处理多达16次转换、在双序列发生器模式下可处理每个序列的8次转换。 由于双序列发生器模式下的每个序列最多只能处理8次转换、因此如果使用同步采样模式、您将需要将 maxconv 设置设置设置设置为小于'3'。

    在同步双序列发生器模式下、CONV00、"01、"02"和"03选择最多8个由 SEQ1和 CONV07转换的通道、"08、"09和"10选择最多8个由 SEQ2转换的通道。

    两个触发器同时到达时的行为在 ADC 用户指南的"1.2自动转换序列发生器工作原理"或"表1-2中进行了指定。 单级联和级联工作模式比较"

    我实际上不确定不同的中断-这里的文档不是很清楚;我必须返回给您。 我猜 ADCINT 和 SEQ1INT 是同一中断的替代映射。