主题中讨论的其他器件:C2000WARE、 SysConfig
工具与软件:

大家好!
我有一个有关 ePWM 的(哑)问题。 我将使用 ePWM1并在此处输出高电平有效互补脉冲。 不过、我发现、开始运行代码时会有一个很短的脉冲(图片中以红色圆圈显示)、然后 PWM 波形看起来正常。 是否应该有短脉冲? 还是有什么问题?
谢谢!
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.
工具与软件:

大家好!
我有一个有关 ePWM 的(哑)问题。 我将使用 ePWM1并在此处输出高电平有效互补脉冲。 不过、我发现、开始运行代码时会有一个很短的脉冲(图片中以红色圆圈显示)、然后 PWM 波形看起来正常。 是否应该有短脉冲? 还是有什么问题?
谢谢!
您好、Allison、
是的、我根据 C2000Ware 示例设置 ePWM。 请查看如何设置:
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//递增计数
EPwm1Regs.TBPRD = 1000;//设置计时器周期
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;// Disable phase loading (禁用相位加载)
EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;// Phase 为0
EPwm1Regs.TBCTR = 0x0000;//清除计数器
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV2;//时钟与 SYSCLKOUT 的比率
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2;
//将影子寄存器加载设置为零
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;// Enable shadow mode (启用影子模式)
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//当时基计数器等于零时更新寄存器
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
//设置比较值
EPwm1Regs.CMPB.bit.CMPB = 500;//设置比较 B 值
//设置操作
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//将 PWM1A 设置为零
EPwm1Regs.AQCTLA.bit.CBU = AQ_clear;//在事件 B 上清除 PWM1A
//设置死区时间
EPwm1Regs.DBCTL.bit.out_mode = DB_FULL_ENABLE;
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
EPwm1Regs.DBCTL.bit.in_mode = DBA_ALL;
EPwm1Regs.DBRED.bit.DBRED = 40;
EPwm1Regs.DBFED.bit.DBFED = 40;
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
您好、Allison、感谢您的回复。 通道 B 是我看到初始脉冲开启的通道。 基本上、如果我不使用死区配置并手动设置 A 和 B、问题就会消失。 这可能与死区模块相关吗?
另外还有一个单独的问题、当我想相对于 PWM 1对 PWM 4进行相移时、指定该参数的最佳方法是什么? 现在、我只知道使用 EPwm4Regs.TBCTL、bit.SYNCOSEL = TB_SYNC_IN、但如何指定来自 PWM 1的 SYNC_IN? 我看不到相关选项。
谢谢!
Justin、您好。
是的、死区模块负责该初始脉冲。
您看到这种行为的原因是通道 A 和通道 B 输出从低电平开始。 当您将死区配置为反转通道 A 以生成通道 B (在启动 ePWM 计数器之前)时、这种更改将 在输出端实现、并导致通道 B 最初变为高电平-这是在计数器从0开始计数之前、然后可以将 EPWMA 驱动为高电平、EPWMB 为低电平。 您可以尝试在需要时通过在输出上启用上拉/下拉来改变这种行为。
关于第二个问题、可以使用 EPWM1同步输出脉冲来同步 EPWM4和 EPWM1。 如果您需要一张可视图、可在 TRM 中找到同步方案图:

可以使用 SYNCSELECT 寄存器选择 EPWM4同步源信号。 此信息也可在器件 TRM 中找到:

因此、默认情况下、如果启用相移、则选择 EPWM1SYNCOUT 脉冲用作 EPWM4的同步源。
此致、
Allison
感谢您发送编修。
要跟进相移 PWM:SYNCSELECT.EPWM4SYNCIN 的完整代码是什么? 只需键入此行便会出现错误。 我猜 SYNCSELECT 之前有什么东西吗?
另外、ePWM1处于递增模式、SYNCOSEL 为零。 但是当我用公式 TBPRD*PHASE/PI 设置 ePWM 2的相位时、却没有给我想要的相位。 在某些情况下是否需要修改此公式? 谢谢。
Justin、您好。
同步选择寄存器实际上来自系统控制同步寄存器、因此我认为您应该有这样的结果:

额外信息、但我想强调的是、您还可以使用以下方法之一来设置 EPWM4同步源:
SysCtl_setSyncInputConfig(SYSCTL_SYNC_IN_EPWM4, SYSCTL_SYNC_IN_SRC_EPWM1SYNCOUT);
来自 sysctl.h 文件({C2000Ware}\driverlib\f2837xd\driverlib\sysctl.h)的代码片段:


关于您帖子的后半部分:

希望这 对您有所帮助!
此致、
Allison