您好!
我想使用上述封装中的 F2837xD 块来创建四个同步的100kHz、50%占空比 PWM、每个 PWM 相对于其他 PWM 相移。
我使用的方案如下:ePWM12生成一个100MHz 的"主时钟"(频率与 ePWM 时钟相同)、每当计数器到达零时、就会生成一个 SYNCOUT 信号。 我使用该 SYNCOUT 信号来同步其他"从"PWM (ePWM1到 ePWM4)。 后者具有同步功能。 输出设置为"Pass Through (直通)"。 从器件共享主器件的计数器周期值(ePWMLink TBPRD 设置为 ePWM12)。
由于需要高分辨率、我在从 ePWM 模块(而不是主器件)中启用了选项"启用高分辨率 PWM (HRPWM)"。 我以十进制的形式输入相移值(在这种情况下、我尝试了寄存器值10.25、该值应"细分"为 TBPHS 和 TBPHSHR 值)。 TBPHSHR 现在不起作用、但这是另一个故事。
因此、我遇到了一个错误:
对于恰好为100kHz、50%占空比的情况、我必须将 ePWM12计数器周期值更改为991而不是1000、将占空比的计数器比较值更改为492而不是500。 我不向基准计数器(ePWM12)施加相移。 在数学上正确的值与真正需要的值之间出现这种错误的原因是什么?
此致
Matthias
学生(英格斯塔特应用科学大学)
PS:我正在使用 C2000 Simulink 块集生成代码、但我认为这不会导致问题。 我确认代码仅将从 Simulink 接收到的值复制到相应的寄存器中。
