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.

[参考译文] AM2632:是否可以管理同一组上的多个 GPIO 引脚中断?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1181436/am2632-is-it-possible-to-manage-multiple-gpio-pin-interrupts-on-the-same-bank

器件型号:AM2632

您好!

我需要在组7上管理5个 GPIO 引脚中断、在组6上管理4个 GPIO 引脚中断。

从 SDK 中的"GPIO_INPUT_INTERRUPT_AM263x"示例中、我了解到 AM2632在组级别管理 GPIO ISR (每个组包括16个引脚)、 因此、如果我们必须监控同一组上的多个 GPIO 、我们必须读取 GPIO 以检查触发中断的 GPIO。 但是、如果连接的信号变化非常快、则可能无法找到触发中断的引脚。

Furthermore、在同时触发的情况下、我们 不知道哪个 GPIO 引脚首先触发中断。

请回答此问题:

1) 1)是否可以为同一组的每个不同引脚触发不同的 ISR?

2) 2)在这种情况下、您能否提供一个具有同一组至少2个 GPIO 的通用示例、以触发2个不同的 ISR?

此致。

一般事务人员

  

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

    您好、Giovanni、

    我们将查看您的查询、并在收到更多详细信息后进行回复。 初始想法:由于 GPIO 中断事件的分组、不可能具有每引脚 ISR。 一种可能的方法是将 IO 信号分散在 GPIO 组中、以便每个每组中断都与特定的 IO 事件相关联。

    此致、

    Zackary Fleenor

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

    Fleenor、您好!

    我们需要监控11个 GPIO 引脚的上升/下降沿、我们需要知道第一个事件是什么。

    AM2632 仅包含9个组、因此我们无法 在 GPIO 组之间扩展 IO 信号。

    脉冲可能非常短、因此我们不想使用振铃。

    请尽快提供解决方案(如有)。

    此致。

    一般事务人员

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

    嗨、GS、

    遗憾  的是、由于已讨论的原因、GPIO 模块将无法支持此用例。

    在与团队进行讨论后、我们认为 可以通过 ePWM 跳闸边缘检测功能来实现替代解决方案。 您的系统是否有11个 ePWM 模块可供使用? 请查看 TRM 的 ePWM 一章、并让我们知道这是否是适用于您的应用的可行解决方案。

    此致、

    Zackary Fleenor

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

    您好、Fleenor、

    1) 1)我们有11个免费 ePWM、但路由将非常复杂、我们需要在投资于这项努力之前真正确保解决问题。

    我在 TRM 中搜索了"跳闸边沿检测"、但找到了0个结果。

    请更好地解释您的解决方案并提供示例。

    请记住、我需要知道哪一个信号是改变状态的第一个信号。

    2) 2)我还有另一个问题。

    我们正在考虑将受监控信号减少到9个、并重新路由 PCB 以将每个信号连接到 GPIO  

    仅属于1个组。 这将允许我们为每个单个引脚(组)使用一个 ISR。

    问题是从头文件来看、每个内核似乎只能处理4个 GPIO ISR。

    我之所以推导它、是因为我们在 XBAR 中只有4个用于 GPIO 中断的条目:

     

    // XBAR 输出宏

    #define GPIO_INT_XBAR_VIM_MODULE0_0       14.

    #define GPIO_INT_XBAR_VIM_MODULE0_1       15.

    #define GPIO_INT_XBAR_VIM_MODULE0_2       16.

    #define GPIO_INT_XBAR_VIM_MODULE0_3       17.

    //中断映射

    #define CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_14               142

    #define CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_15               143

    #define CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_16               144

    #define CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_17               145

     

    我是对的吗?

    只能 使用1个内核来监控这9个信号。

    您能提出解决方案吗?

    此致。

    一般事务人员

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

    你(们)好  

    很快就会回来

    谢谢、此致

    Sri Vidya

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

    你好,Giovanni

    是4只能为每个内核提供 GPIO 组中断。  

    我们确实有 ECAP 模块、它捕获上升沿和下降沿并相应地上升中断、但这对于 GPIO 中断来说可能是一种过度终止、我们只有10个 ECAP。

     前面讨论的"跳闸边沿检测"是 PWM 数字比较子模块中的边沿滤波器设置。 PWM 可用于边缘检测。 我必须检查并确认边沿滤波 器是否可以生成任何中断。

    您能否详细解释一下为什么需要9个 ISR、以及为什么无法通过读取引脚状态在组中断中处理这些 GPIO 中断? 是否可以将 GPIO 分组为4组并创建4个 ISR?

    谢谢、此致

    Sri Vidya