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.

[参考译文] UCD3138A:ADC 采样与 DPWM 频率同步

Guru**** 2553260 points
Other Parts Discussed in Thread: UCD3138, UCD3138A

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/789895/ucd3138a-synchronization-of-adc-sampling-with-dpwm-frequency

器件型号:UCD3138A
主题中讨论的其他器件:UCD3138

大家好、

在我的应用中、有一个频率约为110kHz 的 DPWM。 还有5个 ADC 信号需要持续测量。 我现在的问题是、ADC 结果将受 DPWM 信号的影响、我的应用将无法稳定工作!

在数据表中、我发现可以同步一个完整的序列。 但我每个 DPWM 周期需要一个采样、并以 DPWM 频率逐步进行定序! 是否有办法以这种方式将 ADC 采样与 DPWM 频率同步?

提前感谢!

此致、

Andy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如前所述、您只能使用外部 ADC 触发器同步序列中的第一个测量值。
    此外、ADC-12的采集时间大约为1微秒、因此无法准确地将其指向9微秒开关周期内特定时间的样本。

    如果您有备用的 EADC、这可能会有所帮助。 可以在 SAR 模式下配置 EADC 以测量绝对值、但它不会进行多路复用、只能测量一个信号。

    您需要多长时间测量全部5个信号?
    您能否考虑使用外部模拟多路复用器?

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

    您好 Yitzhak、

    感谢您的回答。 2个 ADC 信号扫描交流输入电压。 每 μ s 200µs 需要该值。 其他信号并不那么重要、可以以较低的速率进行采样。

    重新设计后、可以使用外部模拟多路复用器。 但目前我必须处理的情况是这样的。

    我将寻找一种通过软件处理该问题的方法!

    此致、

    Andy

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

    应用是什么? 这是 PFC 吗?

    为何需要将测量交流电与开关频率同步? 您是否尝试使采样 远离开关噪声?

    我想测量 在110KHz 开关周期内变化的几个信号、并且希望在开关周期内的确切位置对这些信号进行采样。

    如果这些是您要测量的低频交流信号、并且每200us 只需要它们、那么情况就会非常不同且更容易解决。

    要将 此类 ADC 采样与 DPWM 同步、您至少有两个选项:

    1) 1)使用连接到 DPWM 边沿的 ADC 外部触发引脚在两者之间同步。

    2) 2)将快速中断连接到 DPWM 周期结束、因此每隔8 个开关周期就有一个中断。 在每73us 发生一次中断时、您会触发单个 ADC 测量并通过软件控制您的测量序列。 并且、应根据经验调整 ISR 内的 ADC 触发位置。

    此致、

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

    感谢您的建议。

    您是对的:应用是 PFC、我希望使开关噪声远离采样。

    首先、我们通过使用快速中断拒绝了处理、因为我们避开了额外的处理负载(由于额外的运行时间)。 我们担心我们的基准时间会受到太大的影响。

    但我们考虑了与您建议的类似的想法。 但是、我想确保它实际上是唯一的同步方式、并且我没有忽略数据表中的某些内容。

    我们使用 ADC 的外部触发机制、但这里的触发选择具有 DPWMA/B 低分辨率边沿。

    更多问题:
    如果 DPWM 被禁用、DPWMA / B 低分辨率边沿是否也会触发? 可能不是因为 DPWM 计时器保持不变。 是这样吗?
    如何减少 ADC 中断(例如、您建议的每8次)?

    此致、

    Andy

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

    如果禁用 DPWM、则禁用所有边沿。

    每8个开关周期的中断与 ADC 中断无关、而是与 DPWM 中断相关。

    中断配置可通过以下方式进行设置:

    Dpwm0Regs.DPWMIT.bit.PRD_INT_SCALE = 4;//每 8个开关周期生成一个中断

    Dpwm0Regs.DPWMIT.bit.PRD_INT_EN = 2;

    write_reqmask (……。 | CIMINT_All_DPWM0 |………);

    Write_firqpr (CIMINT_All_DPWM0 |…… );

    此致、

    Yitzhak

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

    感谢您的帮助以及有关 DPWM 中断的提示。 遗憾的是、我们的应用中已经使用了外部触发引脚。 但我们尝试使用 HS 环路事件(EXT_TRIG_SEL = 2)来触发 ADC 采样器。

    DPWM 中断按预期出现。 但 ADC 中断并不总是被触发。 这就是我们实现 IRQ 排序的方式。 在评估板上、此代码会产生 ADC 中断、但不会在我们的生产板上生成!

    静态空 Dpwm1IrqHandler (void)
    {
    if (Dpwm1Regs.DPWMIT.ALL){}
    
    AdcRegs.ADCCTRL.bit.EXT_TRIG_DLY = 123;
    AdcRegs.ADCCTRL.bit.EXT_TRIG_EN = 1;
    }
    
    静态空 AdcIrqHandlerMain (void)
    {
    IF (AdcRegs.ADCSTAT.bit.ADC_INT)
    {
    AdcRegs.ADCCTRL.bit.EXT_TRIG_EN = 0;
    
    raW_Value[idxSequence]= AdcRegs.ADCRESULT[0].bit.RESULT;
    
    idxSequence++;
    IF (idxSequence >= ADC_CH_COUNT)
    {
    idxSequence = 0;
    }
    AdcRegs.ADCSEQSEL0.bit.SEQ0 = sequence[idxSequence];
    }
    } 

    你有线索吗?

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

    您是否在评估板和生产板上都使用 UCD3138A? 您是否有可能在其中一个电路板上安装 UCD3138 (非 A)?

    为了克服这一问题、您可以将 ADC 中断连接到 CIM、而无需在 CIM 级别启用 ADC 中断、然后使用 CIM 标志查看 ADC 结果是否就绪。

    此致、

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

    在两个电路板上、我们都使用 UCD3138A。 ADC_INT 也不会被置位。 轮询 ADC_INT 和 ADC IRQ 处理没有区别!

    似乎、通过 DPWM 事件(EXT_TRIG_SEL = 2或3)触发 ADC 在控制器中工作不正确。 但是、我们可能遇到了中断的时序问题。

    DPWM IRQ 应开始对 ADC 序列进行采样。 这个序列由 ADC IRQ 中的软件处理。 因为 CIM 只能处理一个中断:当第二个快速中断发生时、当第一个快速中断已经在其处理程序例程中时、会发生什么情况? 如何处理这种情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UCD 没有嵌套中断控制器、但我已经看到了处理嵌套中断的方法。
    一般来说、我不是启用过多中断的粉丝。 但如果您确实需要、我可能会找到一个代码示例。