工具/软件:
您好、
我们使用的是 C2000 MCU、特别是 F280025C、适用于电机控制。 CAN 引导加载程序位于闪存的前3个扇区中。 之后、我们放置了应用代码。
在下电上电期间、引导加载程序首先运行、等待一段时间、然后禁用 CAN 和计时器、最终跳转到应用程序。 此流程可以正常运行—我们在下电上电期间使用 CAN 更新了固件、并且应用程序可以正常运行。
接下来、我们希望避免下电上电、而是通过向应用发送 CAN 消息来执行软件复位。 引导加载程序就会运行、我们再次更新固件。 但是、这一次应用程序无法正常运行、具体而言、PWM 输出无法正常运行。
再次执行下电上电(无需重新刷写固件)后、应用程序工作正常。
观察结果:
-
ADC 和 I/O 等其他外设工作正常。
-
在3个 PWM 输出中(U、V、W)、V 和 W 相位正确输出。
-
U 相似乎使用与 V PHASE 相同的比较器值。 我们通过更改计数器比较值确认了这一点。
我们正在通过 CAN 更新计数器比较值、并使用该getCounterCompare()
函数读回这些值、从而返回正确的值。
详细信息:
-
EPWM 频率:15kHz
-
U PHASE - EPWM4 (GPIO 22、7)
-
V PHASE - EPWM1 (GPIO 0、1)
-
W 相位- EPWM6 (GPIO 18、19)
发送的计数器比较值:
-
U:1666
-
V:833.
-
W:3000
计数器比较值读回:
-
U:1666
-
V:833.
-
W:3000
我们还尝试了不同的值、但仍然、W 相没有问题、而 U 相输出似乎反映了 V 相。
这里可能会出现什么问题?