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.
您好!
我的 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