您好!
由于我不知道是谁准确设计了 C2000 Simulink 块集、我在这里提出我的问题。
我想使用上述封装中的 F2837xD 块来创建四个同步的100kHz、50%占空比 PWM、每个 PWM 相对于其他 PWM 相移。
目标是实现相移双半桥直流/直流转换器的控制。 因此、PWM 1和2必须是180°异相、PMWS 3和4也是如此。 硬部件可精细控制 PWM1和 PWM3之间的相位(实际上控制转换器)。
我构建了一个在 LaunchPad C2000 TMS320F28379D 上运行的实验模型。 ePWM 时钟速率设置为100MHz (SYSCLKOUT/2)、每个 ePWM 模块中的时基时钟预分频器为1。
我使用的方案如下:ePWM12生成一个100MHz 的"主时钟"、每当计数器到达零时、该时钟就会生成一个 SYNCOUT 信号。 我使用该 SYNCOUT 来同步所有其他"从"PWM (ePWM1到 ePWM4)。 后者具有同步功能。 输出设置为"Pass Through (直通)"。 从器件使用主器件的计数器周期值(ePWMLink TBPRD 设置为 ePWM12)。
由于需要高分辨率、我在从 ePWM 模块(而不是主器件)中启用了选项"启用高分辨率 PWM (HRPWM)"。 我以十进制的形式输入相移值(在本例中、我尝试了寄存器值10.25)
因此、我遇到了一个错误:
代码生成器不会生成代码来使用相移值更新 TBPHSHR 寄存器。 它只将 TBPHSHR 初始化为零。 因此、我看不到十进制、因此我要说输出信号中相移的"高分辨率"部分。 我使用200MHz 示波器和500MHz 探针直接测量引脚上的信号。 我只看到一个与正常 TBPHS 寄存器相对应的相移(相移的整数部分)。
是否有解决方法或修复程序?
此致
Matthias
学生(英格斯塔特应用科学大学)