TI中文支持网
TI专业的中文技术问题搜集分享网站

使用TM4C123GH6PM的QEI模块计算电机转度和位置问题

对QEI模块进行如下初始化设置

void Init_QEI(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI0);

GPIOPinConfigure(GPIO_PD6_PHA0);GPIOPinTypeQEI(GPIO_PORTD_BASE, GPIO_PIN_6);
GPIOPinConfigure(GPIO_PD7_PHB0);
GPIOPinTypeQEI(GPIO_PORTD_BASE, GPIO_PIN_7);
GPIOPinConfigure(GPIO_PF4_IDX0);
GPIOPinTypeQEI(GPIO_PORTF_BASE, GPIO_PIN_4);

GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_6,
GPIO_STRENGTH_4MA,
GPIO_PIN_TYPE_STD);
GPIOPadConfigSet(GPIO_PORTD_BASE, GPIO_PIN_7,
GPIO_STRENGTH_4MA,
GPIO_PIN_TYPE_STD);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4,
GPIO_STRENGTH_4MA,
GPIO_PIN_TYPE_STD);

QEIConfigure(QEI0_BASE,(QEI_CONFIG_CAPTURE_A_B | QEI_CONFIG_NO_RESET |
QEI_CONFIG_QUADRATURE | QEI_CONFIG_NO_SWAP), 4095);

QEIVelocityConfigure(QEI0_BASE, QEI_VELDIV_1, SysCtlClockGet()/100);

QEIVelocityEnable(QEI0_BASE);
QEIEnable(QEI0_BASE);

QEIIntEnable(QEI0_BASE,QEI_INTTIMER);
IntEnable(INT_QEI0);

}

怎么在中断处理函数里计算电机的转速和位置呢?

void
QEIIntHandler(void)
{
QEIIntClear(QEI0_BASE, QEI_INTTIMER);

???????
}

xyz549040622:

http://wenku.baidu.com/link?url=ts2VDONqG8g4IMXGf4tbUi6GGs3krDXbmMt0OavJEo9TvTBzzkNXsgRXIpw0pZXCOieewc35efPGjMvbyqtbMcDobgEwesqQ-JCs3TzIjby

推荐你看看这个文章,这虽然不是TI的文章,但计算方法还是基本差不多的。TI应该也有类似的文章,你可以搜索看看。

LiangLiang wang1:

回复 xyz549040622:

你那里有TI的讲这方面的资料吗?

xyz549040622:

回复 LiangLiang wang1:

采用高性能 MCU 驱动步进电机的参考设计,你可以去这里找资料看看

http://www.ti.com.cn/tool/cn/tidm-tm4c123steppermotor

或者参考下官方的例程吧。

赞(0)
未经允许不得转载:TI中文支持网 » 使用TM4C123GH6PM的QEI模块计算电机转度和位置问题
分享到: 更多 (0)