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.

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

Guru**** 2455360 points
Other Parts Discussed in Thread: AM5706, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1459454/am5706-gpio-interrupt-configuration-for-am5706

器件型号:AM5706
Thread 中讨论的其他器件: SYSBIOS

工具与软件:

大家好、我使用的是 AM5706处理器、想要触发并处理 GPIO5_6引脚的中断。 我曾尝试使用 PDK 文件夹(LED 闪烁 API)中提供的 GPIO API、但没有找到如何使用这些 API、还尝试了直接访问 GPIO 寄存器、结果也没得到。  

谢谢  

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

    我正在 CCS 环境中使用 SYS/BIOS RTOS。

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

    你好、Hardik、

    您是否仅使用 SYSBIOS、还是同时使用基于 A15内核的 Linux?

    请分享您正在使用的软件版本。

    -若苏厄

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

    大家好、我将仅使用 sysbios 和 SDK 版本 processor_sdk_rtos_am57xx_08_01_00_09。

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

    您是否从 PDK 成功构建了闪烁 LED 示例?  

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

    您也可以通过阅读 TRM 的第17章了解更多信息。

    -若苏厄

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

    你好,是的,可以建立它,但当我将代码复制到我的工作项目,它不工作,GPIO_init ()函数本身崩溃的代码。  

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

    我读取它、没有找到将会获取我的 ISR 地址的寄存器

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

    Hardik、

    只是为了确保我理解我会重申你告诉我的信息。 您可以构建示例并在器件上成功运行、对吗?

    问题出在您尝试将示例移植到自己的应用中时? 您能否共享错误日志的任何日志? 构建时没有消息?

    -若苏厄

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

    大家好、实际上我可以为 GPIO LED 运行项目并且能够触发中断、但是他们用于触发 GPIO 中断的 API 基于 IRQ_STATUS_RAW0寄存器(将1写入特定位置会触发 GPIO 相应引脚的中断)、 并且我希望每当 GPIO5_6引脚(DATA_IN 寄存器在特定位置获得对应于 GPIO 特定引脚的值0)作为外部器件数据时触发 GPIO 中断。

    我会在明天尝试给你的日志。

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

    大家好、下面随附的代码 基于 GPIO 端口5 (引脚6、7、8)、我将使用此代码来触发 TI LED 闪烁示例代码指定的中断、这些代码正在使用  GPIOTriggerPinInt () 为了触发中断、我只是不想使用此 API、而是想在某些引脚在 GPIO5_6、GPIO5_7、GPIO5_8上写入零时触发中断。

    GPIO 中断的配置有什么问题吗?如果有、请更正。

    #include <ti/csl/csl_utils.h>
    #include <ti/csl/soc/am571x/src/cslr_soc.h>
    #include <ti/csl/csl_types.h>
    #include <ti/drv/gpio/GPIO.h>
    #include <ti/drv/gpio/soc/GPIO_soc.h>
    #include <ti/drv/gpio/soc/GPIO_v1.h>
    #include <ti/csl/soc/am571x/src/cslr_soc_mpu_baseaddress.h>
    #include <ti/csl/hw_types.h>
    #include <ti/csl/csl_clec.h>
    
    /* Number of GPIO ports */
    #define CSL_GPIO_PER_CNT    8U
    
    /* GPIO Driver hardware attributes */
    GPIO_v1_hwAttrs_list GPIO_v1_hwAttrs = {
                                            {
                                             CSL_MPU_GPIO1_REGS,
                                             61,
    
                                             0,
                                             55,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO2_REGS,
                                             62,
    
                                             0,
                                             56,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO3_REGS,
                                             63,
    
                                             0,
                                             57,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO4_REGS,
                                             64,
    
                                             0,
                                             58,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO5_REGS,
                                             65,
    
                                             0,
                                             59,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO6_REGS,
                                             66,
    
                                             0,
                                             60,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO7_REGS,
                                             67,
    
                                             0,
                                             61,
                                             0
                                            },
                                            {
    
                                             CSL_MPU_GPIO8_REGS,
                                             153,
    
                                             0,
                                             0,
                                             0
                                            },
    };
    
    /* GPIO configuration structure */
    CSL_PUBLIC_CONST GPIOConfigList GPIO_config =
    {
     {
      &GPIO_FxnTable_v1,
      NULL,
      NULL
     },
     /* "pad to full predefined length of array" */
     {
      NULL,
      NULL,
      NULL
     },
     {
      NULL,
      NULL,
      NULL
     }
    };
    
    /* Callback function */
    void AppGpioCallbackFxn1(void);
    void AppGpioCallbackFxn2(void);
    void AppGpioCallbackFxn3(void);
    void AppGPIOInit(void);
    
    /**********************************************************************
     ************************** Global Variables **************************
     **********************************************************************/
    
    uint32_t gpioBaseAddr;
    uint32_t gpioPin;
    
    /* GPIO pin number connected to the green LED */
    #define GPIO_6_PIN_NUM      (0x6)
    
    /* GPIO port number connected to the green LED */
    #define GPIO_PORT_NUM       (0x5)
    
    /* GPIO pin number connected to the yellow LED */
    #define GPIO_7_PIN_NUM      (0x7)
    
    /* GPIO pin number connected to the yellow LED */
    #define GPIO_8_PIN_NUM      (0x8)
    
    
    /* GPIO Driver board specific pin configuration structure */
    GPIO_PinConfig gpioPinConfigs[] = {
                                       /* Input pin with interrupt enabled */
                                       GPIO_DEVICE_CONFIG(GPIO_PORT_NUM, GPIO_6_PIN_NUM) |
                                       GPIO_CFG_IN_INT_FALLING | GPIO_CFG_INPUT,
    								   
                                       /* Input pin with interrupt enabled */
                                       GPIO_DEVICE_CONFIG(GPIO_PORT_NUM, GPIO_7_PIN_NUM) |
                                       GPIO_CFG_IN_INT_FALLING | GPIO_CFG_INPUT,
    
                                       /* Input pin with interrupt enabled */
                                       GPIO_DEVICE_CONFIG(GPIO_PORT_NUM, GPIO_8_PIN_NUM) |
                                       GPIO_CFG_IN_INT_FALLING | GPIO_CFG_INPUT
    
    };
    
    /* GPIO Driver call back functions */
    GPIO_CallbackFxn gpioCallbackFunctions[] = {
                                                &AppGpioCallbackFxn1,
                                                &AppGpioCallbackFxn2,
                                                &AppGpioCallbackFxn3
                                                //                                            NULL,
                                                //                                            NULL,
                                                //                                            NULL
    };
    
    /* GPIO Driver configuration structure */
    GPIO_v1_Config GPIO_v1_config = {
                                     gpioPinConfigs,
                                     gpioCallbackFunctions,
                                     sizeof(gpioPinConfigs) / sizeof(GPIO_PinConfig),
                                     sizeof(gpioCallbackFunctions) / sizeof(GPIO_CallbackFxn),
                                     0x20,
    };
    
    
    /*
     *  ======== AppGPIOInit ========
     */
    void AppGPIOInit(void)
    {
        /* GPIO5 Clock Enable */
        *(unsigned int*)0x4A009778 = (unsigned int)(0x00000102);
    
        /* Pinmux for GPIO5_6 */
        *(unsigned int*)0x4A0036C4 = (unsigned int)(0x0000000EU);
    
        /* Pinmux for GPIO5_7 */
        *(unsigned int*)0x4A0036C8 = (unsigned int)(0x0000000EU);
    
        /* Pinmux for GPIO5_7 */
        *(unsigned int*)0x4A0036CC = (unsigned int)(0x0000000EU);
    }
    unsigned int ret_val;
    
    
    void gpio_test(UArg arg0, UArg arg1)
    {
        uint32_t testOutput = 0;
    
    
        AppGPIOInit();
    	
        /* GPIO initialization */
        GPIO_init();
    
        GPIO_setCallback(0, AppGpioCallbackFxn1);
    
        /* Enable GPIO interrupt on the specific gpio pin */
        GPIO_enableInt(0);
    
        /* Set the callback function */
        GPIO_setCallback(1, AppGpioCallbackFxn2);
    
        /* Enable GPIO interrupt on the specific gpio pin */
        GPIO_enableInt(1);
    
        /* Set the callback function */
        GPIO_setCallback(2, AppGpioCallbackFxn3);
    
        /* Enable GPIO interrupt on the specific gpio pin */
        GPIO_enableInt(2);
    
    
    
        GPIOTriggerPinInt(0x4805B000, 0, 6);
    
        GPIOTriggerPinInt(0x4805B000, 0, 7);
    
        GPIOTriggerPinInt(0x4805B000, 0, 8);
    
        }
    
    
    // *  ======== Callback function ========
    void AppGpioCallbackFxn1(void)
    {
    	UART_printf("interrupt triggered for GPIO5-6------------------------------------- \n");
        ret_val = GPIOPinRead(0x4805B000, 6);
        UART_printf("in  GPIO 6 0x%x\n",ret_val);
    }
    
    void AppGpioCallbackFxn2(void)
    {
        UART_printf("interrupt triggered for GPIO5-7------------------------------------- \n");
        ret_val = GPIOPinRead(0x4805B000, 7);
        UART_printf("in  GPIO 7 0x%x\n",ret_val);
    }
    
    void AppGpioCallbackFxn3(void)
    {
        UART_printf("interrupt triggered for GPIO5-8------------------------------------- \n");
        ret_val = GPIOPinRead(0x4805B000, 8);
        UART_printf("in  GPIO 8 0x%x\n",ret_val);
    }

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

    嗨、Hardik:  

    您能告诉我、您为构建这个模块的核心是什么吗?

    -若苏厄

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

    大家好、对于 A15内核0、我正在构建此代码。

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

    谢谢! 我会尽量在本周结束前查看一下、可能要到下周才能联系到您。

    -若苏厄

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

    好的、我也会在这边尝试更多。

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

    谢谢!

    检查以下主题以获取想法:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/653796/rtos-am5728-vector-number-in-pcie-example

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/573071/rtos-am5728-gpio-interrupt-response-is-slow

    -若苏厄

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

    Josue、我将介绍 TI 处理器的连接、我已经通过 SPI 接口将 ARINC 芯片(HI-3220)连接到 ti 处理器、ARINC 芯片的 int 引脚连接到 ti 处理器的 GPIO5_6引脚、一旦 ARINC 接收到数据、它就会触发中断并使 int 引脚变为低电平、这应该会在 ti 处理器的 GPIO5_6上生成中断。

    除此之外、我想问一下我是否需要为 ti am5706的寄存器分配我的 ISR 地址、如果它存在、您能否向我发送为中断寄存器分配 ISR 的小片段?

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

    你好、Hardik、

    我不在办公室、直至1月22日。 请预计回复中会有延迟。

    -若苏厄

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

    好的、若苏厄、没有问题。

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

    谢谢!

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

    您好、Josue、您方面有任何更新吗?

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

    Hardik、

    遗憾的是不可以 我的带宽非常低、并且正在处理一些内部升级、因此我可能没有时间在接下来的两周内尝试任何操作。

    很抱歉耽误你的时间。 现在、您将不得不自己进行实验。

    请密切关注  

    您还可以查看 SYS/BIOS (TI-RTOS 内核)用户指南(修订版 V) 中有关 SYS/BIOS 参考的内容

    另请访问 https://software-dl.ti.com/processor-sdk-rtos/esd/docs/latest/rtos/index_device_drv.html#gpio

    此致!

    若苏厄

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

    您好、Josue、我从我这边尝试过、但没有找到如何处理硬件中断的方法、是否有来自你们这边的更新?

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

    嗨、Hardik:  

    我没有时间再次访问这个。 抱歉。

    希望我能在下周查看一下。

    -若苏厄

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

    你好、Hardik、

    您能否看一下以下 API 以及它们在此处是否可供使用?
    https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_70_01_03/exports/bios_6_70_01_03/docs/cdoc/ti/sysbios/family/arm/a15/tci66xx/CpIntc.html

    -若苏厄