This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,我想把两路IO口相或后,作为trip源送入epwm中的DC子模块,用于产生DCAEVT1及DCBEVT1事件。
配置逻辑如下:1)GPIO16 GPIO17通过input-xabr选择为INPUT4 INPUT5
2)通过epwm-xabr将INPUT4 INPUT5 选为 TRIP4 TRIP5
3)通过配置DCALTRIPSEL DCBLTRIPSEL的TRIPINPUT4 TRIPINPUT5位(配成1),将trip4 trip5选为组合的OR信号送入AL BL mux
4)配置DCTRIPSE的DCBLCOMPSEL DCALCOMPSEL位的数值为0xFF,即AL BL的输入源为组合信号
5)DCAEVT1 DCBEVT1发生条件是AL BL输入为low,发生DCAEVT1 DCBEVT1时将pwm引脚拉高
Epwm1Regs->DCALTRIPSEL.bit.TRIPINPUT4 = 1;
Epwm1Regs->DCALTRIPSEL.bit.TRIPINPUT5 = 1;
Epwm1Regs->DCBLTRIPSEL.bit.TRIPINPUT4 = 1;
Epwm1Regs->DCBLTRIPSEL.bit.TRIPINPUT5 = 1;
Epwm1Regs->DCTRIPSEL.bit.DCALCOMPSEL = DC_COMBINATION;
Epwm1Regs->DCTRIPSEL.bit.DCBLCOMPSEL = DC_COMBINATION;
Epwm1Regs->TZSEL.bit.DCAEVT1 = TZ_ENABLE;
Epwm1Regs->TZSEL.bit.DCBEVT1 = TZ_ENABLE;
Epwm1Regs->TZCTL.bit.TZA = TZ_FORCE_LOW;
Epwm1Regs->TZCTL.bit.TZB = TZ_FORCE_LOW;
目前测试时发现必须trip4 trip5同时为低才可以产生事件(这是"与"的逻辑),我的理解是trip4 trip5是"相或"的逻辑,不应该其中一个为低,就可触发事件吗?
盼复,祝好!
你好,我看了DCALTRIPSEL的几个输入确实应该是或门的,可能是你的配置有问题,需要麻烦你前往英文E2E论坛提问一下了,英文论坛的工程师对CMPSS模块更熟悉一些,可以判断是哪里设置的问题。
谢谢您的回复,我再去英文论坛咨询下。根据目前测试下来的结果,推测"或门"需要对输入信号的极性有要求,我将trip4 trip5的信号调整为默认为低,AL BL
事件的极性配置由低改为高,继续测试就符合逻辑了。
由
Epwm1Regs->TZDCSEL.bit.DCAEVT1 = TZ_DCAL_LOW;
Epwm1Regs->TZDCSEL.bit.DCBEVT1 = TZ_DCBL_LOW;
改为:
Epwm1Regs->TZDCSEL.bit.DCAEVT1 = TZ_DCAL_HI;
Epwm1Regs->TZDCSEL.bit.DCBEVT1 = TZ_DCBL_HI;
按照上述改完后,将trip4 trip5任意一路由低变高,便可触发DCAEVT1 DCBEVT1.
因此得到的推论是:若输入信号正常状态为"高“,故障状态为"低“,为实现逻辑应该选择"与门",若输入信号正常为"低",故障状态为"高”为实现逻辑应该选择"或门"。由于手册中提到的只有"或门”,由此在设计时需要核实下信号源的极性。