对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
或者参考下官方的例程吧。