主题中讨论的其他器件:C2000WARE
我尝试使用 eQEP 模块进行速度和位置检测、并在 Launchpad 器件上使用 c2000ware 中的 eQEP_posspeed 示例。 电机通过另一个微控制器上的无传感器算法运行。 我正在读取 TI 电路板上的编码器脉冲、以估算速度和位置。 速度估算工作正常。 唯一的问题是、示波器上观察到的电气 θ 不与索引同步。 响应就好像电路板没有接收到索引信号一样。
以下是我正在使用的 poss_speed 函数(根据示例进行了调整)
void POSSPEED_Init (void)
{
EQep1Regs.QUPRD = 1000000;// 100MHz 时100Hz 的单位定时器(时钟/FM)
// SYSCLKOUT
EQep1Regs.QDECCTL.bit.QSRC = 00;// QEP 正交计数模式
EQep1Regs.QEPCTL.bit.free_soft = 2;
EQep1Regs.QEPCTL.bit.PCRM = 00;//00;// PCRM = 00模式- QPOSCNT 复位打开
//索引事件
EQep1Regs.QEPCTL.bit.UTE = 1;//单元超时启用
EQep1Regs.QEPCTL.bit.QCLM = 1;//锁存单元超时
EQep1Regs.QPOSMAX = 0x1F3F;//7999 = 8000-1计数
EQep1Regs.QEPCTL.bit.QPEN = 1;// QEP 使能
EQep1Regs.QCAPCTL.BIT.UPPs = 5;//针对单元位置1/32
EQep1Regs.QCAPCTL.bit.CCPS = 6;//针对 CAP 时钟、为1/64
EQep1Regs.QCAPCTL.bit.CEN = 1;// QEP 捕捉使能
}
此外、我看到代码有一部分可以检查是否发生索引脉冲以及角度是否同步。
//检查索引出现情况
//
if (EQep1Regs.QFLG.bit.IEL==1)//EQep1Regs.QFLG.bit.IEL
{
P->index_SYNC_FLAG = 0x00F0;//此数字为240
EQep1Regs.QCLR.bit.IEL = 1;//清除__interrupt 标志
}
我正在尝试观察"Expressions"窗口中的 index_SYNC_FLAG、但读取的值为零、表示没有接收到索引脉冲(即使电路板正在接收索引脉冲)。 我已确保 eQEP GPIO 初始化正确。