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.

[参考译文] TMS320F280049:延迟 ADC SOC

Guru**** 2524930 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/977974/tms320f280049-delay-adc-soc

器件型号:TMS320F280049

您好!

我在 GPIO 引脚上有应生成 SOC 的外部信号。 我知道 ADCSOC0CTL 中有选择 ADCTRIG4 - GPIO、ADCEXTSOC 的选项。 是否有任何方法可以将 SOC 延迟1.5 us?

我知道我可以使用中断来计数时间、然后使用 ADCTRIG0 -仅限软件、但它太频繁了、我想在中断中节省 CPU 时间。

您是否有任何想法、如何延迟来自外部源的 SOC? 也许我可以使用 eCAP 并使用 eCAP 源来触发其他东西?

谢谢你

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

    您好 Juraj、

    我认为最好的方法是在要触发 SOC 之前再添加一个虚拟 SOC、并使其足够长的时间来延迟感兴趣的样本。  例如、如果您希望根据外部触发器对两个通道进行采样、通常可以将 SOC 设置为类似于以下内容:

    • SOC0:外部触发器,第一个通道(如 A4),S+H =任何第一个通道。 需要 S+H (例如100ns)
    • SOC1:外部触发器、第二通道(如 A2)、S+H = 任何第二通道。 需要 S+H (例如120ns)

    因此、应在之前添加第三个 SOC、并将 S+H 时间设置为足够长的时间、以便转换需要1500ns:

    • SOC0:外部触发器、虚拟通道(例如内部 VREFLO 连接)、S+H = 1500ns -转换时间(我想为210ns;请参阅 DS ADC 时序)= 1290ns
    • SOC1:外部触发器、第一个通道(如 A4)、S+H =任何第一个通道。 需要 S+H (例如100ns)
    • SOC2:外部触发器、第二通道(如 A2)、S+H = 任何第二通道。 需要 S+H (例如120ns)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的想法。 它既简单又干净。 我喜欢这个。

    我对该解决方案有一个问题。如果我将其移动、使其不是 SOC0 1 2而是 SOC13 14 15:

    • SOC13:外部触发器、虚拟通道(例如内部 VREFLO 连接)、S+H = 1500ns -转换时间(我想为210ns;请参阅 DS ADC 时序)= 1290ns
    • SOC14:外部触发器,第一通道(如 A4),S+H =任何第一通道。 需要 S+H (例如100ns)
    • SOC15:外部触发器,第二通道(如 A2),S+H = 任何第二通道。 需要 S+H (例如120ns)

    然后、我还通过 ADC_setSOCPriality()配置具有高优先级的 SOC0

    ADC_PRI_Thru SOC1_HIPRI、     //!< SOC 0-1 hi pri、其他轮循

    当触发 SOC13 S+H 并等待1500ns 时、HIPRRIO SOC0在此(SOC13 S+H)期间不会生效? 那么、SOC0也会延迟1500ns、对吧?

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

    您好 Juraj、

    是的、您答对了;任何单个 SOC 都是不可中断的、即使是通过高优先级 SOC 也是如此。  如果这是一个问题、并且您有其他备用 SOC、您可能会将单个1.5us SOC 拆分为多个较短的 SOC。   

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

    感谢你的帮助:-)

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

    您好!

    我尝试了您提出的解决方案。 我工作但并非总是如此。 它看起来像是跳过一些触发器。 我怀疑 ADCEXTSOC 可能是问题所在。 我尝试寻求有关 GPIO XINT2 ADCEXTSOC 的 Xbar 输入5的更多规格、但技术参考手册中很少。

    它是否对上升沿做出反应? 还是下降沿? InputXBar 中的引脚是否存在任何限制? 能否通过 InputXBar 使用 PWM 输出引脚来触发 ADCEXTSOC?

    在哪里可以找到有关它的更多信息?

    更新:  

    我发现它实际上是突发转换导致了问题。 如果我将5个单独的 SOC 配置到同一个 EXTADCSOC 触发器(无突发)、它将正常工作。

    哪些因素可能会干扰 ADC 突发转换?

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

    您好 Juraj、

    阅读有关突发模式的 TRM (见下文)部分。  基本上、突发模式会覆盖每个 SOC 单独配置的触发器、并用全局突发触发器替换它们。  当接收到突发触发信号时、将转换突发大小 SOC。   这种方法的主要用途是、如果您希望在每次触发转换之间进行旋转。

    如果要在每个 SOC 中使用触发选择、则不需要突发模式。  突发模式也不需要从一个触发器转换多个 SOC (为此、只需为所有 SOC 提供相同的触发源)。   

      

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

    感谢您的解释。