TMS320F28374S: 如何实现接收到外部TZ信号延迟后再关闭ePWM功能?

Part Number: TMS320F28374S
Other Parts Discussed in Thread: C2000WARE

请问该芯片如何实现pwmA和pwmB在接收到外部TZ信号后,ePWMA立即关闭、ePWMB延时后再关闭 的功能?感谢!

  • 您好,收到了您的案例,调查需要些时间,感您的耐心等待。

  • 您好,

    要实现接收到外部TZ信号后立即关闭ePWMA,然后在特定延迟后关闭ePWMB的功能,您可以结合数字比较(DC)子模块使用ePWM模块的跳闸区功能。

    首先,配置跳闸区域以响应外部信号。 这涉及设置XBAR (交叉杆)以将外部信号发送至ePWM模块的跳闸区输入。

    接下来,配置数字比较子模块,以根据行车区域信号生成事件。 此事件将用于控制ePWMA和ePWMB输出。 要在收到外部TZ信号后立即关闭ePWMA,请对DC事件配置操作。 如果这有帮助,请告诉我。

  • 这些我都了解并已经实现,我现在需要实现ePWMB引脚接收到TZ信号后延时200ns再关闭,请问除了中断+定时器的软件方案,有什么其他纯硬件实现的方案吗?感谢

  • 您好,

    您可以采用传统方法并增加软件的延迟。 如果要在TZ之后添加延迟,则无法使用Dead-Time子模块,因为它在TZ之后不可用。 但是,作为变通办法,您可以使用CLB (可配置逻辑块)来实现EPWMB信号并将其作为输入传递给CLB。 在CLB图块中,您可以添加额外的延迟,以便CLB的输出为ePWMB。 我希望这会有所帮助。

  • f28374S并没有CLB外设,既然选择使用TZ那肯定是不考虑Dead-Time子模块的,要把所有pwm封闭,请问你所说的采用传统方法并增加软件的延迟指的是再A的TZ中断延迟后里去触发B的TZ吗?

  • 您好,

    是的、如果您在寻找硬件延迟、则需要使用新一代 C2000 器件。 在软件中、您可以调用 driverlib 函数在 ePMWA 输出上设置 TripZone、然后使用 delay_us 添加一些延迟、然后使 ePWMB 输出跳闸。

  • 好的,感谢。

  • 您好,

    如果这解决了您的问题,请点击绿色“问题已解决”按钮,谢谢!

  • 你好,我尝试过程中发现不论是DCAEVT还是DCBEVT都只能通过触发OneShot方式关闭PWM,但是一旦触发OneShot,PWMA和PWMB都会关闭,无法做到只关闭PWMA,然后在中断里关闭PWMB的功能,请问是我哪里操作不对吗?

  •  使用DCxEVT1时间直接配置引脚高低的方式不知道为什么无法保持,一旦外部保护信号恢复正常pwm就又发波了?没办法OneShot

  • 您好,

    您可以通过配置 TZA/TZB 操作来选择将哪个 PWM 输出设置为低电平或高电平。

    如果您只想将 PWMA 设置为低电平、可配置 TZA 事件并使 TZB 保持高阻抗状态。 TZB 事件负责 ePMWB 输出跳闸。

    有关更多详细信息和指南、您可以参阅 C2000Ware ePWM 示例:C:\ti\c2000\C2000Ware_5_05_00_00\driverlib\f2837xs\examples\cpu1\epwm 

  • 考虑到我需求的功能是PWMA和PWMB都要保护动作,只是PWMB在收到保护信号后延时1us在动作。目前试了一些方法都不太行。昨晚尝试将TZB Event事件设置为desable action ,然后在TZ中断里 手动修改 TZB Event事件为 Low。成功实现功能,请问这样做是否会存在不严谨或其他可能的问题?