Thread 中讨论的其他器件:controlSUITE
工具/软件:Code Composer Studio
大家好,、我对 SDFM 和 ePWM 有几个问题。
我们使用 ePWM1-3作为电机 PWM 输出、并使用 ePWM12来同步复位 SDFM 模块、但我们希望 SDFM 模块在每次 ePWM1-3启动触发时都能获取数据。 如何同步 ePWM1和 ePWM12?
在 TI 演示(D:\ti\controlSUITE\development_kits\TMDSIDDK_v2.0\IDDK_PM_Servo_F2837x_v2_00_00_00)中、我找到以下设置:
"EPwm11Regs.CMPC = EPwm11Regs.TBPRD - SDFM_TICK*(OSR_RAT+1)*3/2;
EPwm11Regs.CMPA.bit.CMPA =(SDFM_TICK*(OSR_RATE + 1)*3/2)+ 500;// 500是任意的
EPwm11Regs.CMPD = 0;"
当我们想要在 ePWM1-3启动触发时获取 SDFM 数据、但 SDFM 模块需要 延迟(延迟为38.9us)时、我设置 ePWM11:CMPC/D = CMPA = 0;在100us-MotorControlISR 模块中、我添加"while"、等待(大约38.9us) SDFM.SDIFLG.AF1、然后清除所有标志。 但我没能找到程序在几秒钟后停止运行。 为什么?
3.根据28379的规范,我不太理解 CMPC 和 CMPA 值的设置:sinc 滤波器延迟= sinc 滤波器的阶数* OSR /调制器数据速率,然后在 CMPC 和 CMPA 中的公式应为(3*(OSR_RAT+1)/SDFM_TICK/2 )*100,但为什么 TI 演示将值设置为上述值?
谢谢大家。