主题中讨论的其他器件:TM4C1294NCPDT、、 DRV8889-Q1
你(们)好。
我将使用 TM4C1294NCPDT 微控制器、并使用 DRV8711来控制步进电机。 我们命令 电机将一个位置移动到另一个位置。在第二个位置有机械止动装置用于停止电机。 所以我决定为失速引脚产生中断、只要电机到达机械止动位置、就需要检测失速、但它没有进入中断功能。
请检查是否缺少任何失速检测初始化
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);
GPIOPinTypeGPIOInput (GPIO_PORTC_BASE、GPIO_PIN_7);
GPIOPadConfigSet (GPIO_PORTC_BASE、(GPIO_PIN_7)、GPIO_strength_2mA、GPIO_PIN_TYPE_STD_WPU);
GPIOIntRegister (GPIO_PORTC_BASE、 Motor_GPIOIntHandler );
GPIOIntTypeSet (GPIO_PORTC_BASE、GPIO_PIN_7、GPIO_Both_EDGE);
GPIOIntEnable (GPIO_PORTC_BASE、GPIO_INT_PIN_7);
IntEnable (INT_GPIOC);
中断功能:
空隙 Motor_GPIOIntHandler (空)
{
GPIOIntClear (GPIO_PORTC_BASE、GPIO_PIN_7);
uint32_t ui32Stall;
ui32Stall = GPIOPinRead (GPIO_PORTC_BASE、GPIO_PIN_7);
// IF (GPIOPinRead (GPIO_PORTC_BASE、GPIO_PIN_7)
if ((((ui32Stall 和 GPIO_PIN_7)>>7)))
{
STALL_Ctrl++;
if ((STALL_Ctrl>0)&&(STALL_SET_Flag==1)
{
STALL_Ctrl = 0;
motor.stall = 0;
STALL_SET_Flag = false;
}
}
方案
{
motor.stall = 1;
}
}
DRV 配置:
扭矩寄存器
地址 = 0x01;
扭矩 = 0xB4;
SAMPLTH = 0x01;
失速寄存器:
地址 = 0x05;
SDTHR = 0xC8;
SDCNT = 0x02;
VDIV = 0x03;