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.

[参考译文] AM2634:GPIO 中断配置

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1339500/am2634-gpio-interrupt-configurations

器件型号:AM2634
主题中讨论的其他器件:TMDSCNCD263、SysConfig、

尊敬的团队:

我使用的是 TMDSCNCD263评估板和来自 SDA 的 GPIO 中断示例、工作正常。  

现在必须在 GPIO14、GPIO29、GPIO55和 GPIO78上配置更多中断、SysConfig 工具可用于配置这些引脚上的中断

Pinmux 最初根据 SDK 中的给定示例进行配置,遵循相同的过程, 如 GPIO_Init ()

现在的问题是"如何为各自的引脚配置 ISR?" 因为我按照显示的同样的过程在 GPIO_INPUT_INTERRUPT_MAIN (NULL)函数中配置 ISR。

我将对所有引脚使用相同的回调函数(这应该不是问题)

在示例中添加了代码、以在引脚中配置 ISR  

HwiP_Params_init (&hwiPrms1);
pinNum = CONFIG_GPIO0_PIN;
hwiPrms1.intNum = intrNum;
hwiPrms1.callback =&GPIO_bankIsrFxn;
hwiPrms1.args =(void *) pinNum;

hwiPrms1.isPulse = true;
RetVal = HwiP_structure (&gGpioHwiObject1、&hwiPrms1);

 

