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:eQEP 示例问题

Guru**** 2535450 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/605698/tms320f28335-eqep-example-question

器件型号:TMS320F28335

大家好、

我正在尝试使用我的电机控制代码应用 eQEP 函数。 我目前正在研究示例代码 example_2833xEqep_pos_speed。  

在此代码中、单位计时器 为10ms、但我的控制周期为0.1ms。 我可以通过某种方式更改单位计时器以获得更高的精度吗?  

也是如此。 速度和角度计算是由 ePWM 中断驱动的、但我不确定中断周期是多少。 它能否与我的控制器同步、这意味着周期为0.1ms。  我附加了下面的 ePWM 设置代码。

#include "DSP28x_Project.h"//器件头文件和示例 include 文件
#include "example_posspeed.h"//特定的 include 文件示例

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

#define PWM_CLK 0 // 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;

谢谢,

杨善

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我写信告诉您、C2000团队成员已被分配到此帖子、应该很快回答。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通常、QEP 的100Hz 单元计时器足以满足大多数情况。 您可以根据系统要求将 QEP 单元计时器周期更改为0.1ms、并且不能通过减小单元计时器来提高位置精度、对于低速的速度和位置计算、较慢的 QEP 单元计时器更灵活。
    QEP 计算不依赖于 ePWM 计时器、您可以根据控制带宽将 ePWM 计时器设置为任何值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Baskaran 和 Yanming
    感谢您的回答。 根据您的答案、我可以为我的实时控制器使用 QEP 的100Hz 单位计时器、即使控制器需要每0.1ms 读取一次当前速度和位置也是如此。 我想更改的唯一内容是将 EPWM 中断周期设置为0.1ms。 我的理解是否正确?

    谢谢、
    杨善
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没错。 您可以在控制计时器中计算转子速度和位置、如0.1ms、无需更改 QEP 单元计时器。