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.

[参考译文] LAUNCHXL-CC1310:GPIO 引脚的配置过程

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1306987/launchxl-cc1310-configuration-process-for-a-gpio-pin

器件型号:LAUNCHXL-CC1310
主题中讨论的其他器件:CC1310

您好

我希望配置一个 GPIO 引脚、使其 在 mainThread 中被设置(变为"高电平")。 不过、当切换引脚变为"高电平"时、当我测量引脚的电压时、它处于0V。 我正在使用 CC1310 Launchpad 并编辑 uartEcho 示例、我需要专门配置 IOID_25。 这将是 SPI0 SPI 通信的 CS 引脚。 我已参考了 创建定制电路板的文档 并在 CC1310_LAUNCHPADXL.h 中创建了一个定义;  

#define CC1310_LAUNCHXL_GPIO_TEST_PIN   IOID_25;

我已经在  Board.h 中将该引脚定义 为:

#define Board_TEST_GPIO_PIN25  CC1310_LAUNCHXL_GPIO_TEST_PIN。  

我还在    BoardGpioInitTable 阵列的 CC1310_LAUNCHPADXL.c 中添加了引脚本身的配置参数;

CC1310_LAUNCHXL_GPIO_TEST_PIN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW| PIN_PushPULL | PIN_DRVSTR_MAX、

为了使用我已经定义的 GPIO 引脚、我已经在单独的.c/.h 文件中创建了一个函数、其中包含 和 Board.h、并通过以下方式切换 mainThread 中 while (1)循环中的引脚:

GPIO_WRITE (Board_TEST_GPIO_PIN25、Board_GPIO_LED_ON)。  

但是、在刷写电路板时、引脚不会变为高电平。 除了上面的步骤、我不确定还应该在哪里进行更改、因为除了已经执行的步骤之外、文档中说明  GPIO_PinConfig  需要更改、不过这是一个似乎初始化未使用引脚的数组。 我已经确保  该数组中没有 GPIOCC26XX_DIO_25。

如果您想了解引脚为什么不会变为"高电平"、请提供任何帮助。  

