主题中讨论的其他器件:SysConfig、 C2000WARE
您好!
我正在使用 F28377D 中的 SysConfig 功能通过对 cbl-exp8进行模块化来生成 ePWM。
1.请说明如何使我的所有 PWM (其中4个)仅在一个开关周期内运行并停止?
2.参考下图,我希望 ePWM (s4)在一个开关周期中导通两次,请如何在 SysConfig 中实现?

谢谢!
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.
您好!
我正在使用 F28377D 中的 SysConfig 功能通过对 cbl-exp8进行模块化来生成 ePWM。
1.请说明如何使我的所有 PWM (其中4个)仅在一个开关周期内运行并停止?
2.参考下图,我希望 ePWM (s4)在一个开关周期中导通两次,请如何在 SysConfig 中实现?

谢谢!
器件型号:LAUNCHXL-F280049C



尊敬的 Olutayo:
刚刚合并了你的两个问题、因为我认为他们提出的是相同的问题。
在 ePWM 上使用跳闸功能需要外部信号(跳闸源)来指示 PWM 变为低电平。 如果您有一些 GPIO 信号变为低电平 (因为跳闸源为低电平有效)、以便向关闭 PWM 的跳闸发出信号、则可以选择此选项。 请告诉我您是否尝试使用特定的外部信号来关闭 PWM。
但是、如果您不想实现硬件触发器、则必须尝试在软件中实现。 方法有几种、但我所做的是使用 F28004x 上行 C2000Ware 示例并将其修改为使用中断(尽管 EPWM2/3存在、但我仅对 EPWM1进行了修改):
结果是 PWM 在第一个周期脉冲两次、然后关闭。 下面是通道 EPWM1A:

下面随附了我用于生成该波形的工程。 请告诉我这是否对您有所帮助!
e2e.ti.com/.../epwm_5F00_simple_5F00_updown.zip
此致、
艾里森
尊敬的 Olutayo:
我们通常直接使用 传统的 EPWM 代码和实现 、而不是 EPWM 的 Simulink Blockset 实现方面的专家;要获取对特定 Simulink 功能的支持、 请尝试查看以下链接中的 MathWorks 常见问题解答:
如果您还有其他问题、获取有关 MathWorks 产品支持的最佳方式是 联系 MathWorks 现场技术支持。
您还可以在 MATLAB Answers C2000论坛上搜索答案或发布问题。 此外、还在 "文档 和 示例"中提供了有关 MathWorks 支持 C2000的信息。
此致、
艾里森
尊敬的 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_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。
如果你或任何其他论坛成员有进一步的建议,将不胜感激。
此致、
奥卢塔约