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.

[参考译文] TMS320F280049C:仅在"sync"上加载 EPWM_COMP_LOAD_ON_SYNC_ONLY

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1216419/tms320f280049c-epwm_comp_load_on_sync_only-is-load-on-sync-only

器件型号:TMS320F280049C
主题中讨论的其他器件:C2000WARE

EPWM_setCounterCompareShadowLoadMode (uint32_t base、

                                    EPWM_CounterCompareModule 补偿模块、

                                    EPWM_CounterCompareLoadMode loadMode)

 

LoadMode 可以是以下三个中的一个:

  • EPWM_COMP_LOAD_ON_CNTR_ZERO -当计数器为零时加载
  • EPWM_COMP_LOAD_ON_SYNC_CNTR_ZERO -当计数器等于零时加载
  • EPWM_COMP_LOAD_ON_SYNC_ONLY -仅在 SYNC 上加载

EPWM_COMP_LOAD_ON_CNTR_ZERO 和 EPWM_COMP_LOAD_ON_SYNC_CNTR_ZERO 之间的唯一差异 是"SYNC";    

EPWM_COMP_LOAD_ON_SYNC_ONLY  仅在"SYNC"上加载。

我的问题如下:

1.您能向我介绍一下"SYNC"的详细文档说明吗? 如何生成 SYNC? 按软件或硬件列出?

2.您能指出一个关于使用此"SYNC"的示例项目吗?

谢谢!

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

    尊敬的 Quentin:

    F28004x 器件上的同步如下:

    1. 您能否给我指出"同步"的详细文档说明? 如何生成 SYNC? 按软件或硬件?

    同步脉冲可能有多种来源:

    • 对于 EPWM1、同步源可以来自软件或通过 EXTSYNCIN1 (来自输入 X-BAR、因此可以是器件的外部信号)。  
    • 对于 EPWM4和 EPWM7、您可以通过"SYNCSELECT.EPWM4SYNCIN" 和"SYNCSELECT.EPWM7SYNCIN"多路复用器选择同步源。

    您可以为每个 ePWM 选择同步输出源。 这是通过 TBCTL[SYNCOSEL]位来完成的。 如果您选择"00:EPWMxSYNCI / SWFSYNC"、则只能作为 SYNCOUT 生成基于软件的同步。  

    2. 您能指出一个关于使用此"同步"的项目示例吗?

    C2000Ware 中有一个同步示例:

    C:\ti\c2000\C2000Ware_version\driverlib\f28004x\examples\epwm\epwm_ex3_synchronization

    此外、本视频还介绍了同步(约3:50): https://www.ti.com/video/6304743941001?keyMatch=C2000%20EPWM 

    此致、

    Marlyn

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

    尊敬的 Marlyn:

    非常感谢您的回复?

    我犯了个错误--我使用的是280025而不是280049 《280025技术参考手册》中指出:

    =========

    17.4.5在 ePWM 模块之间同时写入 TBPRD 和 CMPx 寄存器
    对于变频应用、需要同时写入 TBPRD 和 CMPx 寄存器
    模块之间的连接。 这可防止 CTR = 0或 CTR = PRD 脉冲强制影子到的情况
    在所有寄存器在 ePWM 模块之间更新之前主动加载这些寄存器(导致某些
    从新的影子值加载寄存器、而其他寄存器从旧的影子值加载)。 拓扑
    这是针对 TBPRD:TBPRDHR、CMPA:CMPAHR、CMPB:CMPBHR、CMPC 和的 ePWM 寄存器链接方案
    添加了 PWM 模块之间的 CMPD 寄存器。
    对于特定的 ePWM 模块# A,用户代码将"B+1"写入 EPWMXLINK 中链接的寄存器位域。 "B"为
    链接到的 ePWM 模块#(即、写入 ePWM 模块"B" TBPRD:TBPRDHR、
    CMPA:CMPAHR、CMPB:CMPBHR 或 CMPC 将同时写入 ePWM 中的相应寄存器
    模块"A")。 例如、配置了 ePWM3 EPWMXLINK 寄存器以便 CMPA:CMPAHR 链接到该寄存器
    ePWM1、然后在 ePWM 1中写入 CMPA:CMPAHR 将同时写入相同的值
    CMPA:ePWM3中的 CMPAHR。 如果 ePWM4的 CMPA:CMPAHR 寄存器也链接到 ePWM1、则对进行写入
    ePWM 1将向 ePWM3和 ePWM4中的 CMPA:CMPAHR 寄存器写入相同的值。
    EPWMXLINK 的寄存器描述清楚地解释了相应的寄存器位域链接值
    例如 ePWM。 使用 EPWMXLINK 的一个示例是将 ePWM2 CMPA 与 ePWM1的 CMPA 链接在一起。 在本例中为 a
    写入 ePWM1的 CMPA 也将更改 ePWM2的 CMPA 值。
    =========

    您可以指出一个示例项目、即"在 ePWM 模块之间同时写入 TBPRD 和 CMPx 寄存器"?

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

    更具体地说、你能否给我指一个 driverlib 示例项目:" 在 EPWM 模块之间同时写入 TBPRD 和 CMPx 寄存器"? 谢谢!

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

    如果没有示例项目、则实现"在 ePWM 模块之间同时写入 TBPRD 和 CMPx 寄存器"的某些代码片段也非常有用。 谢谢!

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

    尊敬的 Quentin:

    如果没有示例项目,一些实现"在 ePWM 模块之间同时写入 TBPRD 和 CMPx 寄存器"的代码片段也非常有用。 谢谢!

    我不相信我们有任何专用的示例项目来展示正在使用的 EPWMxLINK 寄存器,但本  应用报告( ePWM 开发人员指南: https://www.ti.com/lit/sprad12 )将其整合到应用程序中,代码可以在 C2000Ware 中找到。 本应用报告是使用 F2838x 器件完成的、但 F28002x 具有相同的 ePWM 模块。

    如果您对该功能有任何问题、请告诉我、我可以帮助您进一步进行说明。  

    此致、
    Marlyn

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

    非常感谢、Marlyn!

    是否有办法 在 ePWM 模块之间同时复位 VCAPCTL 寄存器(例如,使用 ePWM_startValleyCapture ())?

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

    尊敬的 Quentin:

    不可以。遗憾的是、我们没有这样的东西可以跨模块更新 VCAPCTL、对于所有需要更新的模块、这仍然必须是单独的更新。

    此致、

    Marlyn