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.

求助,am335x上运行ti_rtos驱动gpio

Other Parts Discussed in Thread: AM3359

如题,用的AM3359,在ti_rtos下驱动gpio,我看到要用GPIO_write( ,)这个函数,我知道linux下gpio是有编号规则的,请问ti_rtos下有没有类似的编号规则?或者说用户层和底层硬是什么样的对应关系?

  • 您指什么样的编号规则,对引脚做pinmux?
    看手册4.2章节pin attributes。
  • 我说的详细点吧,我在3359 ice v2上跑的ti的例程ethercat_salve_full,我想在这个例程的基础上,同时驱动gpio3_20,让它处于高电平,然后不是说接口是GPIO_write( xxx,1),gpio3_20在linux下有个编号116,我在想是不是这里也有个类似的编号,应该是不一样的,那我需要做怎样的修改才能知道那个xxx应该写啥,不要让我去搞那个RTOS SDK的例程,SDK里面自带的例程是空的,build SDK需要win10系统,而且我的板子上的led是通过iic驱动的。我就想知道那个xxx我该怎么配置,怎么更改那个gpio.h文件或者其它的文件,谢谢。我都急死了,给跪了
  • am3359一共4个bank,每个bank有32个pin,跟linux下的编号是一样的,gpio0_1就是1,gpio0_2 index是2依次后推
  • 调用GPIO_write(xxx,1)函数对GPIO操作,xxx编号取决于gpioPinConfigs的声明,比如我项目里面是这么声明的:
    #define GPIO_S3_PORT_NUM (5U)
    #define GPIO_S3_PIN_NUM (12U) // S3--GPIO5_12
    #define GPIO_S4_PORT_NUM (3U)
    #define GPIO_S4_PIN_NUM (1U) // S4 ---GPIO3_1

    #define GPIO_LED1_PORT_NUM (4U)
    #define GPIO_LED1_PIN_NUM (16U) // LED GPIO4_16
    #define GPIO_LED2_PORT_NUM (4U)
    #define GPIO_LED2_PIN_NUM (17U) // LED GPIO4_17
    #define GPIO_LED3_PORT_NUM (4U)
    #define GPIO_LED3_PIN_NUM (18U) // LED GPIO4_18
    #define GPIO_LED4_PORT_NUM (5U)
    #define GPIO_LED4_PIN_NUM (11U) // LED GPIO5_11
    #define GPIO_EEPROM_WP_PIN_NUM (0x7)
    #define GPIO_EEPROM_WP_PORT_NUM (0x3) //EEPROM_WP

    /* GPIO Driver board specific pin configuration structure */
    GPIO_PinConfig gpioPinConfigs[] = {
    /* Input pin with interrupt enabled */
    GPIO_DEVICE_CONFIG(( GPIO_S3_PORT_NUM + 1 ), GPIO_S3_PIN_NUM) | GPIO_CFG_IN_INT_RISING | GPIO_CFG_INPUT,
    GPIO_DEVICE_CONFIG(( GPIO_S4_PORT_NUM + 1 ), GPIO_S4_PIN_NUM) | GPIO_CFG_IN_INT_RISING | GPIO_CFG_INPUT,
    /*EEPROM_WP*/
    GPIO_DEVICE_CONFIG((GPIO_EEPROM_WP_PORT_NUM + 1), GPIO_EEPROM_WP_PIN_NUM) | GPIO_CFG_OUTPUT,
    /* Output pin */
    GPIO_DEVICE_CONFIG( (GPIO_LED1_PORT_NUM + 1), GPIO_LED1_PIN_NUM) | GPIO_CFG_OUTPUT,
    GPIO_DEVICE_CONFIG( (GPIO_LED2_PORT_NUM + 1), GPIO_LED2_PIN_NUM) | GPIO_CFG_OUTPUT,
    GPIO_DEVICE_CONFIG( (GPIO_LED3_PORT_NUM + 1), GPIO_LED3_PIN_NUM) | GPIO_CFG_OUTPUT,
    GPIO_DEVICE_CONFIG( (GPIO_LED4_PORT_NUM + 1), GPIO_LED4_PIN_NUM) | GPIO_CFG_OUTPUT,
    };

    LED1~LED4分别对应序号3,4,5,6
  • 您好,我想追问一个问题
    我在GPIO_PinConfig gpioPinConfigs[] = {}中设定了调用了5个不同的GPIO Port(我在下面的代码中做了注释)
    但是实际在驱动Port口对应的Pin时,发现只有‘0u + 1u’‘4u + 1u’‘5u + 1u’Port搭载的Pin驱动成功了,
    而后面的‘2u + 1u’‘3u + 1u’Port并没有反应,请问您知道在配置gpioPinConfigs前,还需要对GPIO有其他的设定操作吗?
    GPIO_PinConfig gpioPinConfigs[] =
    {
    GPIO_DEVICE_CONFIG(0u + 1u/*GPIO Port*/, 14u) | GPIO_CFG_OUTPUT, //OK
    GPIO_DEVICE_CONFIG(0u + 1u/*GPIO Port*/, 15u) | GPIO_CFG_OUTPUT, //OK
    GPIO_DEVICE_CONFIG(0u + 1u/*GPIO Port*/, 30u) | GPIO_CFG_OUTPUT, //OK

    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 8u) | GPIO_CFG_OUTPUT, //OK
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 10u) | GPIO_CFG_OUTPUT, //OK
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 27u) | GPIO_CFG_OUTPUT, //OK

    GPIO_DEVICE_CONFIG(5u + 1u/*GPIO Port*/, 1u) | GPIO_CFG_OUTPUT,//OK
    GPIO_DEVICE_CONFIG(5u + 1u/*GPIO Port*/, 3u) | GPIO_CFG_OUTPUT,//OK
    GPIO_DEVICE_CONFIG(5u + 1u/*GPIO Port*/, 12u) | GPIO_CFG_OUTPUT,//OK

    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 24u) | GPIO_CFG_OUTPUT ,//9 NG
    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 25u) | GPIO_CFG_OUTPUT,//10 NG
    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 22u) | GPIO_CFG_OUTPUT,//11 NG
    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 23u) | GPIO_CFG_OUTPUT ,//12 NG
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 13u) | GPIO_CFG_OUTPUT,//13 OK
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 16u) | GPIO_CFG_OUTPUT,//14 OK
    GPIO_DEVICE_CONFIG(3u + 1u/*GPIO Port*/, 1u) | GPIO_CFG_OUTPUT,//15 NG

    };
  • 参考下面的注释以及‘ user5323627的回复’能帮到你

    GPIO_PinConfig gpioPinConfigs[] =
    {
    GPIO_DEVICE_CONFIG(0u + 1u/*GPIO Port*/, 14u) | GPIO_CFG_OUTPUT, //GPIO_write( 0,1)
    GPIO_DEVICE_CONFIG(0u + 1u/*GPIO Port*/, 15u) | GPIO_CFG_OUTPUT, //GPIO_write( 1,1)
    GPIO_DEVICE_CONFIG(0u + 1u/*GPIO Port*/, 30u) | GPIO_CFG_OUTPUT, //GPIO_write( 2,1)

    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 8u) | GPIO_CFG_OUTPUT, //GPIO_write( 3,1)
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 10u) | GPIO_CFG_OUTPUT, //GPIO_write( 4,1)
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 27u) | GPIO_CFG_OUTPUT, //

    GPIO_DEVICE_CONFIG(5u + 1u/*GPIO Port*/, 1u) | GPIO_CFG_OUTPUT,//
    GPIO_DEVICE_CONFIG(5u + 1u/*GPIO Port*/, 3u) | GPIO_CFG_OUTPUT,//
    GPIO_DEVICE_CONFIG(5u + 1u/*GPIO Port*/, 12u) | GPIO_CFG_OUTPUT,//

    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 24u) | GPIO_CFG_OUTPUT ,//9 GPIO_write(9,1)
    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 25u) | GPIO_CFG_OUTPUT,//10 GPIO_write( 10,1)
    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 22u) | GPIO_CFG_OUTPUT,//11
    GPIO_DEVICE_CONFIG(2u + 1u/*GPIO Port*/, 23u) | GPIO_CFG_OUTPUT ,//12
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 13u) | GPIO_CFG_OUTPUT,//13
    GPIO_DEVICE_CONFIG(4u + 1u/*GPIO Port*/, 16u) | GPIO_CFG_OUTPUT,//14
    GPIO_DEVICE_CONFIG(3u + 1u/*GPIO Port*/, 1u) | GPIO_CFG_OUTPUT,//15

    };
  • pinmux要把这些端口配置成gpio就可以驱动。
  • 非常感谢您的回复 ,我还是刚接触TI的芯片,请问这个pinmux如何配置 或者在哪个文件我能找到他
  • 我也是这款芯片的初学者,互相学习。
    首先你需要用到pinmuxtool工具,会生成一个pinmux_data.c文件,找到ti board目录里面的文件你对着修改吧
  • 谢谢谢谢,我下载一个试一下
  • 我在Pinmux配置了GPIO 现在可以确认是配置成功了(我观察了GPIO的寄存器‘Port2’已经按照我的要求进行动作)但是实际上物理连接的器件还是没有动作,我用的是TI的工业开发板,GPIO2的pin脚连接的是LED灯 一共6个 只有GPIO4(2个LED)连接的亮了,GPIO2连接的(4个LED)没有亮。除了Pinmux,还有其他的配置吗?
    /* Output pin : AM437x_IDK_RED0_LED */
    GPIO_DEVICE_CONFIG(2u + 1u, 24u) | GPIO_CFG_OUTPUT ,//9 NG

    /* Output pin :AM437x_IDK_GRN0_LED */
    GPIO_DEVICE_CONFIG(2u + 1u, 25u) | GPIO_CFG_OUTPUT,//10 NG

    /* Output pin : AM437x_IDK_YEL0_LED */
    GPIO_DEVICE_CONFIG(2u + 1u, 22u) | GPIO_CFG_OUTPUT,//11 NG

    /* Output pin : AM437x_IDK_RED1_LED */
    GPIO_DEVICE_CONFIG(2u + 1u, 23u) | GPIO_CFG_OUTPUT ,//12 NG

    /* Output pin : AM437x_IDK_GRN1_LED */
    GPIO_DEVICE_CONFIG(4u + 1u, 13u) | GPIO_CFG_OUTPUT,//13 OK

    /* Output pin : AM437x_IDK_YEL1_LED */
    GPIO_DEVICE_CONFIG(4u + 1u, 16u) | GPIO_CFG_OUTPUT,//14 OK