请指导如何正向状态来 为引脚配置 ISR 、因为读取数据表和配置 ISR 非常复杂  

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

    尊敬的 Vikas:

    请参阅以下常见问题解答、了解如何在 AM263x 中配置 GPIO 中断。
    [FAQ] GPIO-AM263X:配置 MCU-PLUS-SDK 中断

    此致、
    阿克希特

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

    我将 gpio19配置为引脚中断模式  

    和中断使能、依据  

      HwiP_Params_init (&hwiPrms);
       hwiPrms.intNum = CSLR_R5FSS0_CORE0_CONTROLSS_INTRXBAR0_OUT_19;
       hwiPrms.callback =&GPIO_muxIsrFxn;
       hwiPrms.args =(void *) pinNum;
       RetVal = HwiP_built (&gGpioHwiObject、&hwiPrms);

    未命中回调函数

    静态空 GPIO_muxIsrFxn (void *args)
    {
       /*
        *处理引脚中断-这是脉冲中断。 无需清除状态
        *
        */
    //   DebugP_log ("已生成中断!!\r\n ");

     

       uint32_t   pinNum =(uint32_t) args;
          uint32_t   bankNum = GPIO_GET_Bank_index (pinNum);
          uint32_t   intrStatus、pinMask = GPIO_GET_Bank_bit_mask (pinNum);

     

          /*获取和清除组中断状态*/
          intrStatus = GPIO_getBankIntrStatus (gGpioBaseAddr、bankNum);
    //      GPIO_clearBankIntrStatus (gGpioBaseAddr、bankNum、IntrStatus);
          gGpioIntrDone2++;
          DebugP_log ("已生成中断!!\r\n ");
          /*每个引脚的中断处理*/

    您能交叉检查一下我在错误的代码中

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

    您能否尝试将  hwiPrms.intNum 更 改为 GPIO_INT_XBAR_GPIO_MUX_19、并告诉我它是否起作用。

    谢谢
    阿克希特

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

    GPIO_INT_XBAR_GPIO_MUX_19在 ME 上不起作用  CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_14正在工作、

    Am2634具有144个已启用中断的 GPIO、因此请告诉我如何将20个引脚配置为中断以及如何管理这些中断的回调函数?

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

    只有4个 GPIO 中断映射到 VIM0 then CPU 内核。 中断号为144,145,146和147。   

    CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_14为--> 144

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

    您的代码中的其他 GPIO 中断事件使用哪些中断编号?

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

    根据  CSLR_R5FSS0_CORE0_INTR_GPIO_INTRXBAR_OUT_14,142是中断编号

    但问题是、我们可以在此 MCU/SDK 上定义20个 GPIO 中断吗?  

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

    是的、你可以在你的应用中定义任一数量的 GPIO 中断。 但是、正如 TRM 中提到的、只有4个 VIM 通道分配给所有 GPIO 中断。

    您可以具有一个用于 GPIO 中断的 ISR、或者最多四个用于 GPIO 中断的 ISR。

    1。如果为 XBAR 实例选择 GPIO_INT_XBAR_VIM_MODULE0_0、中断号为142  

    2.如果 为 XBAR 实例选择 GPIO_INT_XBAR_VIM_MODULE0_1、中断号为143  

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

    您是否有多个 GPIO 中断的一些示例代码、或者告诉我如何更新 GPIO_input_interrupt_am263x-cc_r5fss0-0_nortos_ti-arm-clang 项目以用于多个中断  

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

    尊敬的 Vikas:

    我没有针对多个 GPIO 中断的有效示例。

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

    用于配置 AM2634中多个 GPIO 中断的任何文档

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

    尊敬的 Vikas:

    我正在处理一个 CCS 项目、以处理来自多个 GPIO 引脚的中断、并将在测试后发布该项目。

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

    以下是 GPIO 配置:

    添加另外两个 GPIO 引脚、这两个引脚都是输入引脚、并在上升沿触发。

      CONFIG_GPIO0:GPIO43引脚

      CONFIG_GPIO1:GPIO45引脚

    2.配置 GPIO 中断交叉开关:

    CONFIG_GPIO0:GPIO43 --> GPIO_INT_XBAR_VIM_MODULE0_1 已映射到中断号143

    CONFIG_GPIO0:GPIO45 --> GPIO_INT_XBAR_VIM_MODULE0_3 已映射到中断号145

    3. GPIO43和 GPIO45的寄存器引脚中断。  

    e2e.ti.com/.../multiple_5F00_gpio_5F00_input_5F00_interrupt_5F00_am263x_2D00_cc_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

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

    感谢 Wang、感谢您的努力。

    我还以相同的方式进行尝试、仅能配置4个中断、但需要4个以上的中断

    由于它 只有4个、GPIO_INT_XBAR_VIM_MODULE0_0/1/2/3、我们只能配置4个中断吗?  

    void Drivers_gpioIntXbarOpen()
    {
    /*
    * GPIO 中断 XBAR
    */
    SoC_xbarSelectGPioIntxbarInputSource (CSL_GPIO_INTR_XBAR_U_BASE、GPIO_INT_XBAR_VIM_MODULE0_0、GPIO_INT_XBAR_GPIO_MUX_21);
    SoC_xbarSelectGPioIntxbarInputSource (CSL_GPIO_INTR_XBAR_U_BASE、GPIO_INT_XBAR_VIM_MODULE0_1、GPIO_INT_XBAR_GPIO_MUX_43);
    SoC_xbarSelectGPioIntxbarInputSource (CSL_GPIO_INTR_XBAR_U_BASE、GPIO_INT_XBAR_VIM_MODULE0_3、GPIO_INT_XBAR_GPIO_MUX_45);

     

    在我的项目中、我需要使用20个以上的 GPIO 中断、因此请告诉我如何配置20个中断、

    我相信 AM2634是功能最强大的 MCU、能够处理所有 GPIO 中断

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

    您可以使用 GPIO 组中断。 同一组中的16个 GPIO 引脚将共享相同的中断编号和中断 ISR。 IRS 可以通过读取 GPIO 中断状态寄存器来处理中断源。  

    我没有机会尝试,但我认为这种方法应该起作用。

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

    1.使用 GPIO 组中断  

    您将获得16个引脚的中断。  在 GPIO ISR 中、您必须检查哪个引脚的中断原因。

    GPIO 组中断的 ISR:

    2.使用 GPIO 独立引脚中断:

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

    是的,我也在以同样的方式思考,也尝试,但它不起作用(这是主要的问题)

    我在同一个组上配置5个 GPIO、具有相同的中断编号、同时测试它 是否在最后一个引脚上提供中断、而不是在所有引脚上、

    请求自行测试

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

    1. 5个 GPIO 应在同一 GPIO 组中

      GPIO[15:0]--组0

      GPIO[31:16]--组1

       等等

    2. Xbar 输出(GPIO INT BAR )应该是同一组#

    我进行了测试、结果运行正常。

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

    您能将代码发送给我们吗?

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

    本示例中使用了7个 GPIO。  CONFIG_GPIO2/4/5/6使用 GPIO 组中断。

    GPIO_GPIO21:Push_Button、 GPIO 独立引脚中断、ISR 为 GPIO_IsrFxn00 ()

    2. CONFIG_GPIO0:GPIO43,    GPIO 独立引脚中断,ISR 为  GPIO_IsrFxn01 ()

    3.CONFIG_GPIO1:GPIO45,    GPIO 独立引脚中断,ISR 为  GPIO_IsrFxn02 ()

    4. CONFIG_GPIO2:GPIO49、  GPIO 组中断、ISR 为 GPIO_bankIsrFxn03 ()

    5. CONFIG_GPIO4:GPIO51,  GPIO 组中断,ISR 为 GPIO_bankIsrFxn03 ()

    6. CONFIG_GPIO5:GPIO52,  GPIO 组中断,ISR 为 GPIO_bankIsrFxn03 ()

    7. CONFIG_GPIO6:GPIO55,  GPIO 组中断,ISR 为 GPIO_bankIsrFxn03 ()


    e2e.ti.com/.../2311.multiple_5F00_gpio_5F00_input_5F00_interrupt_5F00_am263x_2D00_cc_5F00_r5fss0_2D00_0_5F00_nortos_5F00_ti_2D00_arm_2D00_clang.zip

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

    太好了、我也发现了我的错误

        在配置组中断时、我传递了 hwiPrms.args =引脚编号而不是存储体编号