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)?
谢谢、
弗兰克