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.

[参考译文] TMDSCNCD28P65X:TMDSCNCD28P65X

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1261439/tmdscncd28p65x-tmdscncd28p65x

器件型号:TMDSCNCD28P65X

我正在处理示例项目 EPWM_EX8_DEADband 项目。 我没有 看到任何死区。 我 正在尝试。在 ePWM 处、基周期为50kHz

这些是我的设置

/**
*导入此配置中使用的模块。
*/
const ePWM = scripting.AddModule ("/driverlib/epwm.js、{}、false);
const epwm1 = ePWM.addInstance();
const epwm2 = ePWM.addInstance();
const epwm3 = ePWM.addInstance();
const epwm4 = ePWM.addInstance ();
const epwm5 = ePWM.addInstance ();
const epwm6 = ePWM.addInstance ();

/**
*将自定义配置值写入导入的模块。
*/
epwm1.$name ="myEPWM1";
epwm1.epwmTimebase_counterMode ="EPWM_COUNTER_MODE_UP_DOWN";
epwm1.epwmTimebase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_1";
epwm1.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA ="ePWM_AQ_OUTPUT_HIGH";
epwm1.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA ="ePWM_AQ_OUTPUT_LOW";
epwm1.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_UP_CMPB ="ePWM_AQ_OUTPUT_LOW";
epwm1.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_DOWN_CMPB ="ePWM_AQ_OUTPUT_HIGH";
epwm1.epwmTimebase_period = 1000;
epwm1.epwmCounterCompare_cmpA = 500;
epwm1.epwmCounterCompare_CMPB = 500;
epwm1.epwmDeadband_enableRED = true;
epwm1.epwmDeadband_delayRED = 100;
epwm1.epwmTimebase_syncInPulseSource ="ePWM_SYNC_IN_PULSE_SRC_DISABLE";
epwm1.ePWM.$assign ="EPWM1";
epwm1.ePWM.ePWM_apin.$assign ="GPIO0";
epwm1.ePWM.ePWM_bPin.$assign ="GPIO1";

epwm2.epwmDeadband_enableRED = true;
epwm2.epwmDeadband_enableFED = true;
epwm2.epwmTimebase_clockDiv ="epwm_clock_divider 4";
epwm2.epwmTimebase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_4";
epwm2.epwmTimebase_period = 2000;
epwm2.epwmTimeBase_counterMode ="ePWM_COUNTER_MODE_UP_DOWN";
epwm2.epwmCounterCompare_cmpA = 500;
epwm2.epwmCounterCompare_CMPB = 1500;
epwm2.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm2.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA ="ePWM_AQ_OUTPUT_HIGH";
epwm2.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA ="ePWM_AQ_OUTPUT_LOW";
epwm2.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm2.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_UP_CMPB ="ePWM_AQ_OUTPUT_HIGH";
epwm2.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_DOWN_CMPB ="ePWM_AQ_OUTPUT_LOW";
epwm2.$name ="myEPWM2";
epwm2.copyUse = true;
epwm2.copyFrom ="myEPWM1";
epwm2.epwmDeadband_delayRED = 400;
epwm2.epwmDeadband_delayFED = 200;
epwm2.ePWM.$assign ="EPWM2";
epwm2.ePWM.ePWM_apin.$assign ="GPIO2;
epwm2.ePWM.ePWM_bPin.$assign ="GPIO3";

epwm3.epwmDeadband_polarityRED ="ePWM_DB_POLICY_ACTIVE_LOW";
epwm3.epwmDeadband_polarityFED ="ePWM_DB_POLICY_ACTIVE_LOW";
epwm3.epwmDeadband_enableRED = true;
epwm3.epwmDeadband_enableFED = true;
epwm3.epwmTimebase_clockDiv ="epwm_clock_divider 4";
epwm3.epwmTimebase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_4";
epwm3.epwmTimebase_period = 2000;
epwm3.epwmTimebase_counterMode ="ePWM_COUNTER_MODE_UP_DOWN";
epwm3.epwmCounterCompare_cmpA = 500;
epwm3.epwmCounterCompare_CMPB = 1500;
epwm3.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm3.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA ="ePWM_AQ_OUTPUT_HIGH";
epwm3.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA ="ePWM_AQ_OUTPUT_LOW";
epwm3.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm3.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_UP_CMPB ="ePWM_AQ_OUTPUT_HIGH";
epwm3.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_DOWN_CMPB ="ePWM_AQ_OUTPUT_LOW";
epwm3.$name ="myEPWM3";
epwm3.copyUse = true;
epwm3.copyFrom ="myEPWM1";
epwm3.epwmDeadband_delayRED = 400;
epwm3.epwmDeadband_delayFED = 200;
epwm3.ePWM.$assign ="EPWM3";
epwm3.ePWM.ePWM_apin.$assign ="GPIO4";
epwm3.ePWM.ePWM_BPin.$assign ="GPIO5";

epwm4.epwmDeadband_polarityFED ="EPWM_DB_POLICY_ACTIVE_LOW";
epwm4.epwmDeadband_enableRED = true;
epwm4.epwmDeadband_enableFED = true;
epwm4.epwmTimebase_clockDiv ="epwm_clock_divider 4";
epwm4.epwmTimebase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_4";
epwm4.epwmTimebase_period = 2000;
epwm4.epwmTimebase_counterMode ="EPWM_COUNTER_MODE_UP_DOWN";
epwm4.epwmCounterCompare_cmpA = 500;
epwm4.epwmCounterCompare_CMPB = 1500;
epwm4.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm4.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA ="ePWM_AQ_OUTPUT_HIGH";
epwm4.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA ="ePWM_AQ_OUTPUT_LOW";
epwm4.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm4.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_UP_CMPB ="ePWM_AQ_OUTPUT_HIGH";
epwm4.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_DOWN_CMPB ="ePWM_AQ_OUTPUT_LOW";
epwm4.$name ="myEPWM4";
epwm4.copyUse = true;
epwm4.copyFrom ="myEPWM1";
epwm4.epwmDeadband_delayRED = 400;
epwm4.epwmDeadband_delayFED = 200;
epwm4.ePWM.$assign ="EPWM4";
epwm4.ePWM.epwm_apin.$assign ="GPIO6";
epwm4.ePWM.ePWM_bPin.$assign ="GPIO7";

epwm5.epwmDeadband_polarityRED ="EPWM_DB_POLICY_ACTIVE_LOW";
epwm5.epwmDeadband_enableRED = true;
epwm5.epwmDeadband_enableFED = true;
epwm5.epwmTimebase_clockDiv ="epwm_clock_divider 4";
epwm5.epwmTimebase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_4";
epwm5.epwmTimebase_period = 2000;
epwm5.epwmTimeBase_counterMode ="EPWM_COUNTER_MODE_UP_DOWN";
epwm5.epwmCounterCompare_cmpA = 500;
epwm5.epwmCounterCompare_CMPB = 1500;
epwm5.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm5.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA ="ePWM_AQ_OUTPUT_HIGH";
epwm5.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA ="ePWM_AQ_OUTPUT_LOW";
epwm5.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm5.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_UP_CMPB ="ePWM_AQ_OUTPUT_HIGH";
epwm5.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_DOWN_CMPB ="ePWM_AQ_OUTPUT_LOW";
epwm5.$name ="myEPWM5";
epwm5.copyUse = true;
epwm5.copyFrom ="myEPWM1";
epwm5.epwmDeadband_delayRED = 400;
epwm5.epwmDeadband_delayFED = 200;
epwm5.ePWM.$assign ="EPWM5";
epwm5.ePWM.epwm_apin.$assign ="GPIO8";
epwm5.ePWM.ePWM_bPin.$assign ="GPIO9";

epwm6.epwmTimebase_clockDiv ="epwm_clock_divider 4";
epwm6.epwmTimebase_hsClockDiv ="EPWM_HSCLOCK_DIVIDER_4";
epwm6.epwmTimebase_period = 2000;
epwm6.epwmTimeBase_counterMode ="EPWM_COUNTER_MODE_UP_DOWN";
epwm6.epwmCounterCompare_cmpA = 500;
epwm6.epwmCounterCompare_CMPB = 1500;
epwm6.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm6.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_UP_CMPA ="ePWM_AQ_OUTPUT_HIGH";
epwm6.epwmActionQualifier_ePWM_AQ_OUTPUT_A_ON_TIMEBASE_DOWN_CMPA ="ePWM_AQ_OUTPUT_LOW";
epwm6.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_ZERO ="ePWM_AQ_OUTPUT_LOW";
epwm6.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_UP_CMPB ="ePWM_AQ_OUTPUT_HIGH";
epwm6.epwmActionQualifier_ePWM_AQ_OUTPUT_B_ON_TIMEBASE_DOWN_CMPB ="ePWM_AQ_OUTPUT_LOW";
epwm6.$name ="myEPWM6";
epwm6.copyUse = true;
epwm6.copyFrom ="myEPWM1";
epwm6.epwmDeadband_outputSwapOutA = true;
epwm6.epwmDeadband_outputSwapOutB = true;
epwm6.ePWM.$assign ="EPWM6";
epwm6.ePWM.epwm_apin.$assign ="GPIO10";
epwm6.ePWM.ePWM_bPin.$assign ="GPIO11";

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

    是否有任何其他可以尝试的示例项目?

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

    您好、Sreeni、

    我看了看你的代码:

    1.  epwm1.epwmTimebase_clockDiv ="epwm_clock_divider 1";缺失。

    注:  为了在多个 ePWM 模块之间完美地同步 TBCLK、每个 ePWM 模块的 TBCTL 寄存器中的预分频器位必须进行相同设置。

    2.对于 EPWM1,它看起来设置为红色=100,通过复制相同的设置,它可以根据需要正确地工作。  

    示例8介绍了所有死区可能。  

    以防 EPWM 配置有问题:ePWM 开发用户指南 将此作为良好的起点。  

    此致、

    U·雷迪

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

    您好、Sreeni、

    继续跟进、以查看问题是否得到解决?

    谢谢。此致、

    乌坦姆

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

    由于不活动而关闭此线程。  

    如需进一步支持、请打开另一个主题。

    谢谢。此致、

    乌坦姆