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.

TMS320F28379D: PWM的同步SYNC信号与PWM的相对位置对不上

Part Number: TMS320F28379D

专家好,我想请教下,我在测试EPWM1的同步SYNC信号输出和pwm的相对位置关系时发现有点奇怪

我设置了SYNC信号在计数器等于0时输出信号(通过XBAR配置为GPIO输出,用于示波器查看)

PWM设置为上下模式、上升沿低电平+下降沿高电平。PWM比较寄存器仅在周期进行加载

理论上波形应该是SYNC信号处在PWM波形的高电平中点位置,但示波器上看对不上,想请教下是为什么呢?

  • 代码贴上来看看。

  • 您好

    针对你提到的TMS320F28379D的EPWM1的SYNC信号输出和PWM相对位置关系的问题,这里有几个可能的原因和检查点,希望能帮助你解决问题:

    1. SYNC信号和PWM时钟的关系‌:

      • 确保SYNC信号确实是在计数器等于0时输出。虽然你通过XBAR配置为GPIO输出用于示波器查看,但还是要确认这个配置是否生效,以及是否有其他因素(如延迟)影响了SYNC信号的实际输出时间。
      • 检查PWM的时钟源设置,确保PWM的时钟与SYNC信号的时钟是一致的。不一致的时钟源可能会导致两者之间的相位关系发生变化。
    2. PWM比较寄存器的加载时机‌:

      • 你提到PWM比较寄存器仅在周期进行加载。请确认这个加载时机是否与SYNC信号的输出时机相协调。如果加载时机不当,可能会导致PWM波形与SYNC信号之间的相对位置关系出现偏差。
    3. PWM的模式和极性设置‌:

      • 你将PWM设置为上下模式、上升沿低电平+下降沿高电平。请确认这些设置是否正确,并且与你的预期相符。错误的模式或极性设置可能会导致PWM波形与SYNC信号之间的相对位置关系不正确。
    4. 硬件电路的影响‌:

      • 检查与EPWM1相关的硬件电路,包括输出电路、滤波电路等,确保它们没有引入额外的延迟或相位偏移。
    5. 示波器的设置和校准‌:

      • 确认示波器的设置是否正确,包括触发源、时间基准、电压量程等。错误的示波器设置可能会导致观察到的波形与实际波形不一致。
      • 如果可能的话,使用另一台示波器或测试设备进行验证,以排除示波器本身的问题。
    6. 软件代码和配置‌:

      • 仔细检查与EPWM1相关的软件代码和配置,确保没有遗漏或错误。特别是与SYNC信号和PWM波形相关的配置和代码。

    https://dev.ti.com/tirex/explore/node?node=A__AAzO2oxis8w7tFwC-JEaJA__motor_control_c2000ware_sdk_software_package__0.jXikd__LATEST

    https://dev.ti.com/tirex/explore/node?node=A__AHZ5a4K.FJu1TjJGe1Pj3Q__C2000WARE__1kRFgrO__LATEST

    以上是官方的相关例程。

  • Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    PWM
    EPWM_setClockPrescaler(EPWM1_BASE, EPWM_CLOCK_DIVIDER_1, EPWM_HSCLOCK_DIVIDER_1);
    EPWM_setTimeBasePeriod(EPWM1_BASE, INV_PWM_PERIOD);
    EPWM_setTimeBaseCounter(EPWM1_BASE, 0U);
    EPWM_setTimeBaseCounterMode(EPWM1_BASE, EPWM_COUNTER_MODE_UP_DOWN);
    EPWM_disablePhaseShiftLoad(EPWM1_BASE);
    EPWM_setPhaseShift(EPWM1_BASE, 0U);
    EPWM_setSyncOutPulseMode(EPWM1_BASE, EPWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);
    // Set up shadowing
    EPWM_setCounterCompareShadowLoadMode(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, EPWM_COMP_LOAD_ON_CNTR_PERIOD);
    // Set Compare values
    EPWM_setCounterCompareValue(EPWM1_BASE, EPWM_COUNTER_COMPARE_A, 0);
    // Set actions
    EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_LOW, EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
    EPWM_setActionQualifierAction(EPWM1_BASE, EPWM_AQ_OUTPUT_A, EPWM_AQ_OUTPUT_HIGH, EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • 你好,EPWM的配置都通过寄存器挨个检查了,应该是没问题

    因为绝大部分时候pwm的频率都能对得上,只是中间突然有一个异常的

  • 您好

    根据您的描述,请减少外部信号干扰和电路板硬件布局优化来解决您的问题。

  • 感谢您的回复。

    我测量的是DSP直接输出引脚的电平,具体软件配置如上,现象倒是很稳定

    您看是否是我在配置上有遗漏等原因呢?感觉还是想软件哪里配置上有问题,但反复对比并挨个检查了寄存器,未发现异常

  • 您好

    关于软件配置请参考给您分享的相关例程结合TRM来对应一下

    https://www.ti.com.cn/cn/lit/ug/spruhm8k/spruhm8k.pdf?ts=1729229874727&ref_url=https%253A%252F%252Fwww.ti.com.cn%252Fproduct%252Fcn%252FTMS320F28379D

    因为具体功能具体寄存器进行配置,请您按照上述资料进行匹配。