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.

[参考译文] TMS320F280049C:在一个周期内停止 EPW

Guru**** 2555630 points
Other Parts Discussed in Thread: SYSCONFIG, LAUNCHXL-F280049C, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1360237/tms320f280049c-stopping-epw-in-one-period

器件型号:LAUNCHXL-F280049C
主题中讨论的其他器件:SysConfigC2000WARE

您好!  

我正在使用 F28377D 中的 SysConfig 功能通过对  cbl-exp8进行模块化来生成 ePWM。   

1.请说明如何使我的所有 PWM (其中4个)仅在一个开关周期内运行并停止?

2.参考下图,我希望 ePWM (s4)在一个开关周期中导通两次,请如何在 SysConfig 中实现?  

谢谢!  

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

    器件型号:LAUNCHXL-F280049C

    您好
    我正在尝试通过一次性跳闸停止 ePWM。 我使用的是 C2000 microcontrolller Blockset 和 launchpad-F280049C。 我使用 F28004x 系列 ePWM 模块设置 ePWM。 我已经在 TRM 中设置了一个图示。 我已将 GPIO 12路由到输入 XBar 1以执行跳闸、如屏幕截图中所示。
    您能否建议如何在一个周期后停止 EPW (我使用 ePWM 的加减计数器)? 我是否需要进一步设置 GPIO12? 设置的目的是仅在一个周期内进行测试、ePWM 必须停止。
    此致、
    Olutayo。

     

     

     


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

    尊敬的 Olutayo:

    刚刚合并了你的两个问题、因为我认为他们提出的是相同的问题。

    在 ePWM 上使用跳闸功能需要外部信号(跳闸源)来指示 PWM 变为低电平。 如果您有一些 GPIO 信号变为低电平 (因为跳闸源为低电平有效)、以便向关闭 PWM 的跳闸发出信号、则可以选择此选项。 请告诉我您是否尝试使用特定的外部信号来关闭 PWM。

    但是、如果您不想实现硬件触发器、则必须尝试在软件中实现。 方法有几种、但我所做的是使用 F28004x 上行 C2000Ware 示例并将其修改为使用中断(尽管 EPWM2/3存在、但我仅对 EPWM1进行了修改):

    • 动作限定器使用 CMPA 和 CMPB 每个 PWM 周期生成2个 PWM 脉冲
    • 在 PWM 周期结束时生成中断(我使用 CMPAD 作为中断触发器)
      • 在中断中、我修改了操作限定符、以将 PWM 设置为低电平  
      • 唯一需要注意的是、在每个 PWM 周期中仍会生成中断、但就输出而言、它完全符合您的目标

    结果是 PWM 在第一个周期脉冲两次、然后关闭。 下面是通道 EPWM1A:

    下面随附了我用于生成该波形的工程。 请告诉我这是否对您有所帮助!

    e2e.ti.com/.../epwm_5F00_simple_5F00_updown.zip

    此致、

    艾里森

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

    尊敬的 Allison:

    感谢你的帮助。 我不使用任何外部触发器、也不使用方便的代码来执行此操作。 我正在使用 Simulink 中的 C2000控制器 Blockset。 我认为让一个 ePWM 周期性地运行应该非常简单、但遗憾的是、我不明白。  

    EPW 事件触发器是否可以像下面的设置那样实现这一点。 我尝试过但未正常工作:

    请告知。

    此致、

    奥卢塔约

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

    尊敬的 Olutayo:

    我们通常直接使用 传统的 EPWM 代码和实现 、而不是 EPWM 的 Simulink Blockset 实现方面的专家;要获取对特定 Simulink 功能的支持、 请尝试查看以下链接中的 MathWorks 常见问题解答:

    如果您还有其他问题、获取有关 MathWorks 产品支持的最佳方式是 联系  MathWorks 现场技术支持。

    您还可以在  MATLAB Answers C2000论坛上搜索答案或发布问题。 此外、还在 "文档 和 示例"中提供了有关 MathWorks 支持 C2000的信息

    此致、

    艾里森

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

    尊敬的 Allison:  

    我正在尝试探索此选项。 不过、导通时间似乎被中断、我可以在您的结果中看到1.5个周期。 我希望得到下图两个光标范围内的 PWM:

    此致、

    奥卢塔约

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

    尊敬的 Allison:

    我曾尝试打开并运行您连接的工程、但尽管按照建议使用 C2000 v5.2.0.00进行安装和筛选、但仍会出现以下错误。  

    subdir_rules.mk:16:目标"Build-1978635295"的配方失败
    gmake:***无规则设定'C:/ti/c2000/C2000Ware_5_02_00_00_APL_RC3/driverlib/f28004x/driverlib/ccs/Debug/driverlib.lib '为'All'所需的目标。
    无效的参数'-s':文件"C:\ti\c2000\c2000Ware_5_02_00_00_APL_RC3\.metadata\sdk.json"不存在
    gmake:***[BUILD-1978635295]错误1
    gmake:由于错误、未重制目标"all"。

    ****构建完成****

    请帮上忙、

    此致、

    奥卢塔约

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

    尊敬的 Olutayo:

    啊、是的、很抱歉、这是因为我的 C2000Ware 的名称不同-让我修改路径并立即重新发送

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

    尊敬的 Olutayo:

    请尝试此操作-修复了指向 C2000Ware_5_02_00_00的路径!

    e2e.ti.com/.../7506.epwm_5F00_simple_5F00_updown.zip

    此致、

    艾里森

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

    尊敬的 Allison:

    非常感谢。 路径中似乎有一个错误、因为它无法正常工作。 作为权变措施、我尝试了查看 epwm_simple_updown.c 文件、并将您的修改复制到了我的相应文件中、如下所示:

    // epwm1ISR - ePWM 1 ISR
    //
    __interrupt void INT_myEPWM1_ISR (void)
    {

    //
    //设置操作限定符以在0时清除 PWM 低电平,然后不更改输出
    //
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
    EPWM_setActionQualifierAction (myEPWM1_BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_NO_CHANGE、EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB);
    //
    //清除此计时器的 INT 标志
    //
    EPWM_clearEventTriggerInterruptFlag (myEPWM1_base);

    //
    //确认中断组
    //
    INTERRUPT_clearACKGROUP (INTERRUPT_ACK_GROUC3);

    我在上述线路之前做了正确的调整,但不能产生一个周期运行,但连续 PWM。

    如果你或任何其他论坛成员有进一步的建议,将不胜感激。

    此致、

    奥卢塔约

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

    尊敬的 Olutayo:

    很奇怪、仍有错误... 但是、您只需打开另一个工程、然后使用工程中的文件替换 main.c 和 SysConfig 文件、应该会实现相同的行为。 您是否复制了整个文件(.c 和.syscfg)并进行试用? 如果您这样做、我们应该会得到相同的结果。  

    此致、

    艾里森