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**** 2287980 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

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #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 ///////////
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    CC1310_LAUNCHXL.h

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    CC1310_LAUNCHXL.c

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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 */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    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);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    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 数组?  

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

     引脚配置的顺序:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*
    * 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 */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    必须与 CC1310_LAUNCHXL_GPIOName 的顺序匹配:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此处介绍了引脚配置:

    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 中):

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /* 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
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Br

    Siri