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.

[参考译文] TMS320F28335:电机速度和位置计算中断

Guru**** 2538950 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/605466/tms320f28335-motor-speed-and-position-calculation-interrupt

器件型号:TMS320F28335

大家好、

我不熟悉微控制器。 目前、我正在尝试了解 TI 控制套件中需要应用于 PMSM 控制的 Example_2833xEqep_pos_speed。 我一直处于 由 ePWM 触发的中断状态、我的代码如下所示:

#IF (CPU_FRQ_150MHz)
#define CPU_CLK 150e6
#endif
#IF (CPU_FRQ_100MHz)
#define CPU_CLK 100e6
#endif

#define PWM_CLK 5e3 // 5kHz (300rpm) EPWM1频率。 频率 可以在此处更改
#define SP CPU_CLK/(2*PWM_CLK)
#define TBCTLVAL 0x200E //向上向下计数、时基= SYSCLKOUT


void initEpwm()

EPwm4Regs.ETSEL.All=0x0A;// PRD 上的中断
EPwm4Regs.ETPS.All=1;
EPwm4Regs.ETFLG.All=0;
EPwm4Regs.ETCLR.All=0;
EPwm4Regs.ETFRC.All=0;

EPwm4Regs.PCCTL.All=0;

EPwm4Regs.TBCTL.ALL=0x0010+TBCTLVAL;//启用定时器
EPwm4Regs.TBPRD=SP;

我不确定两个中断之间的时间间隔是多久 、这取决于我标记为红色的两个寄存器、如果我想每0.1ms 计算一次速度和位置、我应该将值更改为什么。  

谢谢、

杨善

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


    请分享您的 CPU CLK 是什么。 这将帮助我们获得所需的正确值。

    您应该使用的计算是 ePWM 用户指南中的图6时基频率和 SPRUG04周期。
    您正在使用 ePWM 的向上/向下计数模式。 PWM 周期(T_PWM)等于2 x TBPRD x T_TBCLK。
    如果 CPU_FRQ_100MHz,则 CPUCLK = 100e6 (100MHz)。
    对于10kHz 频率、将 PWM_CLK 设置为10e3、从而提供0.1ms 的周期。
    SP 仍为 CPU_CLK/(2*PWM_CLK)。

    这将提供0.1ms 的 EPWM 中断。

    谢谢、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Mark:
    感谢您的回答。 我的 CPU CLK 现在是150MHz。 中断基于 PRD 而不是 TBPRD。 根据 SPRUG04图6,TPWM=2*TBPRD*TTBCLK,而2*TBPRD=PRD。 T_TBCLK 应与 CPU_CLK 相同。 以获得0.1ms 的周期。 PWM_CLK 应为150e6/10e3=15e3。 我是对的吗?

    此外、我对以下行的内容仍然有点困惑:

    EPwm4Regs.TBCTL.ALL=0x0010+TBCTLVAL;//启用定时器

    这是否意味着 ePWM 设置为向上向下计数模式并且 TTBCLK=CPU_CLK?

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

    是的、如果您需要0.1ms 的周期、PWM_CLK 应设置为15e3。

    具体取决于你将 TBCTLVAL 设置为什么。 默认情况下、ePWM 将设置为向上向下计数、时基时钟为 CPUCLK。

    谢谢、
    标记