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.

[FAQ] [参考译文] [常见问题解答] SK-AM62:如何在 MCU+SDK 中的 AM62X 上配置 GPIO 中断。

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1196137/faq-sk-am62-how-to-configure-the-gpio-interrupt-on-am62x-in-mcu-sdk

器件型号:SK-AM62

什么是 GPIO?

通用输入/输出(GPIO)外设提供可配置为输入或输出的专用通用引脚。

GPIO 可用于三种模式:

*输入

*输出

*中断

AM62X SDK 中的 GPIO 可用性:

该器件具有一个或多个 GPIO 模块实例。 GPIO 引脚被分成组(16个引脚

每组9个组、每模块9个组)、这意味着每个 GPIO 模块最多可提供144个专用通道

具有输入和输出功能的通用引脚;因此、通用接口支持多达432个(3个实例×(9组×16引脚))引脚。 由于在该器件中保留了 MCU_GPIO0_[23:143]、GPIO0_[87:143]和 GPIO1_[88:143]、通用接口最多支持198个引脚。

 

AM62X SDK 中的 GPIO 中断连接:

AM62上的 SOC 使用中断路由器将所有 GPIO 引脚的引脚中断路由到相应的内核。 如果您为每个引脚配置中断、您的设计将会很复杂。  因此、路由概念被设计成最大限度地减少 SOC 中所有 GPIO 中断的开销。 因此、用户可以控制组中断和单个引脚中断。

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

    GPIO 中断配置过程

    GPIO 配置: 将 GPIO 引脚配置为来自 syscfg 的输入

    目标内核标识: 标识将 GPIO 中断路由到的目标内核、可以是 M4F、A53或 R5F。

    中断路由器配置: 根据目标内核配置中断路由器输出。

    目前、此信息在 syscfg 中不可配置。 因此、您需要按照以下步骤手动配置中断路由器输出。

    根据  您的要求启用组中断或单个引脚中断、触发类型和中断编号。

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

    手动配置中断路由器输出

    :中断路由器不能手动配置。 它必须通过 DMSC 内核进行配置。 如果尝试写入中断路由器寄存器、SOC 将进入异常状态。

    示例:为 M4FSS)内核上的 MCU_GPIO0_15配置 GPIO 中断

    检查以下路径中的文件"sciclient_defaultBoardcfg_rm.c"和"sciclient_IRQ_rm.c":
    C:\ti\mcu_plus_sdk_am62x_08_05_00_14\source\drivers\sciclient\sciclient_default_boardcfg\am62x\sciclient_defaultBoardcfg_rm.c
    C:\ti\mcu_plus_sdk_am62x_08_05_00_14\source\drivers\sciclient\soc \am62x\sciclient_irq_rm.c

    在上面的示例中、选择 MCU_GPIO0_15引脚作为中断、MCU_GPIO0的所有中断都属于 TISCI_DEV_WKUP_MCU_GPIOMUX_INTROUTER0路由器。 目标内核被选为 M4Fss_0。


    TISCI_DEV_WKUP_MCU_GPIOMUX_INTROUTER0可从0到12进行选择、但在 TISCI_HOST_ID_M4_0内核中的 TISCI_DEV_WKUP_MCU_GPIOMUX_INTROUTER0路由器下仅分配4个(num_resource)资源。

    因此、中断路由器输出可以设置为4到7、目的内核为 M4Fss_0。

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

    示例:在 M4Fss_0内核上为 MCU_GPIO0_15配置 GPIO 中断。

     步骤1:  将 GPIO 引脚配置为来自 syscfg 的输入

    步骤2: 配置 GPIO 中断路由器并选择目标内核

    我们需要在 Sciclient_gpioIrqSet (void)函数中配置四个参数:

    rmIrqReq.src_id、rmIrqReq.src_index、rmIrqReq.dst_id 和 rmIrqReq.dst_host_IRQ。

    在我的示例中、我希望在 MCU_GPIO0上获得中断、因此我的源 ID 应为 TISCI_DEV_WKUP_MCU_GPIOMUX_INTROUTER0:

    rmIrqReq.src_id = TISCI_DEV_WKUP_MCU_GPIOMUX_INTROUTER0;

    我想为寄存器组0生成一个中断。 根据 TRM、要在组0上获得组中断、源索引将为30。 有关 GPIO 中断源索引的更多详细信息、请参阅第10.1.6章"GPIO 中断处理"。

    rmIrqReq.src_index = 30U;

    根据上述 GPIO 中断路由图中的 TRM、所有 MCU_GPIO 中断都专门路由到 M4域、不与任何其他内核共享。 在这种情况下、目标 ID 将与源 ID 相同。 但是、如果中断与其他内核共享、则必须指定目标内核。

    rmIrqReq.dst_id = TISCI_DEV_WKUP_MCU_GPIOMUX_INTROUTER0;

    下一步是从0到12选择中断路由器寄存器。 我选择了

    rmIrqReq.src_index 为4U、5U、6U 或7U、基于 rm_c 文件。

    rmIrqReq.src_index = 4U;

    步骤3: 启用触发类型、中断编号和组中断。

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

    注:

    1. 此常见问题解答主要侧重于将 GPIO 中断路由到 M4内核、与路由到所有其他内核类似。
    2. 如果要为每个单独的中断而不是组中断启用中断、则必须执行以下步骤。

    在以下参数中、必须指定引脚编号而不是寄存器组编号:

    1. SRC_INDEX =引脚索引;