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-CC26X2R1: GPIO pins

Part Number: LAUNCHXL-CC26X2R1

Hi TI,

Below I have attached the CODE for enabling 5 LED's based on the value received in the function  "SpeedIndicator_PresentStateIndication"    But I see it is not working , maximum input to the function is 100.

I have enabled pins LED_ 1 - DIO25, LED_ 2 - DIO26, LED_ 3 - DIO27, LED_ 4 - DIO28, LED_ 5 - DIO29 using syscfg and enabled as dynamic mode.

Is there anything to add in the code please mention it .

#include "SpeedIndicator.h"
#include <unistd.h>
#include <ti/drivers/PIN.h>
#include "ti_drivers_config.h"
#include "stdint.h"
#include <ti/drivers/GPIO.h>

static void SpeedIndicator_ClearAllIndication(void);

static void SpeedIndicator_SetHigh(uint16_t bitSet);

static uint16_t SpeedIndicator_Level(uint16_t Div,uint16_t d);

//Initializing all the 5 pins
PIN_Config ledPinTable[] = {
                            CONFIG_LED_1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW  | PIN_PUSHPULL | PIN_DRVSTR_MAX,
                            CONFIG_LED_2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW  | PIN_PUSHPULL | PIN_DRVSTR_MAX,
                            CONFIG_LED_3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW  | PIN_PUSHPULL | PIN_DRVSTR_MAX,
                            CONFIG_LED_4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW  | PIN_PUSHPULL | PIN_DRVSTR_MAX,
                            CONFIG_LED_5 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW  | PIN_PUSHPULL | PIN_DRVSTR_MAX,
                            PIN_TERMINATE
};

/*********************************************************************
 * @fn      SpeedIndicator_ClearAllIndication
 *
 * @brief   Setting all the LED's to LOW
 *
 * @param   none
 *
 * @return  none
 *
 */
static void SpeedIndicator_ClearAllIndication(void)
{
    GPIO_init();

    GPIO_write(CONFIG_LED_1, CONFIG_GPIO_LED_OFF);
    GPIO_write(CONFIG_LED_2, CONFIG_GPIO_LED_OFF);
    GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_OFF);
    GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_OFF);
    GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_OFF);
}

/*********************************************************************
 * @fn      SpeedIndicator_PresentState
 *
 * @brief   Indicating the Present State interms of LED's
 *
 * @param   PerBatSoc
 *
 * @return  none
 *
 */
void SpeedIndicator_PresentStateIndication(uint8_t PerBatSoc)
{
    uint16_t bitSet = SpeedIndicator_Level(PerBatSoc,20);

    SpeedIndicator_ClearAllIndication();

    SpeedIndicator_SetHigh(bitSet);
}

/*********************************************************************
 * @fn      SpeedIndicator_PresentState
 *
 * @brief   Indicating the Present State interms of LED's
 *
 * @param   PerBatSoc
 *
 * @return  none
 *
 */
static void SpeedIndicator_SetHigh(uint16_t bitSet)
{
    switch (bitSet)
    {
    case 5:
        GPIO_write(CONFIG_LED_1, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_2, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
        break;

    case 4:
        GPIO_write(CONFIG_LED_2, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
        break;

    case 3:
        GPIO_write(CONFIG_LED_3, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
        break;

    case 2:
        GPIO_write(CONFIG_LED_4, CONFIG_GPIO_LED_ON);
        GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
        break;

    case 1:
        GPIO_write(CONFIG_LED_5, CONFIG_GPIO_LED_ON);
        break;
    default:
        break;

    }
}

static uint16_t SpeedIndicator_Level(uint16_t Div,uint16_t d)
{
    uint16_t quotient = 0;
    while (Div >= d) {
        Div = Div - d;
        ++quotient;
    }
    return quotient;
}

  • Hey Manikanth,

    Have you looked at our gpiointerrupt example inside the driver example folder? https://dev.ti.com/tirex/explore/node?node=AICZrjOoUIiEJnfx3TMmkQ__pTTHBmu__LATEST

    Use this as an example on how to properly initiate the GPIO driver.

    I think what you are missing is the initilization of the pins after GPIO_init(), add the following in between GPIO_init() and GPIO_Write... :

    GPIO_setConfig(CONFIG_LED_1, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_setConfig(CONFIG_LED_2, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_setConfig(CONFIG_LED_3, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_setConfig(CONFIG_LED_4, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_setConfig(CONFIG_LED_5, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

    I hope this helps,

    AB