Thread 中讨论的其他器件:SysConfig、 C2000WARE
工具/软件:
专家、您好:
当我使用 MotorControl_SDK 时、我发现了与 CMPSS 模块配置相关的问题:
我们通过 ePWM X-BAR 将 CMPSS1和 CMPSS3路由到 TRIP7、并通过 ePWM 的直流子模块将 TRIP7路由到 DCAH 和 DCBH、如以下代码所示:
EPWM_enableDigitalCompareTripCombinationInput(obj->pwmHandle[cnt], MTR1_DCTRIPIN, EPWM_DC_TYPE_DCAH); EPWM_enableDigitalCompareTripCombinationInput(obj->pwmHandle[cnt], MTR1_DCTRIPIN, EPWM_DC_TYPE_DCBH);
根据 CMPSS1和 CMPSS3之前的相关配置、可以知道、如果 U/V/W 三相存在过流情况(其中 U 相仅检测 正过流、W 相仅检测负过流、V PHASE 同时检测正负双向过流)、则 CMPSS1和 CMPSS3、CTRIPH 和 CTRIPL 的输出都将输出高电平。 这意味着 DCAH 和 DCBH 都将获得高电平。 (问题1:这一点是否正确?)
然后、下一步是配置 ePWMxA 事件、即当 DCAH 显示高电平时、触发 DCAEVT1 (如下图所示)。
此时的代码为:
EPWM_setTripZoneDigitalCompareEventCondition(obj->pwmHandle[cnt], EPWM_TZ_DC_OUTPUT_A1, EPWM_TZ_EVENT_DCXH_HIGH);
这样、宏定义 EPWM_TZ_EVENT_DCXH_HIGH 意味着当 DCAH 为高电平时、DCAEVT1被触发、从而生成保护信号。 (问题2:这一点是否正确?)
但是、问题在于 ePWMxB 的配置、因为我们之前已经将 TRIP7路由到 DCBH。 根据相同的逻辑、当 DCBH 处于高电平时、是否应触发 DCBEVT1 (如下图所示)?
但是、此时的代码确实表示为:
EPWM_setTripZoneDigitalCompareEventCondition(obj->pwmHandle[cnt], EPWM_TZ_DC_OUTPUT_B1, EPWM_TZ_EVENT_DCXL_HIGH);
宏定义 EPWM_TZ_EVENT_DCXL_HIGH 似乎意味着、当 DCHL 处于高电平时、会生成 DCBEVT1事件。 不幸的是、我们没有将 TRIP7路由到 DCHL。
问题3:此处的问题发生在哪里? 例程中是否错误使用了宏定义 EPWM_TZ_EVENT_DCXL_HIGH?
此外:
我检查了 F280025例程的 SysConfig 版本、并找到了相同的配置、如下图所示:
如果根据 SysConfig 版本进行配置、则数字比较 B 低电平会路由到 TRIP1、TRIP1与 TZ1相同。 TZ1连接至 INPUTXBAR1、该器件是 nFAULT 引脚。
但是、nFAULT 引脚在低电平时有效、这意味着它在正常情况下处于高电平。 因此、根据 SysConfig 中的配置、DCBL 将始终处于较高的级别。 这是合理的吗?