基于DSP28335的EQEP模块使用M/T法测量2500线增量式编码器速度代码
时间: 2023-07-29 22:05:41 浏览: 188
以下是基于DSP28335的EQEP模块使用M/T法测量2500线增量式编码器速度的代码:
```c
// 定义计数器和速度变量
Uint32 count = 0;
Uint32 speed = 0;
// 初始化EQEP模块
EQep1Regs.QDECCTL.bit.QSRC = 0; // 使用正交编码器
EQep1Regs.QDECCTL.bit.XCR = 0; // 无预分频器
EQep1Regs.QDECCTL.bit.SPSEL = 1; // M/T法
// 使能计数器
EQep1Regs.QEPCTL.bit.QPEN = 1;
while(1)
{
// 等待计数器溢出
while(EQep1Regs.QEPSTS.bit.UPEVNT == 0);
// 读取计数器值
count = EQep1Regs.QPOSCNT;
// 计算速度
speed = count * 2500 / EQep1Regs.QCAPCTL.bit.UPPS / EQep1Regs.QPOSCNT;
// 清除计数器
EQep1Regs.QPOSCNT = 0;
EQep1Regs.QEPSTS.bit.UPEVNT = 1;
}
```
其中,M/T法即“Measurement Time”法,它通过测量编码器输出两个脉冲之间的时间来计算速度。此代码中,我们使用了2500线的增量式编码器,并假设它的UPPS(单位位置计数器每旋转一周计数的上限)为1,因此我们可以将计数器值乘以2500来获得旋转的角度。同时,我们还需要将计数器值除以UPPS来获得单位位置计数器的值,然后再除以两个脉冲之间的时间来计算速度。