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.

[参考译文] TMS320F2.8379万D:使用多个GPIO引发一个中断

Guru**** 2553190 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/629848/tms320f28379d-raising-one-interrupt-with-multiple-gpios

部件号:TMS320F2.8379万D

大家好,

我有一个关于中断的问题:我使用F2.8379万D来驱动交流-直流转换器,我必须监控IGBT驱动器故障(16个驱动器,16个GPIO)。

是否可以从多个GPIO中仅生成一个爆发的内电位(而不是进行轮询/外部或在16个GPIO之间进行轮询/外部)?

非常感谢,

此致,

热雷梅

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jeremy:

    我们没有直接的这种能力。

    -您需要多快检测到故障?

    -您当前是否在应用程序中同时使用这两种CLA? 如果没有,您可以将其中一个CLA专用于监控GPIO,并让其向C28x发送中断(或仅处理故障)。

    我无法获得全部16英寸,但如果您有可用的输入X-Bar资源,您可以通过X-Bar将其中多达6个资源路由至ePWM DC子模块。 直流子模块具有组合或输入,您可以将它们全部输入。 如果有任何不同的状态(活动高电平与活动低电平),您可以在ePWM X-Bar中反转它们。 这可以配置为为为这6个生成单个中断。

    我有一个想法,这是一个不可否认的奇怪的问题,但可能是一个涉及DMA的很好的解决办法。 我会确保一切都有可能,并会回复给您。

    此致,
    克里斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeremy,

    DMA没有我想要的寄存器的访问权限,因此不起作用。 我有一位同事,他将发布我们很快讨论过的解决方案。 我将详细介绍该想法,以防它触发其他人的想法或可能帮助有类似情况的人。

    我想使用CPU计时器重复触发DMA,将GPxDAT寄存器复制到ADCSOCFRC寄存器中。 这会为任何设置为'1'的位触发ADC SOC (如果故障条件处于活动低电平,则可能已通过GPxINV寄存器反转)。 这方面的问题是DMA无法访问ADC配置寄存器。 如果您的GPIO少于16个(例如8个),我们可以在不同的外设中使用不同的FRC寄存器,如输出X条或ePWM (TZFRC),但这是唯一一个具有完整16位的寄存器。

    此致,
    克里斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jeremy:

    要添加Kris关于使用输入Xbar的建议,如果您将一组6个输入Xbar信号发送到输出Xbar或ePWM Xbar,请在此处:

    然后,当您配置输出Xbar或ePWM Xbar (两者的结构相同)时,这将让您或这6个一起使用:

    但是,Xbar中有更多选项可供选择,这些选项可以正常工作。  最简单的方法是将CMDSS模块用作简单的数字比较器。  为此,请将参考DAC设置为中等规模,然后将GPIO驱动到CMPSS引脚(这些引脚与ADC引脚共享,因此您需要一些备用模拟引脚)。  这将使您获得单个中断的大约14个输入:

    它使用以下线路将14路输入合并为一个外部中断:

    所以您还有1个XINT行可以使用(INPUT14)。  您可能可以将其映射到与其他14个输入相同的ISR,这样您总共可以获得15个输入。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要添加到Devin的解决方案中,您还可以使用多达6个eWAP,这些eWAP在边缘检测中具有中断(Devin图中的INPUT7-INPUT12)。 如果使用将这些ISR映射到同一地址,则将是一个中断。

    要知道哪个引脚通过输出X条触发中断,可以引用XBAR_regs中的标志。 如果外部故障信号保持设置,当然您也可以读取GPIO数据寄存器。

    在这两种情况下都要注意的是,如果您要将多个中断映射到矢量表中的同一位置-如果您在退出时清除第一个中断,则可能会丢失该矢量位置的任何待处理中断(我需要在设备上确认这一点, 但我很肯定是这样),因为您正在清除矢量表中的标记。 你可以解决这个问题,但要注意这个问题。 在Devin的解决方案中,所有通过输出X-Bar的信号都将使用真正的单个中断,但其他信号将是双映射中断。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    非常感谢您的回答,但我担心我的申请不可能。 事实上,我要开一个PFC桥和两个H桥,我相信很多的资源/外围设备都会使用。

    目标是在IGBT驱动器之一出现故障时关闭所有PWM。 我担心您的解决方案对我的应用程序来说太过分了。

    IGBT驱动器具有内部保护,但我将尝试与OR解决方案结合使用。

    再次感谢您,祝您度过美好的一天!

    此致,
    热雷梅
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeremy,

    我同意这可能是应用程序的最佳解决方案。 您可能已经计划这样做,但由于您最初的帖子是XINT,我只是想提及一个澄清。 在发生故障时关闭ePWM的最佳方法是通过X条将其插入ePWM上的跳闸区或数字比较子模块。 这使得硬件跳闸PWM的速度比通过软件中断进行跳闸快得多。 您仍然可以接收中断以处理故障,但在接收硬件之前,硬件将被置于您选择的状态。

    此致,
    克里斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢Kris的帮助,
    祝您度过美好的一天,

    此致,
    热雷梅