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.

[参考译文] TMS320F280039C:高分辨率脉宽调制器:-使用 TBPHSHR 寄存器进行高分辨率相移时的问题

Guru**** 2950200 points

Other Parts Discussed in Thread: TMS320F280039C, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1412709/tms320f280039c-high-resolution-pulse-width-modulator---issue-with-using-tbphshr-register-for-high-resolution-phase-shift

器件型号:TMS320F280039C
主题中讨论的其他器件: SysConfig

工具与软件:

团队成员、您好!

这里我要使用 TBPHSHR 寄存器添加我的2个观察结果、以进行高分辨率相移。

微控制器我正在使用:-  TMS320F280039C

SysConfig 中我的当前配置如下所示

EPWMCLK:- 120MHz

时基时钟分频器:-对时钟进行1分频  

高速时钟分频器:- 对时钟进行1分频  

时基期间- 1000

计数器模式:  -递增-计数模式

对于我的 ePWM 外设:- EPWM3 同步输入源是 EPWM4同步输出信号。

目前、我们的相移分辨率为0.36 (360度/1000)。

当 通过提供 相移值启用相移负载来使用 EPWM 相移功能时、我要在 EPWM3和 EPWM4之间实现所需的相移。  

1) 1)现在我想使用 HRPWM 来实现 高分辨率相移。  

配置 按照以下方式完成  

编译工程时、会在生成的文件中生成-> board.c -> Board_init 函数、在其中 调用 EPWM_init 函数、 调用 HRPWM_setPhaseShift 函数。

我应该按预期在 TBPHS 寄存器中得到0x0064、在 TBPHSHR 寄存器中得到0x2800。

如果我们看到它以度为单位、则这意味着36度(TBPHS 寄存器中为0x64)  、这应该会提供 EPWM3和 EPWM4之间以及 TBPHSHR 寄存器(0x2800)之间的833ns 相移 、即40表示 MEP 步长的数量、1 MEP 步长为180ps、这意味着7.2ns (0.31度)。 我预计此处为36.31度。 但我的观察是安静的陌生人。 检查 EPWM3和 EPWM4之间的 PWM 相移时、存在零度相移。

配置中是否缺少任何内容?

2) 2)由于我无法通过上述配置获得所需的相移、因此我没有从 SysConfig 中启用 HRPWM、而是仅在代码中使用 HRPWM_setPhaseShift 函数。

例如、如果我 使用(0x6428)调用 HRPWM_setPhaseShift 函数、这意味着我预计为36.31度( EPWM3和 EPWM4之间的相移应为840.2ns)。 但只有36度相移、仍然会产生剩余的0.31度 相移、尽管 HRPWM 用于高分辨率相移、但仍无法实现。 在这里、我们期望840.2ns、但我们只能实现833ns。 即使在使用 HRPWM_setPhaseShift 函数和 HRPWM_enablePhaseShiftLoad 后、我们仍然无法实现剩余小数部分的有限分辨率。  

此外、我们还检查了 HRPWM_setHiResPhaseShiftOnly、但它没有奏效。

我们认为没有 通过不同的测试来验证相同的结果、我们发现我们无法 使用 HRPWM 功能获得剩余小数部分的有限分辨率。

是否还有任何其他需要包含的函数或我们缺失的任何内容请告诉我。

