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.

[参考译文] TMS320F28075:回读 GPIO 输出:ePWM/EXTSYNCOUT 至 ECAP

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/570102/tms320f28075-read-back-gpio-outputs-epwm-extsyncout-to-ecap

器件型号:TMS320F28075
Thread 中讨论的其他器件:controlSUITE

您好!

我的 HRPWM 周期与外部时钟信号(例如、EtherCAT DC SYNC0)完全同步是有问题的。 我的想法是捕获外部同步信号和(一个额外的) ePWM 输出、或者由具有两个不同但同步运行的 ECAP 模块的 ePWM 同步链生成的 EXTSYNCOUT、以比较捕获的边沿并相应地与 PWM 的(高分辨率)周期寄存器进行比较。 使用 ECAP 的 SYNCIN 似乎不是一个好选择、因为这会重新加载 ECAP 计数器、并且在发生这种情况时不会产生任何结果。

我成功地尝试读回_Same GPIO 上的 ePWM、并通过输入 XBAR 将其馈送至 eCAP 输入。 类似的、这适用于 EXTSYNCOUT:

EALLOW; //这是写入 EALLOW 受保护寄存器所必需的

   /* ePWM 1 CTR = 0作为到 GPIO 2的同步输出*/
   EPwm1Regs.TBCTL.bit.SYNCOSEL = 1; // 1:计数器=零
   SyncSockRegs.SYNCSELECT.BIT.SYNCOUT = 0;// 0:EPWM1SYNCOUT
   /*程序输出 Xbar */
   OutputXbarRegs.OUTPUT1MUX0TO15CFG.bit.MUX14 = 3;// EXTSYNCOUT
   OutputXbarRegs.OUTPUT1MUXENABLE.bit.MUX14 = 1;

   //将 GPIO2配置为 OUTPUTXBAR1
   GpioCtrlRegs.GPAGMUX1.bit.GPIO2 = 1;
   GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1;
   GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 3;//异步输入以进行回读
   GpioCtrlRegs.GPADIR.bit.GPIO2 = 1;//输出

   /*在 gpio02上直接读回 extsyncdout */
   InputXbarRegs.INPUT7SELECT = 2;//转到 eCAP1

读回 ePWM 输出的代码与此类似。

controlSUITE 示例 C:\ti\controlSUITE\device_support\F2807x\V210\F2807x_examples_CPU1\ECAP_CAPTURE_PWM\cpu01\ECAP_Capture_PWM_cpu01.c 建议使用另一种方法:它建议使用两个不同的 IO 引脚。 但是、我们的 GPIO 使用非常严格(100引脚封装)。

是否有任何理由反对我的版本?

这是否也适用于 TMS320F2837xS?

同步机制有什么更好的想法(不需要 GPIO)?

谢谢、

弗兰克

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

    弗兰克、

    此解决方案应适用于 TMS320F28075和 TMS320F2837xS。 您应该了解、当使用这个方法时 、eCAP 将有一个+/- 1 SYSCLK 周期不准确。 最后 、我认为您始终需要使用 GPIO 来同步类似这样的信号。

    此致、
    Cody