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:双轴驱动器:为什么 CMPA 配置为影子加载模式、而 CMPB 不配置?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1384732/tms320f28379d-dual-axis-drive-why-is-cmpa-configured-in-shadow-load-mode-and-cmpb-is-not

器件型号:TMS320F28379D

工具与软件:

各位专家、您好!

在双轴驱动器项目中、在 PWM 初始化函数内`HAL_setupMotorPWM ()`:

 您能否告诉我为什么仅为计数器比较 A 启用影子加载模式? 为什么它没有为计数器比较 B 启用?

是否不需要、因为 CPRA 和 CMPB 配置为操作限定符的补充项?

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

    您好!

    死区子模块的配置方式可使 PWMA 和 PWMB 成为互补输出。 只需 在软件中使用 CMPA。

    此致!

    Kevin

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

    感谢您的回复 Kevin。

    我正在尝试将 ePWM 模块配置为充当制动斩波器、用于在再生扭矩期间通过电阻器耗散多余的能量。

    CMPA 和 CMPB 是独立配置的。 CMPA 用于电机1、CMPB 用于电机2。

    在这种情况下、是否建议 启用影子加载模式?

    这是我的初始化函数:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // Sets up the PWMs (Pulse Width Modulators) for Brake chopper
    void HAL_setupBrCpPWMs(HAL_MTR_Handle handle)
    {
    HAL_MTR_Obj *obj = (HAL_MTR_Obj*) handle;
    //Configure clock
    EPWM_setClockPrescaler(obj->pwmHandle[3],
    EPWM_CLOCK_DIVIDER_1,
    EPWM_HSCLOCK_DIVIDER_2);
    EPWM_setTimeBaseCounterMode(obj->pwmHandle[3], EPWM_COUNTER_MODE_UP);
    //Set period(Switching frequency : 5 KHz)
    EPWM_setTimeBasePeriod(obj->pwmHandle[3], 10000U);
    EPWM_setPhaseShift(obj->pwmHandle[3], 0U);
    //Enable compare shadow load mode
    EPWM_setCounterCompareShadowLoadMode(obj->pwmHandle[3],
    EPWM_COUNTER_COMPARE_A,
    EPWM_COMP_LOAD_ON_CNTR_ZERO);
    EPWM_setCounterCompareShadowLoadMode(obj->pwmHandle[3],
    EPWM_COUNTER_COMPARE_B,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢!

    AK

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

    Hi AK、

    CMPA 和 CMPB 都是独立配置的。 CMPA 用于电机1、CMPB 用于电机2。

    那么、您还是要对电机1使用 ePWMx 通道 A、对电机2使用通道 B?

    在这种情况下、您是否建议 启用影子加载模式?

      在 发生 CNTR_ZERO 事件时、影子加载模式将影子 CMPA/B 寄存器加载到活动寄存器、以便同步 EPWM CMPA/B 更新。 您的 CNA 使用此模式、除非您需要为 再生扭矩 应用立即更新 CMPx。

    此致!

    Kevin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="315587" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1384732/tms320f28379d-dual-axis-drive-why-is-cmpa-configured-in-shadow-load-mode-and-cmpb-is-not/5297109 #5297109"]好的、您还需要对电机1使用 ePWMx 通道 A、对电机2使用通道 B?[/QUOT]

    是的、正确。

     影子加载模式将 在 发生 CNTR_ZERO 事件时将影子 CMPA/B 寄存器加载到活动寄存器、从而同步 EPWM CMPA/B 更新。 您的 CNA 使用此模式、除非您需要为 再生扭矩 应用立即更新 CMPx。

    如果我们以影子加载为例、

    如果时间周期(TBPRD)为10000、我们在进行计算  

    TBCTR 为1000时、我将 CMPA 写入500、然后写入

    TBCTR 为5000、我将 CMPA 写入800、然后写入

    TBCTR 为9000、我将 CMPA 写入100、然后当计数器 回滚 到零时

    TBCTR 为 0、CMPA 值为100将被取?(之前的值800,500将被忽略?)

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

    Hi AK、

    是的、您描述的行为是正确的。 在配置的加载事件(TBPRS、零等)时、您写入的最新寄存器值将从影子寄存器移到活动寄存器。

    此致!

    Kevin

x 出现错误。请重试或与管理员联系。