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:当 SOC ADC 和 PWM 以非常不同的频率运行时(F_PWM = 10*F_ADC)同步

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/600767/tms320f28335-synchronize-soc-adc-and-pwm-when-they-run-at-very-different-frequencies-f_pwm-10-f_adc

器件型号:TMS320F28335

您好!

我需要设置 PWM1、PWM2和 PWM3以生成200kHz 的 PWM、从而驱动半导体栅极。 我想以低于开关频率的频率获得样本(我的算法控制需要太多时间才能以相同的开关频率进行采样和控制)。 因此、我想使用 PWM4在20kHz 时触发 ADC SOC。

我已经检查过、如果我将所有 PWM2、PWM3和 PWM4作为 PWM1的从器件(TBCTL[PHSEN]=1)、那么我无法达到这20kHz 的 SOC 触发、因为当 PWM1计数器为0时、PWM4也会被重置。

如果我设置 EPwm4Regs.TBCTL.bit.PHSEN = 0、则会触发20kHz SOC、但我不确定这是否会与 PWM1、PWM2和 PWM3同步。 如您所知、同步 PWM 和 ADC 信号以获得平均电流值等非常重要。
那么、问题是、如何在 PWM4为20kHz 时触发 SOC、同时使 PWM1、PWM2、PWM3以10倍的速度(200kHz)运行?

非常感谢。

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

    在 F28335上、唯一的过零方式是分配一个单独的 PWM 计时器、以 F/10运行它并将它与 PWM1同步。

    或者、您可以继续以200kHz 的频率进行采样、但在 ISR 内部保持一个计数器并直接跳出、除非您正在进行第10次测量。  PWM 模块在 ET 子模块中具有/2功能、因此您会在每隔一个触发条件下获得 SOC。  这样、您就会每5个样本中丢弃4个。

    最新器件的 ET 子模块中有一个4位计数器、因此这不是问题、但不幸的是、在 F28335上、计数器只有2位。  

    此致、

    Richard

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

    谢谢 Richard!

    您告诉我的第一件事是分配一个单独的 PWM 计时器并在与 PWM1同步的 F/10运行它、这就是我尝试执行的操作、问题如下:

    PWM1 (200kHz)-开关

    PWM4 (20kHz) -采样、生成 SOC ADC (我希望它与 PWM1同步、因此我设置 PHSEN = 1)

    当 PWM1计数器复位时、PWM4也被重置、因此我永远不会达到20kHz。

    我将检查第二个解决方案是否适用于我的应用。

    我还在考虑 SOC 的软件强制、但我不确定是否会与 PWM 良好同步。

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

    是的、没错。 您的20kHz 计时器必须在同步链上更高、以便200kHz PWM 与其同步。 如果您可以交换 PWM1和 PWM4、则可以使用、但我知道您可能具有布局限制。

    我怀疑软件强制会起作用。 根据我的经验、您几乎永远无法通过这种方式获得确定性和可靠的计时。

    此致、

    Richard