主题中讨论的其它部件:DRV8323、 MOTORWARE
早上好、TI 社区、
我想实现基于中断的霍尔传感器换向、以便为我的电机实现非常高的 RPM。 我将 TMS320F28027F 与 DRV8323驱动器和霍尔传感器反馈配合使用。 我已经能够为我的设置配置 lab11e、并使用在 mainISR 中采样的基于 GPIO 的霍尔传感器反馈来驱动电机。 然而、这种方法在极高的 RPM 时失败、我需要以120000RPM 的转速驱动电机。 观察我的示波器、我可以看到、当霍尔传感器状态变化和 PWM 输出变化之间存在延迟时、控制会发生分离。 为了解决这一限制、我想为这些引脚实现硬件中断并在新的 ISR (例如 HALL_ISR)中切换霍尔状态。
我们实施了一些更改来根据引脚的状态变化启用此 HALL_ISR、但我们发现上升/下降沿之间以及触发中断时(基于在 HALL_ISR 中触发 GPIO 输出引脚)存在可变延迟。 该延迟从几微秒到~20微秒不等。 lab11中可能会运行哪些其他中断、这些中断可能会延迟执行 HALL_ISR 函数? 为什么我在上升/下降沿和触发此函数之间看到可变延迟?
下面是配置 ISR 的逻辑示例。 感谢您的支持!
/*将此 GPIO 设置为 TZ 输入、以便鉴定模式可以是异步*/
GPIO_setMode (obj->gpioHandle、GPIO_Number_29、GPIO_29_Mode_TZ3_NOT);
GPIO_setExtInt (obj->gpioHandle、GPIO_Number_29、CPU_ExtIntNumber_1);
PI_registerPieIntHandler (obj->压 电式、PI_GroupNumber_1、PI_SubGroupNumber_4、&hallISR);
PIE_ENABLE (obj->压 电式);
PI_enableExtInt (obj->压 电式、cpu_ExtIntNumber_1);
cpu_enableInt (obj->cpuHandle、cpu_IntNumber_1);
GPIO_setQualification (obj->gpioHandle、GPIO_Number_29、GPIO_Qual_异 步);
GPIO_setQualificationPeriod (obj->gpioHandle、GPIO_Number_29、0);
PI_setExtIntPolarity (obj->压 电极、cpu_ExtIntNumber_1、PI_ExtIntPolarity_RisingAndFallingEdge);
PI_enableInt (obj->压 电致、PI_GroupNumber_1、PI_InterruptSource_XINT_1);
这里是我的 HALL_ISR 函数:
//! 简要介绍实现电机控制的基于霍尔传感器的 ISR。
中断空 hallISR (空)
{
PI_clearInt (halHandle->压 电筒、PI_GroupNumber_1);
GPIO_toggle (halHandle->gpioHandle、GPIO_Number_28);
}
此致、
Chris
