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.

[参考译文] TMS320F2809:HRPWM 问题

Guru**** 2527710 points
Other Parts Discussed in Thread: TMS320F2809

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/651606/tms320f2809-hrpwm-issue

器件型号:TMS320F2809

您好!

我正在使用 TMS320F2809微控制器、我对 HRPWM 模块有一些疑问。

首先、我尝试了 Example_280xHRPWM_SFO_V5.C. 似乎是在工作。

在本例中、我使用的是 TBPHS、而不是 CMPA 寄存器。

我阅读了数据表 spru924f、更确切地说是在第15/42页。 我们可以看到如何计算两个寄存器。

因此,如果我们遵循以下示例:

1)

MEP_ScaleFactor = 55

PWMDuty = 99、1896/180 = 0、551053

PWMPeriod = 715

CMPA = PWMDuty* PWMPeriod = 394

CMPAHR =(FRAC (PWMDuty*PWMPeriod)*MEP_ScaleFactor +1.5)<<8)=(FRAC (0、551053 * 715)*55 +1.5)*256)=(0、0031333 * 55 +1.5)*256)= 428 = 0x1AC (较低的8位将被硬件忽略)  

CMPAHR = 0x100 = 256

(* ePWM[i]).cmpa.all =((long) cmpa_reg_val)<<16 | CMPAHR_REG_val;= 394*65536 + 256 = 25821440

2)

MEP_ScaleFactor = 55

PWMDuty = 99、1882/180 = 0、551045 (该角度是距离1最近的一个)示例)

PWMPeriod = 715

CMPA = PWMDuty* PWMPeriod = 393

CMPAHR =(FRAC (PWMDuty*PWMPeriod)*MEP_ScaleFactor +1.5)<<8)=(FRAC (0、551045 * 715)*55 +1.5)*256)=(0、9975722*55 +1.5)*256)=14429 = 0x385D (较低的8位将被硬件忽略)  

CMPAHR = 0x3800 = 14336

(* ePWM[i]).cmpa.all =((long) cmpa_reg_val)<<16 | CMPAHR_REG_val;= 393*65536 + 14436 =25770084

这两点之间的差异使我感到有些麻烦。 (25821440 - 25770084= 51356)。

我在 Excel 中实现了这些方程。 我的占空比是线性的、但 CMPA.ALL 不是。 可能是正常的。

但在本例中、当 CMPA 寄存器发生变化时、我可以看到占空比存在差异。

CMPA.ALL 寄存器的角度(占空比)函数的演变。

红色表示这正是它在数据表中所写的内容。

我们可以看到我正在讨论的差距、我可以在我的系统中看到它。

是否有任何解释?

非常感谢

PWMDuty
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亚历山大
    很抱歉假日季延误。 我正在研究这一个、并将在新的一年中发布在这里。

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

    您好、Cody、

    新年快乐!

    您对我有什么解释吗?

    谢谢你

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

    亚历山大

    我对您的问题有点困惑、让我们首先重点讨论 TI 解决方案。 在您的图中、我看到25850000和25900000之间发生了巨大的跳变、这是否是您系统的问题? 您能给图形加上标签吗?这将使您更容易阅读?

    您是否定期运行 SFO?

    您似乎在尝试使用 HRPWM 进行占空比控制、这是正确的吗?

    此致、
    Cody  

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

    Cody、

    "在您的图表中、我看到25850000和25900000之间发生了巨大的跳变、这是否是您系统的问题?"

    是的。 因为这个跳转会给我带来一些麻烦。

    "您能给图形加上标签吗、这将使其更易于阅读?"

    当然可以。 红色图形是 TI 的示例。 Y 轴是 (* ePWM[i]).cmpa. all 寄存器、X 轴是角度(0到180°)。 如果需要、可以将该角度转换为占空比(将角度除以180)。

    "您是否定期运行 SFO?"

    正如在示例中所说、在初始化函数处调用"SFO_MepDIS_V5"。

    "SFO_MepEn_V5"有时在主循环中调用(在30µs 和60µs 之间)。

    但实际上、我的项目不能正常工作、但示例也是如此。 这是因为这个跳转。

    此致。

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

    亚历山大

    1. 什么示例不起作用?
      1. 您使用的是哪个 CCS 版本?
      2. 您使用的编译器版本是什么?
    2. 您是否在一台或多台设备上看到此问题?
      1. 您是否在另一台设备上复制了此问题? 如果没有、您能否包含编译的.out 文件? 我将看到我是否有 f2809器件、我可以对其进行测试。

    此致、
    Cody  

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

    Cody、

    1. 什么示例不起作用? 我使用了"Example_280xHRPWM_SFO_V5"。 实际上、这是可行的、但可以在实际占空比中清楚地看到寄存器中的跳转。
      1. 您使用的是哪个 CCS 版本? 我正在使用 CCS 版本:5.0.0.00077  
      2. 您使用的编译器版本是什么? 我使用的是 TI v6.2.0
    您是否在一台或多台设备上看到此问题? 因为我的应用程序必须在 f2809上运行
    1. 您是否在另一台设备上复制了此问题? 如果没有、您能否包含编译的.out 文件? 我将看到我是否有 f2809器件、我可以对其进行测试。

    我不能"在另一台设备上复制它。

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

    亚历山大

       当我说"您是否在另一台设备上复制了此问题?"时、 我是说您在多个 F2809器件上看到了这个问题吗?

    我认为、您的设备可能已损坏、这是导致我们看到问题的原因。

    您能否为示例代码向我发送.out 文件? 我将尝试在 F2809器件上运行您的代码、以便我们能够判断这是硬件问题还是软件问题。

    此致、
    Cody  

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

    Cody、

    哦、抱歉!

    是的、我在包含 F2809器件的不同电路板上尝试过它。

    我附加了我已修改的示例、但我不确定它是否有用。

    Regardse2e.ti.com/.../Example_5F00_280xHRPWM_5F00_SFO_5F00_V5.zip

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

    亚历山大

    您是否仍在处理此问题?

    我能够执行您的代码。 我在第311"行(* ePWM[i]).cmpa.all =((long) cmpa_reg_val)<<16 | CMPAHR_reg_val;"上放置了断点、然后测量了 PWM 的脉冲宽度、运行代码、然后再次检查了脉冲宽度。 正如图中所示、我几乎可以看到均匀的步骤、并且不会出现间断、直到代码从最大宽度回退到最小宽度。 我经过这几次、一次或两次能够注意到脉宽确实增加了一个低于预期的值、但我没有看到脉宽没有变化的延长周期。 目前、我没有对此进行解释、但可能是因为仪表限制。

    此致、
    Cody  

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

    Cody、  

    我仍然有这个问题,但我没有时间解决这个问题。

    我找到了一个"解决方案"。 当我们使用 x MEP_ScaleFactor 时、我为 HR 寄存器添加了 x4。

    我无法解释为什么它会更好、但它似乎可以做到这一点。

    感谢您的讲解。

    此致、

    亚历山大

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    亚历山大
    添加4倍肯定会消除您看到的不连续性。 如果另一个解决方案对我来说、我一定会告诉你。

    此致、
    Cody