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.

[参考译文] TMS320F28377D:ECAP 同步

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/754992/tms320f28377d-ecap-synchronisation

器件型号:TMS320F28377D

您好!

我想将 ECAP1-ECAP4与同一 TBCTR (时基计数器)同步。
我按照以下讨论操作、使我的 ECAP 在同步中工作、以获取输入 ECAP 脉冲之间的相位差。   

ECap1Regs.ECCTL2.bit.SYNCI_EN = 1;   /* Enable sync in*/
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 0;  /* Pass through*/  
ECap4Regs.ECCTL2.bit.SYNCI_EN = 1;   /* Enable sync in*/
ECap4Regs.ECCTL2.bit.SYNCO_SEL = 0;  /* Pass through*/
//Set up ECAP1 and ECAP4 for External Sync
EALLOW;
InputXbarRegs.INPUT5SELECT = 66U; //0x66
GpioDataRegs.GPDDAT.bit.GPIO66 = 0;
SyncSocRegs.SYNCSELECT.bit.ECAP1SYNCIN = 5U; //0x101
SyncSocRegs.SYNCSELECT.bit.ECAP4SYNCIN = 5U; //0x101
EDIS;
//Synchronize ECAPS 1 through 4
ECap1Regs.ECCTL2.bit.SWSYNC = 1;
ECap4Regs.ECCTL2.bit.SWSYNC = 1;
如果我配置 GPIO_69、由于这种方法是指外部同步、我需要提供任何外部信号进行同步? 我需要软件同步来实现、如何实现?
输入脉冲:
我想计算相位延迟。 请建议我必须使用绝对模式或增量模式来实现此目的、以及如何与计数器同步以获得相位延迟。
我希望持续监控相位延迟、而不仅仅是一个时间过程。
此致、
Manohar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Manohar、

    如果您想通过 SW 信号同步 ECAP1-ECAP4、那么您必须对代码进行少量更改、如下所述:

    SyncSockRegs.SYNCSELECT.BIT.ECAP4SYNCIN = 4U;//0x100 ECAP1SYNCOUT 将是 ECAP4的 SYNCIN

    ECap4Regs.ECCTL2.bit.SWSYNC = 1;--不需要,将其从代码中删除,您将把 eCAP1 SYNCOUT 作为 eCAP4的 SYNCIN。

    默认情况下、它将在捕获模式下持续捕获 ECCTL2.CONT_ONESHT = 0x0。

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

    Nirav、您好!

    问题:

    那么、正如下面的模块中提到的、ECAP1-ECAP2-ECAP3默认是同步的?

    2.我是说同步是指同时启动计时器计数器? 上面的块显示 ECAP1 SyncOut 被馈送至 ECAP2 synctin、这不会使它们的定时器计数器在一条线路中启动。 如何做到这一点?

    3.只有 ECAP1和 ECAP4可被用于具有同步基址计数器? 如果是、如何使用 EXTSYNCIN1触发 ECAP1-ECAP4?

    4.为配置上述内容,在数据表中提到了以下各行:

    • 在 InputXbarRegs.INPUT5SELECT 中选择未使用的 GPIO。
    •将该 GPIO 配置为输出模式,并将‘0’写入 GPIO DAT 寄存器。 默认情况下、此设置已编程
    因此该引脚上的任何活动都会导致 SWSYNC 出现问题
    •编程 SYNCSEL[ECAPxSYNCIN]= 0x101。 这将使 ECAPx.EXTSYNCIN 进入非活动状态。

    GPIO 输出引脚的用途是什么? 我需要连接该引脚以实现同步?

    请建议一种实现这一目标的方法。

    此致、
    Manohar

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

    您好、Manohar、

    请在以下行中查找我的评论:

    那么、  正如下面的模块中提到的、ECAP1-ECAP2-ECAP3默认是同步的?

    ECAP2和 ECAP3由 ECAP1SYNCOUT 同步,所以答案是肯定的。

    2. 我是说同步是指同时启动计时器计数器?

    --是的

    上面的块显示 ECAP1 SyncOut 被馈送至 ECAP2 synctin、这不会使它们的定时器计数器在一条线路中启动。 如何做到这一点?

    --你是说 ECAP1计数器不是在 ECAP2的同时启动的吗? 您是如何确定的?

    3.  只有 ECAP1和 ECAP4可被用于具有同步基址计数器? 如果是、如何使用 EXTSYNCIN1触发 ECAP1-ECAP4?

    这不是真的,你可以将 ECAP1-ECAP4与 SW 同步同步,你也可以使用 EXTSYNCIN1来同步如果这是目的,你希望如何实现同步? 如果您想 使用 EXTSYNCIN1、只需执行以下操作:

    ECap1Regs.ECCTL2.bit.SWSYNC = 0;

    GpioDataRegs.GPDDAT.bit.GPIO66 = 0; -- Remove this, and provide trigger on this pin externally

    GPIO 输出引脚的用途是什么? 我需要连接该引脚以实现同步?

    --默认的 SYNCIN 是 EPWM1SYNCOUT,优先于软件同步。 但是、如果您希望使用 SWSYNC、并且不希望 EPWM1SYNCOUT 上的任何不需要的事件复位计数器、TI 建议您将 SYNCIN 源更改为 EXTSYNCIN1、并将其连接到未使用的 GPIO、并将该 GPIO 驱动为低电平、以便无伪事件将复位计数器、 同步仅通过 SW 触发器实现。

    不需要,您不需要连接这个引脚,但是当这个引脚被用于 eCAP 同步时,这个引脚不能被用作其它操作的 GPIO

    此致、

    Nirav

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

    Nirav、您好!

    感谢您的宝贵回复。

    --你是说 ECAP1计数器不是在 ECAP2的同时启动的吗? 您是如何确定的?

    -我配置了 ECAP1 ECAP2并提供相位延迟为10%的输入脉冲。

    ECAP1-2之间的 cap1寄存器数据之间的差异不会导致10%的相位延迟或时钟差异。

    问题:

    如果我减去 ECAP1和 ECAP2的 cap1寄存器值、我将得到相位差?

    2.当从 ECAP1生成的同步信号启动 ECAP2基本计数器时? 直到我需要在配置后冻结 ECAP2模块?

    我正在尝试获取两个输入脉冲之间的相位延迟。

    请建议我如何实现这一点。

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

    您好、Manohar、

    在下面查找我对您的问题的评论:

    如果我减去 ECAP1和 ECAP2的 cap1寄存器值、我将得到相位差?

    -是的、但是如果您的输入信号是时钟、那么您可能还需要使用 CAP2、CAP3和 CAP4寄存器来捕捉时钟的所有四个事件、即第1个上升、第1个下降、第2个上升和第2个下降。

    2.当从 ECAP1生成的同步信号启动 ECAP2基本计数器时? 直到我需要在配置后冻结 ECAP2模块?

    不,你不需要。

    您能在配置中澄清一下吗?

    1.您有两个时钟信号、它们的相位差为10%、然后馈送到 ECAP1和 ECAP2中、对吧?

    2、CAP1寄存器上升/下降的极性配置是什么?

    捕获事件的捕获值是多少?

    此致、

    Nirav

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

    很抱歉耽误你的回答。

    1.您有两个时钟信号、它们的相位差为10%、然后馈送到 ECAP1和 ECAP2中、对吧?
    答案:
    不可以、我有两个时钟信号的相位差为60度(360/6)、不是10%。

    CAP1寄存器上升/下降的极性配置是什么?
    CAP1 -上升沿
    CAP2 -下降沿
    停止模式且在 CAP2上触发 ISR 以重新进行 ARM。 EVENT1和事件2上都会发生 TBCTR 复位。

    捕获事件的捕获值是多少?
    外部脉冲为 ECAP 提供1kHz 频率作为输入。
    eCAP1_CAP1 - 32336
    eCAP1_CAP2 - 50017
    ECAP2_CAP1 -16737
    ECAP2_CAP2 - 15878


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

    我能够获得 ECAP1输入脉冲和 ECAP2输入脉冲之间的相移。 并进行反向计算、以获得输入脉冲之间的60度相移。

    问题:
    现在、两个 ECAP 基本计数器都是内联运行的。 为边沿事件复位 ECAP1将复位 ECAP2计数器? 并使它们再次内联计数器?

    因为我计划在溢出后重置计数器、它是否会影响 ECAP 基本计数器之间的内联操作?


    此致、
    Manohar