主题中讨论的其他部件: C2000WARE
我想同步TMS320F2.8377万D处理器上的ECAP1 - ECAP6时钟。 我正在测量ECAP1和其他ECAP之间的相位差异,我认为我看到ECAP之间的相位差异似乎与物理相位差异不对应。 我尚未证实情况确实如此。
不管怎样,我想同步所有ECAP TSCTR计数器时钟,我正在尝试找出实现这一目的的最佳方法。
1)我想监控ECAP TSCTR时钟之间的相位差异,以确认ECAP之间的相位是否发生变化。
这是否通过读取以下寄存器来测量:
/*读取和存储每个TSCTR寄存器*/ eCAP1_Counter = ECap1Regs.TSCTR; Escap2_Counter = ECap2Regs.TSCTR; Escap3_Counter = ECap3Regs.TSCTR; Escap4_Counter = ECap4Regs.TSCTR;EscTR; Escap5_Counter = ECap5Regs.TSCTR; Escap6_Counter = ECap6Regs.TSCTR; /* Calculate TSCTR Deltas */ ECap12_Delta = eCAP1_Counter - Escap2_Counter; ECap13_Delta = eCAP1_Counter - Escap3_Counter; ECap14_Delta = eCAP1_Counter - Escap4_Counter; ECap15_Counter = eCAP5 Counter = ECAP5 Counter;
我的理解是,如果所有ECAP都同步,则这些"Delta"计算至少应保持不变。 由于读取这些计数器需要时钟周期,因此这些读数中应存在稳定状态偏移。 这是否是量化所有ECAP同步的正确方法?
2)我想通过软件同步ECAP。
初始化时,我需要设置以下寄存器;
/*为SWSYNC输入*/ EALLOW设置ECAP 1 - 6; ECap1Regs.ECCTL2.SYNCO_SEL.BIT = 0U; ECap2Regs.ECCTL2.SYNCO_SEL.BIT = 0U; ECap3Regs.ECCTL2.SYNCO_SEL.BIT = 0U;ECap4Reg.ECU_SEL.DEL.BIT ECap5Regs.ECCTL2.SYNCO_SEL.bit = 0U; ECap6Regs.ECCTL2.SYNCO_SEL.bit = 0U; /*在ECAP 1上启用同步输入*/ ECap1Regs.ECCTL2.SYNCI_EN.bit = 1U; EDIS;
当我需要同步时,我需要触发SWSYNC事件。
/*同步所有ECAP */ EALLOW; ECap1Regs.ECCTL2.SWSYNC = 1U; EDIS;
因此,我的问题是:
-此操作是否可以使所有ECAP之间的TSCTR时钟同步? 是否有其它需要设置的寄存器。
-此操作是否会使TSCTR计数器与零延迟同步? 即计数器之间的相位差为零。 如果没有,是否有一个值可以插入到CTRPHS登记簿中以说明延迟?