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.

[参考译文] TMS570LS1224:同步3个ePWM,基于PWM的左对齐ADC转换-代码示例

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1088781/tms570ls1224-syncing-3-epwms-left-aligned-pwm-based-adc-conversion---code-example

部件号:TMS570LS1224

QJ:您好!

您是否有任何可用于同步3个ePWM的示例代码,它们都是左对齐的?

我们如何验证它是否左对齐?

谢谢

Sb

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

    SB您好!

    ePWM模块通过时钟同步方案链接在一起,使其在需要时可作为单个系统运行。  每个ePWM都有一个同步输入(EPWMxSYNCI)和一个同步输出(EPWMxSYNCO)。  第一个实例(ePWM1)的输入同步来自外部引脚。  每个ePWM模块都可以配置为使用或忽略同步输入。

    您也可以将同步脉冲(SFFSYNC)强制到或 EPWMxSYNCI。

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

    QJ:您好!

    如何将PWM配置为左对齐?

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

    QJ:您好!

    如果您有示例代码,能否分享?

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

    你好,Sachin,

    很抱歉,我没有示例代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="49.2792万" url="~/support/mspectors/arm-based微控制器-group/arm-based微控制器/f/arm-based微控制器-forum/108.8781万/tms570ls1224-sync-3-ePWMS-left-align-pwm-based -adC-conversion1224 -adC-conversion --code-example/403.1024万#4031024#PWMs左403.1024万左对齐如何配置["PWM]"?

    什么是左对齐? 您是指上升计数模式还是下降计数模式? PWM模块支持上升计数,下降计数和上升下降计数模式。 请参阅TRM中的ePWM章节。

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

    上计数模式。是否有此模式的示例代码?

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

    _enable_interrupit_();
    /*设置ADC */
    adcStartConversion (adcREG1,adcGROUP1);
    adcStartConversion (adcREG2,adcGROUP1);
    KickerReg ->KICKER0 = 0x83E70B13U;
    KickerReg ->KICKER1 = 0x95A4F1E0U;
    PinMuxReg ->PINMMR35 = 0x0000;
    KickerReg->KICKER0 = 0x0万U;
    KickerReg->KICKER1 = 0x0万U;
    /*设置etPWM */
    etpwmSetCount (etpwmREG11000);
    etpwmSetCount (etpwmREG 2500);
    etpwmSetCount (etpwmREG3300);
    etpwmSetCounterMode (etpwmREG1,CounterMode_UpDown);
    etpwmSetCounterMode (etpwmREG2,CounterMode_UpDown);
    etpwmSetCounterMode (etpwmREG3,CounterMode_UpDown);
    etpwmSetSyncOut(etpwmREG1,SyncOut_CtrlEqZer);
    etpwmSetSyncOut (etpwmREG2,SyncOut_EPWMxSYNCI);
    etpwmSetSyncOut (etpwmREG3,SyncOut_EPWMxSYNCI);
    etpwmREG2->TBCTL |=(uint16)2u <1U;// PHSEN
    etpwmREG3->TBCTL |=(uint16)2u <1u;
    /*将模块配置为在ctr=0时将PWMA值设置为1,在ctr=CmpA */时将其设置为0
    etpwmActionQualConfig_t configPWM;
    configPWM.CtrlEqPeriod_Action = ActionQual_Disabled;
    configPWM.CtrlEqZero _Action = ActionQual_Disabled;
    configPWM.CtrlEqCmpAux_Action = ActionQual_set;
    configPWM.CtrlEqCmpADown _操作= ActionQual_Clear;
    configPWM.CtrlEqCmpBUp_Action = ActionQual_Disabled;
    configPWM.CtrlEqCmpBDown _操作= ActionQual_Disabled;
    etpwmSetActionQualPwmA (etpwmREG1,configPWM);
    etpwmSetActionQualPwmA (etpwmREG2,configPWM);
    etpwmSetActionQualPwmA (etpwmREG3,configPWM);
    /*启用SOC触发器*/
    etpwmEnableSOCA (etpwmREG1,ctr_zero,EventPeriod_FirstEvent);
    etpwmClearEventFlag(etpwmREG1, Event_SOCA);
    etpwmTriggerEvent (etpwmREG1,Event_SOCA);
    etpwmDisableCounterLoadOnSync(etpwmREG1);
    etpwmEnableCounterLoadOnSync (etpwmREG2,0,0x2000);
    etpwmEnableCounterLoadOnSync (etpwmREG3,0,0x2000);
    etpwmEnableTimebasePeriodShadowMode(etpwmREG1);
    etpwmEnableTimebasePeriodShadowMode(etpwmREG2);
    etpwmEnableTimebasePeriodShadowMode(etpwmREG3);
    etpwmEnableCmpAShadowMode(etpwmREG1, LoadMode_CtrlEqZer);
    etpwmEnableCmpAShadowMode(etpwmREG2, LoadMode_CtrlEqZero);
    etpwmEnableCmpAShadowMode (etpwmREG3,LoadMode_CtrlEqZero);
    etpwmDeadBandConfig_t deadbandconfig;
    deadbandconfig.halfCycleEnable = true;
    deadbandconfig.inputmode = PWMA_RED_FED;
    deadbandconfig.outputmode = PWMB_Fed_PWMA_red;
    deadbandconfig.polacity = Invert_PWMB;
    etpwmSetDeadBandDelay(etpwmREG 111.2112万 ;
    etpwmSetDeadBandDelay(etpwmREG 211.2112万 ;
    etpwmSetDeadBandDelay(etpwmREG 311.2112万 ;
    etpwmEnableDeadBand (etpwmREG1,deadbandconfig);
    etpwmEnableDeadBand (etpwmREG2,deadbandconfig);
    etpwmEnableDeadBand (etpwmREG3,deadbandconfig)

    您认为这会起作用吗? 我们如何进行验证?

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

    你好,Sachin,

    我假设您已使代码正常工作。