主题中讨论的其他器件:MSP430FR2355
你好。
我们对 BLDC 电机驱动器的 TIDA 板固件有一些疑问、如下所示。
可通过以下链接下载样片:
https://dev.ti.com/tirex/explore/node?a=VLyFKFf__1.0.4&node=AHncK.hWJ4vOir8iwD1B1w__coGQ502__LATEST
1- 当状态机处于 MOTOR_IPD 状态时、在 ISR 中为 SensorlessTrapController.IPDStatus 分配值 ADC_READ。 但是、发布此分配后、我看不到代码中的其他位置处理此分配。 看起来代码可能会达到这一点并无限期停留在这里。 从该状态中获取的逻辑是在何处实现的?
2 - 下面是 电机控制软件的 ISR 中使用的矢量。 无法在包括数据表在内的任何位置找到针对这些矢量的相应计数器寄存器等。
我们参考 TIDA 板中使用的 msp430fr2355数据表
TIMER0_B0_VECTOR
TIMER2_B0_VECTOR
TIMER2_B1_VECTOR
TIMER3_B0_Vector
TIMER3_B1_Vector
3- 将加速度转换为角距的逻辑 通过以下方式实现:
SensorlessTrapController.AccelVelocityInit +=
SensorlessTrapController.AccelRate;//按加速率增加速度
SensorlessTrapController.AccelDistance +=
(SensorlessTrapController.AccelVelocityInit
-(SensorlessTrapController.AccelRate >>1)>> 3;//计算距离
该逻辑的物理推导是什么?
此外、在上述代码中、 当 SensorlessTrapController.AccelDistance 达到值 20834时、表示它的行程为60度。 20834是如何推导出来的?
4- 我对状态机中的一个特定状态有几个问题- MOTOR_DIRECTION
- Motor_Direction 的逻辑在哪里实现? 从我对守则的了解来看,我在任何地方都找不到这种守则?
- ApplicationStatus.currentstate 设置为 MOTOR_DIRECTION 后、如何恢复到不同的状态? 我在任何地方都找不到用于更改此分配的任何状态的代码。 看起来它可能只是卡在那里。
请帮助我们详细了解它