谢谢你。

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

    你好、Shirish、

    很抱歉耽误您的时间、明天我将查看查询并回复。

    谢谢

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

    你好、Shirish、

    对于 HRPWM 相移、我们还需要在 SysConfig 中启用 EPWM 相移以及 HRPWM 相移

     还包括 EPWM_enablePhaseShiftLoad ()以及 HRPWM、它们具有一些非零相移、并且具有用于 SYNC IN 的非零相移值。

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

    Prarthan、您好!

    对于 HRPWM 相移,我们还需要在 SysConfig 中启用 EPWM 相移以及 HRPWM 相移:如所示,如所附快照中所示,这已经完成并检查,我 也已经包括了 EPWM_enablePhaseShiftLoad ()和 HRPWM ,并且在相移中具有非零值, 但它无法正常工作。

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

    你好、Shirish、

    附加与 F28003x 控制卡配合使用的工程。 我修改了 TBPHSHR 的 Ex1项目
    仅更改 TBPHSHR 时、您将看到 EPWM3正在移动。

    在 SysConfig 中有两项内容、我在启用 HRPWM 时更改了 MEP 边沿控制模式和 TBPHS 写入。 你可以看到、我在 Board_Init ()之后写了这些

    其次是 TBPHSHR 的相移与 TBPHS 相反,所以要相应地调整 TBPHS 和 TBPHSHR 以获得所需的值,在这里附加的线程:https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1073047/tms320f280049-hrpwm-tbphs-and-tbphshr-move-waveform-in-opposite-directions

    第三是确保您的示波器能够提供高分辨率、否则您不会看到准确的分辨率、我们建议使用500MHz 示波器、但至少200MHz 可以提供所需的分辨率

    e2e.ti.com/.../hrpwm_5F00_ex1_5F00_duty_5F00_sfo_5F00_sdk.zip

    如果您无法看到上述示波器拍摄行为、请告知我们。

    谢谢

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

    Prarthan、您好!
    感谢您的答复、我们尝试了您的示例代码、并观察到以下情况:  

    观察1:

    我的理解是否正确、如果 Epwm1 (Master)和 Epwm3 (Slave)处于领先相移、且具有以下配置:

    •     PWM 模式:向上计数模式。
    •     EPwm3 (从) PHSDIR 设置为1以实现超前移位。
    •     ePWM 时钟= 100Mhz
    •     TBPHS 为2 (即2 * 10ns = 20ns)
    •     TBPHSHR 为40 (即40 *~150ps =~6ns)

     相移应为20ns - 6ns = 14ns、我们得到1.7ns。 您能否澄清一下、这是否正确理解?

    或者

    1粗除以255。 因此、在上面的示例中、10ns/255 = 0.03921ns。
    通过此步骤、TBPHSHR 将应用相移。

     

    观察2:

    PWM 模式:向上计数模式。

    TBPRD:1000

    Ttbclk = 8.33ns

     

     

     

     

    TBPHSR

     

     

     

     

     

     

     

     

     

     

     

    0

    10.

    20.

    30.

    40.

    50.

    100

    150

    200

    250

    TBPHS

    1.

    9.44ns

    9.52ns

    9.8ns

    10.48ns

    10.80ns

    10.96ns

    12.48ns

    14.12ns

    15.6ns

    17.12ns

     

    2.

    970ps

    1.16ns

    1.52ns

    1.80ns

    2.08ns

    2.76ns

    4.16ns

    5.56ns

    7.04ns

    8.76ns

     

    3.

    7.3ns

    7.6ns

    6.7ns

    6.480ns

    6.280ns

    5.64ns

    3.84ns

    3.48ns

    1.2ns

    1.12ns

     

    4.

    15.9ns

    15.8ns

    15.32ns

    14.60ns

    14.08ns

    13.96ns

    12.92ns

    10.6ns

    9.88ns

    8ns

     


    每10步、我们应该得到150ps*10steps = 1.5ns 的相移(39C 控制器的相移为150ps 是典型的步长)、但据观察、每增加10步、我们得到~320ps 的相移。


    此外、在 HRPWM 中、尽管最多有255个 MEP 阶跃、但在这种情况下、最大有效编号是 (MEP 阶跃数= 1粗略阶跃时间/150ps)? 如果是、那么、如果我们给出的 TBPHSHR 值超过了该值、该怎么办?  

    例如、
    MEP 步长= 150ps
    1粗略时间= 15ns
    MEP 阶跃数(15ns 内)= 100。

    如果 TBPHSHR 值高于100、该值有效吗?

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

    尊敬的 Tejas:

    由于我们使用自动转换、MEP_ScaleFactor (每个粗略阶跃的 MEP 步长数)位于 HRMSTEP 寄存器中。 HRMSTEP 值由 SFO 计算。

    但是 TBPHSHR 值从0-0xFF (255)之间缩放、这样当您在 TBPHSHR 中输入0xFF 时、就会将其缩放为一个完整粗略周期~8.33ns (对于120MHz EPWMCLK)
    因此、对于其他值、它会调节输入 TBPHSHR 值、考虑到255个阶跃等于 HRMSTEP 值

    谢谢。