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.

cc2650 5x5 package vs 7x7 package

Other Parts Discussed in Thread: CC2650, SYSBIOS

Hi,

I am having the different packages of CC2650 module namely 

  • 7x7 package (7ID)
  • 5x5 package(5XD)
  • 4x4 package (4XS)
  • SmartRF06EVB

For quite sometime, I was using 7ID package and the example projects works fine.  For the final board, we are going for 5XD package due to size constraints. Because of which I replaced 7ID with 5XD. I tried the basic GPIO configuration(turning on leds marked LEDx, pulling a particular pin high and low, I2C interface,SPI interface) . EVerything works for 7ID and not for 5XD.

I am having IAR for development and I changed the CC26507ID in the compiler tab to 5XD. I tried changing BoardGpioInitTable, board.c and board.h files too.

Is there something else which needs to be done before changing the package ? I am kind of stuck with this problem. Please help me out. 

  • Hi,

    Did you also include the path in preprocessor compiler settings:

    $TI_RTOS_DRIVERS_BASE$\ti\boards\SRF06EB\CC2650EM_7ID

    to

    $TI_RTOS_DRIVERS_BASE$\ti\boards\SRF06EB\CC2650EM_5XD

    Best wishes

  • Hi,

    I have changed the 7ID to 5XD in compiler tab, and when I click on open "board.h" It opens board.h of 5XD package. So I guess the mapping and everything is done. But not even a GPIO can be turned high confuses me.

    I am attaching the board.c and BoardGpioInitTable[] used by me. If there is something wrong in configuration, please correct me..

    I tried adding CC2650EM_5XD to the defined symbols in IAR,Options. But no luck. Only the compiler->preprocessor needs to be changed to 5XD right

    /*
     * Copyright (c) 2015, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    /*
     *  ====================== Board.c =============================================
     *  This file is responsible for setting up the board specific items for the
     *  SRF06EB with the CC2650EM_5XD board.
     */
    /*
     *  ====================== Includes ============================================
     */
    #include <inc/hw_memmap.h>
    #include <inc/hw_ints.h>
    #include <driverlib/ioc.h>
    #include <driverlib/udma.h>
    #include <xdc/std.h>
    #include <xdc/runtime/System.h>
    #include <ti/sysbios/family/arm/m3/Hwi.h>
    #include <ti/sysbios/family/arm/cc26xx/Power.h>
    #include <ti/sysbios/family/arm/cc26xx/PowerCC2650.h>
    #include <ti/drivers/PIN.h>
    #include "Board.h"
    /*
     *  ========================= IO driver initialization =========================
     *  From main, PIN_init(BoardGpioInitTable) should be called to setup safe
     *  settings for this board.
     *  When a pin is allocated and then de-allocated, it will revert to the state
     *  configured in this table.
    */
    PIN_Config BoardGpioInitTable[] = {
        Board_LED1       | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH   | PIN_PUSHPULL | PIN_DRVSTR_MAX,     /* LED initially off             */
        Board_LED2       | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH   | PIN_PUSHPULL | PIN_DRVSTR_MAX,     /* LED initially off             */
        Board_LED3       | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH   | PIN_PUSHPULL | PIN_DRVSTR_MAX,     /* LED initially off             */
        Board_LED4       | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH  | PIN_PUSHPULL | PIN_DRVSTR_MAX,     /* LED initially off             */
        Board_KEY_SELECT | PIN_INPUT_EN  | PIN_PULLUP | PIN_HYSTERESIS,                             /* Button is active low          */
        Board_KEY_DOWN   | PIN_INPUT_EN  | PIN_PULLUP | PIN_HYSTERESIS,                             /* Button is active low          */
        Board_UART_TX    | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH   | PIN_PUSHPULL,                     /* UART TX pin at inactive level */
        Board_UART_RX    | PIN_GPIO_OUTPUT_EN |PIN_GPIO_HIGH |PIN_PUSHPULL,
    //    Board_I2C0_SDA0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW   | PIN_PUSHPULL | PIN_DRVSTR_MAX,
    //    Board_I2C0_SCL0  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW   | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        Board_3V3_EN | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH   | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        PIN_TERMINATE                                                                               /* Terminate list                */
    };
    /*============================================================================*/
    /*
     *  ============================= UART begin ===================================
    */
    #if defined(__TI_COMPILER_VERSION__)
    #pragma DATA_SECTION(UART_config, ".const:UART_config")
    #pragma DATA_SECTION(uartCC26XXObjects, ".const:uartCC26XXObjects")
    #endif
    /* Include drivers */
    #include <ti/drivers/UART.h>
    #include <ti/drivers/uart/UARTCC26XX.h>
    /* UART objects */
    UARTCC26XX_Object uartCC26XXObjects[CC2650_UARTCOUNT];
    /* UART hardware parameter structure, also used to assign UART pins */
    const UARTCC26XX_HWAttrs uartCC26XXHWAttrs[CC2650_UARTCOUNT] = {
        {    /* CC2650_UART0 */
            .baseAddr = UART0_BASE,
            .intNum = INT_UART0,
            .powerMngrId = PERIPH_UART0,
            .txPin = Board_UART_TX,
            .rxPin = Board_UART_RX,
            .ctsPin = PIN_UNASSIGNED,
            .rtsPin = PIN_UNASSIGNED
        },
    };
    /* UART configuration structure */
    const UART_Config UART_config[] = {
        { &UARTCC26XX_fxnTable, &uartCC26XXObjects[0], &uartCC26XXHWAttrs[0] },
        { NULL, NULL, NULL }
    };
    /*
     *  ============================= UART end =====================================
    */
    /*
     *  ============================= UDMA begin ===================================
    */
    /* Place into subsections to allow the TI linker to remove items properly */
    #if defined(__TI_COMPILER_VERSION__)
    #pragma DATA_SECTION(UDMACC26XX_config, ".const:UDMACC26XX_config")
    #pragma DATA_SECTION(udmaHWAttrs, ".const:udmaHWAttrs")
    #endif
    /* Include drivers */
    #include <ti/drivers/dma/UDMACC26XX.h>
    /* UDMA objects */
    UDMACC26XX_Object UdmaObjects[CC2650_UDMACOUNT];
    /* UDMA configuration structure */
    const UDMACC26XX_HWAttrs udmaHWAttrs[CC2650_UDMACOUNT] = {
        { UDMA0_BASE, INT_UDMAERR, PERIPH_UDMA },
    };
    /* UDMA configuration structure */
    const UDMACC26XX_Config UDMACC26XX_config[] = {
        {&UdmaObjects[0], &udmaHWAttrs[0]},
        {NULL, NULL},
    };
    /*
     *  ============================= UDMA end =====================================
    */
    /*
     *  ========================== SPI DMA begin ===================================
    */
    /* Place into subsections to allow the TI linker to remove items properly */
    #if defined(__TI_COMPILER_VERSION__)
    #pragma DATA_SECTION(SPI_config, ".const:SPI_config")
    #pragma DATA_SECTION(spiCC26XXDMAHWAttrs, ".const:spiCC26XXDMAHWAttrs")
    #endif
    /* Include drivers */
    #include <ti/drivers/spi/SPICC26XXDMA.h>
    /* SPI objects */
    SPICC26XX_Object spiCC26XXDMAobjects[CC2650_SPICOUNT];
    /* SPI configuration structure, describing which pins are to be used */
    const SPICC26XX_HWAttrs spiCC26XXDMAHWAttrs[CC2650_SPICOUNT] = {
        {   /* SRF06EB_CC2650_SPI0 */
            .baseAddr = SSI0_BASE,
            .intNum = INT_SSI0,
            .defaultTxBufValue = 0,
            .powerMngrId = PERIPH_SSI0,
            .rxChannelBitMask = 1<<UDMA_CHAN_SSI0_RX,
            .txChannelBitMask = 1<<UDMA_CHAN_SSI0_TX,
            .mosiPin = Board_SPI0_MOSI,
            .misoPin = Board_SPI0_MISO,
            .clkPin = Board_SPI0_CLK,
            .csnPin = Board_SPI0_CSN
        },
        {   /* SRF06EB_CC2650_SPI1 */
            .baseAddr = SSI1_BASE,
            .intNum = INT_SSI1,
            .defaultTxBufValue = 0,
            .powerMngrId = PERIPH_SSI1,
            .rxChannelBitMask = 1<<UDMA_CHAN_SSI1_RX,
            .txChannelBitMask = 1<<UDMA_CHAN_SSI1_TX,
            .mosiPin = Board_SPI1_MOSI,
            .misoPin = Board_SPI1_MISO,
            .clkPin = Board_SPI1_CLK,
            .csnPin = Board_SPI1_CSN
        }
    };
    /* SPI configuration structure */
    const SPI_Config SPI_config[] = {
        /* SRF06EB_CC2650_SPI0 */
        {&SPICC26XXDMA_fxnTable, &spiCC26XXDMAobjects[0], &spiCC26XXDMAHWAttrs[0]},
        /* SRF06EB_CC2650_SPI1 */
        {&SPICC26XXDMA_fxnTable, &spiCC26XXDMAobjects[1], &spiCC26XXDMAHWAttrs[1]},
        {NULL, NULL, NULL},
    };
    /*
     *  ========================== SPI DMA end =====================================
    */
    /*
     *  ========================== Crypto begin =======================================
     *  NOTE: The Crypto implementaion should be considered experimental and not validated!
    */
    /* Place into subsections to allow the TI linker to remove items properly */
    #if defined(__TI_COMPILER_VERSION__)
    #pragma DATA_SECTION(CryptoCC26XX_config, ".const:CryptoCC26XX_config")
    #pragma DATA_SECTION(cryptoCC26XXHWAttrs, ".const:cryptoCC26XXHWAttrs")
    #endif
    /* Include drivers */
    #include <ti/drivers/crypto/CryptoCC26XX.h>
    /* Crypto objects */
    CryptoCC26XX_Object cryptoCC26XXObjects[CC2650_CRYPTOCOUNT];
    /* Crypto configuration structure, describing which pins are to be used */
    const CryptoCC26XX_HWAttrs cryptoCC26XXHWAttrs[CC2650_CRYPTOCOUNT] = {
        {CRYPTO_BASE, INT_CRYPTO, PERIPH_CRYPTO}
    };
    /* Crypto configuration structure */
    const CryptoCC26XX_Config CryptoCC26XX_config[] = {
        {&cryptoCC26XXObjects[0], &cryptoCC26XXHWAttrs[0]},
        {NULL, NULL}
    };
    /*
     *  ========================== Crypto end =========================================
    */
    ///*I2C related configuration**/
    ///* Place into subsections to allow the TI linker to remove items properly */
    //#if defined(__TI_COMPILER_VERSION__)
    //#pragma DATA_SECTION(i2cCC26XX_config, ".const:i2cCC26XX_config")
    //#pragma DATA_SECTION(i2cCC26XXHWAttrs, ".const:i2cCC26XXHWAttrs")
    //#endif
    //
    ///* Include drivers */
    //#include <ti/drivers/I2C.h>
    //#include <ti/drivers/I2C/i2cCC26XX.h>
    //
    ///* Crypto objects */
    //I2CCC26XX_Object i2cCC26XXObjects[CC2650_I2CCOUNT];
    //
    ///* Crypto configuration structure, describing which pins are to be used */
    //const I2CCC26XX_HWAttrs i2cCC26XXHWAttrs[CC2650_I2CCOUNT] = {
    //    {I2C0_BASE, INT_I2C, PERIPH_I2C0,Board_SDA,Board_SCL}
    //};
    //
    ///* Crypto configuration structure */
    //const I2C_Config I2C_config[] = {
    //    {&I2CCC26XX_fxnTable,&i2cCC26XXObjects[0], &i2cCC26XXHWAttrs[0]},
    //    {NULL,NULL, NULL}
    //};
    /*
     *  ============================= I2C Begin=====================================
    */
    /* Place into subsections to allow the TI linker to remove items properly */
    #if defined(__TI_COMPILER_VERSION__)
    #pragma DATA_SECTION(I2C_config, ".const:I2C_config")
    #pragma DATA_SECTION(i2cCC26xxHWAttrs, ".const:i2cCC26xxHWAttrs")
    #endif
    /* Include drivers */
    #include <ti/drivers/i2c/I2CCC26XX.h>
    /* I2C objects */
    I2CCC26XX_Object i2cCC26xxObjects[CC2650_I2CCOUNT];
    /* I2C configuration structure, describing which pins are to be used */
    const I2CCC26XX_HWAttrs i2cCC26xxHWAttrs[CC2650_I2CCOUNT] = {
        {
            .baseAddr = I2C0_BASE,
            .powerMngrId = PERIPH_I2C0,
            .intNum = INT_I2C,
            .sdaPin = Board_I2C0_SDA0,
            .sclPin = Board_I2C0_SCL0,
        }
    };
    const I2C_Config I2C_config[] = {
        {&I2CCC26XX_fxnTable, &i2cCC26xxObjects[0], &i2cCC26xxHWAttrs[0]},
        {NULL, NULL, NULL}
    };
  • Hi,

    It would help if you can show an example on how you try to control the pins (refer to the PIN driver documentation for examples)
    For the 5x5 / 4x4 devices you also need to remove the compiler preprocessor symbol TI_DRIVERS_LCD_INCLUDED.
  • Hi,

    I am attaching the i2C project I am using. Please help me  out.  I tried adding TI_DRIVERS_I2C_INCLUDED, removed xTI_DRIVERS_LCD_INCLUDED and played around with board.c and board.h files. Where am I going wrong in configurationcc2650_5xd.zipcc2650_5xd.zip