此致

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

    我使用  uartEcho 示例并进行以下修改:

    Board.h

    #define Board_GPIO_BUTTON0      CC1310_LAUNCHXL_GPIO_S1
    #define Board_GPIO_BUTTON1      CC1310_LAUNCHXL_GPIO_S2
    #define Board_GPIO_BTN1         CC1310_LAUNCHXL_GPIO_S1
    #define Board_GPIO_BTN2         CC1310_LAUNCHXL_GPIO_S2
    #define Board_GPIO_LED0         CC1310_LAUNCHXL_GPIO_LED_RED
    #define Board_GPIO_LED1         CC1310_LAUNCHXL_GPIO_LED_GREEN
    #define Board_GPIO_RLED         CC1310_LAUNCHXL_GPIO_LED_RED
    #define Board_GPIO_GLED         CC1310_LAUNCHXL_GPIO_LED_GREEN
    #define Board_GPIO_LED_ON       CC1310_LAUNCHXL_GPIO_LED_ON
    #define Board_GPIO_LED_OFF      CC1310_LAUNCHXL_GPIO_LED_OFF
    #define Board_GPIO_TMP116_EN    CC1310_LAUNCHXL_GPIO_TMP116_EN
    #define Board_GPIO_TEST_DIO25   CC1310_LAUNCHXL_GPIO_TEST_DIO25 ///////////
    

    CC1310_LAUNCHXL.h

    typedef enum CC1310_LAUNCHXL_GPIOName {
        CC1310_LAUNCHXL_GPIO_S1 = 0,
        CC1310_LAUNCHXL_GPIO_S2,
        CC1310_LAUNCHXL_SPI_MASTER_READY,
        CC1310_LAUNCHXL_SPI_SLAVE_READY,
        CC1310_LAUNCHXL_GPIO_LED_GREEN,
        CC1310_LAUNCHXL_GPIO_LED_RED,
        CC1310_LAUNCHXL_GPIO_TMP116_EN,
        CC1310_LAUNCHXL_GPIO_SPI_FLASH_CS,
        CC1310_LAUNCHXL_SDSPI_CS,
        CC1310_LAUNCHXL_GPIO_LCD_CS,
        CC1310_LAUNCHXL_GPIO_LCD_POWER,
        CC1310_LAUNCHXL_GPIO_LCD_ENABLE,
        CC1310_LAUNCHXL_GPIO_TEST_DIO25,////////////////
        CC1310_LAUNCHXL_GPIOCOUNT
    } CC1310_LAUNCHXL_GPIOName;
    

    CC1310_LAUNCHXL.c

    GPIO_PinConfig gpioPinConfigs[] = {
        /* Input pins */
        GPIOCC26XX_DIO_13 | GPIO_DO_NOT_CONFIG,  /* Button 0 */
        GPIOCC26XX_DIO_14 | GPIO_DO_NOT_CONFIG,  /* Button 1 */
    
        GPIOCC26XX_DIO_15 | GPIO_DO_NOT_CONFIG,  /* CC1310_LAUNCHXL_SPI_MASTER_READY */
        GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG,  /* CC1310_LAUNCHXL_SPI_SLAVE_READY */
    
        /* Output pins */
        GPIOCC26XX_DIO_07 | GPIO_DO_NOT_CONFIG,  /* Green LED */
        GPIOCC26XX_DIO_06 | GPIO_DO_NOT_CONFIG,  /* Red LED */
        GPIOCC26XX_DIO_30 | GPIO_DO_NOT_CONFIG,  /* TMP116_EN */
    
        /* SPI Flash CSN */
        GPIOCC26XX_DIO_20 | GPIO_DO_NOT_CONFIG,
    
        /* SD CS */
        GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG,
    
        /* Sharp Display - GPIO configurations will be done in the Display files */
        GPIOCC26XX_DIO_24 | GPIO_DO_NOT_CONFIG, /* SPI chip select */
        GPIOCC26XX_DIO_22 | GPIO_DO_NOT_CONFIG, /* LCD power control */
        GPIOCC26XX_DIO_23 | GPIO_DO_NOT_CONFIG, /*LCD enable */
    
        GPIOCC26XX_DIO_25 | GPIO_DO_NOT_CONFIG, ///////////////////////////////////
    
    };
    
    
    
    const PIN_Config BoardGpioInitTable[] = {
    
        CC1310_LAUNCHXL_PIN_RLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,       /* LED initially off          */
        CC1310_LAUNCHXL_PIN_GLED | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,       /* LED initially off          */
        CC1310_LAUNCHXL_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS,          /* Button is active low       */
        CC1310_LAUNCHXL_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_BOTHEDGES | PIN_HYSTERESIS,          /* Button is active low       */
        CC1310_LAUNCHXL_SPI_FLASH_CS | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MIN,  /* External flash chip select */
        CC1310_LAUNCHXL_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN,                                              /* UART RX via debugger back channel */
        CC1310_LAUNCHXL_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL,                         /* UART TX via debugger back channel */
        CC1310_LAUNCHXL_SPI0_MOSI | PIN_INPUT_EN | PIN_PULLDOWN,                                            /* SPI master out - slave in */
        CC1310_LAUNCHXL_SPI0_MISO | PIN_INPUT_EN | PIN_PULLDOWN,                                            /* SPI master in - slave out */
        CC1310_LAUNCHXL_SPI0_CLK | PIN_INPUT_EN | PIN_PULLDOWN,                                             
        IOID_25 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW| PIN_PUSHPULL,///////////
        PIN_TERMINATE
    };

    我可以从应用程序控制 DIO25:

    void *mainThread(void *arg0)
    {
    char input;
    const char echoPrompt[] = "Echoing characters:\r\n";
    UART_Handle uart;
    UART_Params uartParams;
    
    /* Call driver init functions */
    GPIO_init();
    UART_init();
    
    /* Configure the LED pin */
    GPIO_setConfig(Board_GPIO_LED0, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    
    
    GPIO_setConfig(Board_GPIO_TEST_DIO25, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    
    GPIO_write(Board_GPIO_TEST_DIO25, 1);
    GPIO_write(Board_GPIO_TEST_DIO25, 0);

    Siri

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

    你好,Siri

    感谢您的答复。

    我已经将  CC1310_LAUNCHXL_GPIO_TEST_DIO25添加 到  CC1310_LAUNCHXL.h 文件中、构建时出现以下错误:

    错误#41:需要一个标识符

    此外、我认为您在上面的第三个代码段中犯了一个错误。 我只能  在   CC1310_LAUNCHXL.c 中找到 BoardGpioInitTable 阵列

     

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

    我在第一次答复中修改了代码。

    我在新项目中进行了上述更改、并验证了我可以切换 DIO25。

    Siri


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

    你好,Siri

    感谢您的答复。 这是正确的。 但是、您能详细说明您的答案吗?    CC1310_LAUNCHXL_GPIO_TEST_DIO25的枚举值是否与其 BoardGpioInitTable 数组中的元素编号相对应?  

    为什么  将 GPIOCC26XX_DIO_25 | GPIO_DO_NOT_CONFIG 添加到 gpioPinConfigs 数组?  

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

     引脚配置的顺序:

    /*
     * Array of Pin configurations
     * NOTE: The order of the pin configurations must coincide with what was
     *       defined in CC1310_LAUNCHXL.h
     * NOTE: Pins not used for interrupts should be placed at the end of the
     *       array. Callback entries can be omitted from callbacks array to
     *       reduce memory usage.
     */
    GPIO_PinConfig gpioPinConfigs[] = {
        /* Input pins */
        GPIOCC26XX_DIO_13 | GPIO_DO_NOT_CONFIG,  /* Button 0 */
        GPIOCC26XX_DIO_14 | GPIO_DO_NOT_CONFIG,  /* Button 1 */
    
        GPIOCC26XX_DIO_15 | GPIO_DO_NOT_CONFIG,  /* CC1310_LAUNCHXL_SPI_MASTER_READY */
        GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG,  /* CC1310_LAUNCHXL_SPI_SLAVE_READY */
    
        /* Output pins */
        GPIOCC26XX_DIO_07 | GPIO_DO_NOT_CONFIG,  /* Green LED */
        GPIOCC26XX_DIO_06 | GPIO_DO_NOT_CONFIG,  /* Red LED */
        GPIOCC26XX_DIO_30 | GPIO_DO_NOT_CONFIG,  /* TMP116_EN */
    
        /* SPI Flash CSN */
        GPIOCC26XX_DIO_20 | GPIO_DO_NOT_CONFIG,
    
        /* SD CS */
        GPIOCC26XX_DIO_21 | GPIO_DO_NOT_CONFIG,
    
        /* Sharp Display - GPIO configurations will be done in the Display files */
        GPIOCC26XX_DIO_24 | GPIO_DO_NOT_CONFIG, /* SPI chip select */
        GPIOCC26XX_DIO_22 | GPIO_DO_NOT_CONFIG, /* LCD power control */
        GPIOCC26XX_DIO_23 | GPIO_DO_NOT_CONFIG, /*LCD enable */
    
        GPIOCC26XX_DIO_25 | GPIO_DO_NOT_CONFIG, ///////////////////////////////////
    };

    必须与 CC1310_LAUNCHXL_GPIOName 的顺序匹配:

    typedef enum CC1310_LAUNCHXL_GPIOName {
        CC1310_LAUNCHXL_GPIO_S1 = 0,
        CC1310_LAUNCHXL_GPIO_S2,
        CC1310_LAUNCHXL_SPI_MASTER_READY,
        CC1310_LAUNCHXL_SPI_SLAVE_READY,
        CC1310_LAUNCHXL_GPIO_LED_GREEN,
        CC1310_LAUNCHXL_GPIO_LED_RED,
        CC1310_LAUNCHXL_GPIO_TMP116_EN,
        CC1310_LAUNCHXL_GPIO_SPI_FLASH_CS,
        CC1310_LAUNCHXL_SDSPI_CS,
        CC1310_LAUNCHXL_GPIO_LCD_CS,
        CC1310_LAUNCHXL_GPIO_LCD_POWER,
        CC1310_LAUNCHXL_GPIO_LCD_ENABLE,
        CC1310_LAUNCHXL_GPIO_TEST_DIO25,////////////////
        CC1310_LAUNCHXL_GPIOCOUNT
    } CC1310_LAUNCHXL_GPIOName;

    此处介绍了引脚配置:

    GPIO.h 文件参考(TI.com)

    Siri

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

    你好,Siri

    很抱歉、即使此问题已解决、但在给定上述配置的情况下、这些引脚都是特定于 GPIO 的、即它们与任何外设都没有关联。

    我提出问题的原因是、我现在有一个带有 CC1310的定制板、其中的 SPI 引脚已重新映射。 从 uartEcho 示例中、我可以看到默认的 SPI 引脚、 除外 CSn 引脚在  BoardGpioInitTable[]中配置。  请问,为何会出现这种情况? CSn 引脚是否专用于 GPIO?

    我对此感到混淆、因为 gpioPinConfigs 数组和枚举不包括 SPI 引脚(或其他外设使用的引脚)。

    此外,作品中的另一个扳手是,在我的同事中,惯例是  不使用 BoardGpioInitTable 阵列(除了 PIN_TERMINATE ),所有的引脚配置都在 gpioPinConfigs 阵列中完成。 如果我不使用  BoardGpioInitTable  阵列、应该在哪里对 SPI 引脚进行引脚配置?

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

    我很抱歉,但我未能找到合适的人来回答为何实施的原因。

    不过、我在 CC1310 LP 上进行了测试、其中更改了 SPI 的位置。

    我将其从默认的 DIO8、DIO9、DIO10和 DIO11更改为 DIO12、DIO15、 DIO21和 DIO22。

    我只需对代码进行如下更改(在  CC1310_LAUNCHXL.h 中):

    /* SPI Board */
    //#define CC1310_LAUNCHXL_SPI0_MISO             IOID_8          /* RF1.20 */
    //#define CC1310_LAUNCHXL_SPI0_MOSI             IOID_9          /* RF1.18 */
    //#define CC1310_LAUNCHXL_SPI0_CLK              IOID_10         /* RF1.16 */
    //#define CC1310_LAUNCHXL_SPI0_CSN              IOID_11
    
    
    #define CC1310_LAUNCHXL_SPI0_MISO             IOID_12         
    #define CC1310_LAUNCHXL_SPI0_MOSI             IOID_15        
    #define CC1310_LAUNCHXL_SPI0_CLK              IOID_21       
    #define CC1310_LAUNCHXL_SPI0_CSN              IOID_22
    
    

    Br

    Siri