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.

[参考译文] TMS320F280039:ePWM 的第一个脉冲。为同时高电平2 μ s

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1478050/tms320f280039-the-first-pulse-of-epwm-appears-to-be-simultaneously-high

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

工具与软件:

您好、TI 工程师、

我使用 ePWM 模块生成200kHz 波形(使用增加和减少计数模式)、而没有使用 DB 模块。 EPWM-A 为高电平0、UA 为低电平。 EPWM-B 在0和 DB 处为低电平、TBPRD 为高电平。 然而、当我使用示波器捕捉 ePWM 波形时、我发现 ePWM-A 和 ePWM-B 发出的第一个波形为相同的高电平、我可否问这是为什么?

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

    尊敬的 Zhen:

    您能否简单地阐述一下、并分享您为生成此波形而馈送的要求。 代码快照(或 SysConfig)有助于更好地理解。

    谢谢

    Srikanth

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

    尊敬的 Srikanth:

    下面是我在配置 ePWM 模块时的代码、我想得到一个200kHz 的波形。 然而、在初始上电后、我通过示波器捕获了 EPWM-A 和 EPWM-B 的波形、并且第一个波形出现了两个全高。 但从代码的角度来看、不应出现、因为在向上计数阶段 A 有一个输出、而在向下计数阶段 B 有一个输出。

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

    尊敬的 Zhen:

    您能否 检查一下、让我们知道以下主题是否可以解决您的问题。

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/951960/tms320f28035-there-will-be-high-pulse-during-the-first-epwm-counter-period 

    谢谢

    Srikanth

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

    尊敬的 Srikanth:

    我想我的问题与他的:不同

    首先、EPWMxB IN 输出首先为高电平、然后由于 DBCTL[POLSEL] S3的0切换到1引起的延迟、EPWMxB 输出也为高电平。 但从我上传的代码来看、首先我没有使用 DB 模块、针对零点 EPWMB 的操作是低电平、因此我认为这与他的情况有所不同。
    其次、POST 中没有后续通信来解释高脉冲是如何产生的。

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

    尊敬的 Zhen:

    我找到了讨论此类问题的文档。  请评估此文档、看看这是否是您的问题。

    https://www.ti.com/lit/an/spraai1/spraai1.pdf?ts = 1740590140592 

    谢谢

    Srikanth

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

    尊敬的 Srikanth:

    感谢您帮助我找到相关信息、但我没有看到与我的问题有相似之处。 当我查看上传的波形时、我注意到另一个问题。 根据我的代码设置、ePWM-A 的高电平应该只存在1/600/200K≈8.3ns、但高电平时间似乎为16ns。

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

    尊敬的 Zhen:

    在初始化期间从何处启动 ePWM 时钟(清除和设置 TBCLKSYNC 位)? 您是否看到这是在一开始(一旦启动 ePWM 时钟)就出现的?

    如果您愿意、您可以更改 ePWM 仿真模式设置、以便在调试会话期间暂停时计数器暂停(未设置为自由运行)? 完成此操作后、您是否可以单步执行初始化、直到您单步执行该 TBCLKSYNC 位以启动时钟、并确认在启动 ePWM 时钟后发生的干扰。  

    另外、您的 ePWM 时钟的运行速度是多少? 您使用的是 LaunchPad 还是 controlCARD?

    此致、

    Allison

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

    您好、Allison、

    我使用 IO 端口指示何时禁用 TBCLKSYNC 以及何时启用 TBCLKSYNC。  第一幅图像表示我首先生成一个下降沿、然后启用 TBCLKSYNC。 第二幅图像表示我先启用 TBCLKSYNC、然后产生下降沿。

       

    该图的上升沿表示我已禁用 TBCLKSYNC、下降沿表示我已启用 TBCLKSYNC。

     从上面的三个图中可以看出、我先禁用了 TBCLKSYNC、然后配置了 ePWM、最后启用了 TBCLKSYNC、共享的时间为2.468ms。 和第一个 EPWM 波形应该在我启用 TBCLKSYNC 后出现。
     最后、我的时钟速率为120MHz、在代码上设置了 ePWM_CLOCK_DIVICER_1和 ePWM_HSCLOCK_DIVIDER_1。 我用公司的控制板直接测量从外部控制 DSP 获得的波形。 具体过程是在设置示波器触发并给控制板上电后获取波形。 此外、ePWM 模块未在引导中配置、而是在跳转到应用后执行配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Zhen:

    我使用与您相同的配置创建了一个简单示例。 您是否可以在将 TBPRD 配置为 300之前尝试将 TBPRD 加载模式设置为"立即加载"模式?  我进行了此修改、问题得到解决。

    我认为 ePWM 会在 ePWM 计数器启动时识别 TBPRD = 0 (而不是300)、因为 TBPRD 影子加载。 因此、EPWMxB 动作限定器在短脉冲期间将通道 B 设置为高电平(这种情况与 EPWMxA 设置为高电平的同时根据 TBCTR = 0匹配事件发生)、从而创建同步初始脉冲。 如果需要、您可以始终在初始化后更改您的加载模式。

    请参阅随附的项目、该项目演示了这一点。

    e2e.ti.com/.../F28003x_5F00_EPWM_5F00_E2E.zip

    此致、

    Allison

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

    您好、Allison、

    是的、将它设置为"immediate load"后、不会同时出现高电平情况。 这是因为在 TBPRD 影子加载中、TBPRD = 0、TBCTR = 0、对于 EPWMA、满足 ePWM_AQ_OUTPUT_HIGH_ZERO、 对于 EPWMB、是的、满足 EPWM_AQ_OUTPUT_HIGH_PERIOD、因此两个输出高电平、我是否正确? 如果是、我想确认两个问题:1. 对于 EPWMB、TBCTR = 0和 TBCTR = TBPRD 的优先级是否高于后者的优先级? 我没有在技术手册中看到在向上/向下模式中介绍了两者的优先级。 2.启用 TBCLKSYNC 后、我将其调整为影子加载模式、此时整个波形丢失。

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

    对于第二个问题、我认为是的、因为设置了"立即加载模式"、并且 TBPRD 设置为 TBPRD (活动)、而 TBPRD (影子)仍为0。 将其设置为"Shadow Mode"时、"Shadow TBPRD (0)→Active TBPRD、因此 EPWMA 和 EPWMB 的输出会较低。 将 TBPRD 设置为"Shadow Mode"后、应将其设置为300。

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

    尊敬的 Zhen:

    CTR = TBPRD 动作限定符优先于 CTR = 0动作限定符。

    2. 发生此错误的原因是在初始化过程中将加载模式更改为"影子模式"会将影子寄存器中的任何内容加载到 TBPRD 中(因此、如果影子寄存器为空、则会将"0"加载到 TBPRD 中)。 相反、如果您需要初始化中的所有内容、可以执行以下操作:

    • 将 TBPRD 加载模式设置为影子加载
    • 写入 TBPRD (这会将影子寄存器设置为300)
    • 切换到立即模式
    • 再次写入 TBPRD (这会将活动寄存器设置为300)
    • 切换回影子模式(项目所需的加载模式)

    以下是我使用并成功测试的内容:

    Fullscreen
    1
    2
    3
    4
    5
    6
    EPWM_setPeriodLoadMode(base,EPWM_PERIOD_SHADOW_LOAD);
    EPWM_setTimeBasePeriod(base, 300U);
    EPWM_setPeriodLoadMode(base,EPWM_PERIOD_DIRECT_LOAD);
    EPWM_setTimeBasePeriod(base, 300U);
    EPWM_setPeriodLoadMode(base,EPWM_PERIOD_SHADOW_LOAD);
    EPWM_selectPeriodLoadEvent(base, EPWM_SHADOW_LOAD_MODE_COUNTER_ZERO);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致、

    Allison