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.

CC3220MODA: Multiplexed UART1 pins not working

Part Number: CC3220MODA
Other Parts Discussed in Thread: CC3220SF, CC3220MOD

Hi, 

I am using CC3220MODA for wireless data transfer application, where i will get data from another controller(interfaced to flash) through UART.

I am using "nework_terminal" program of sdk_1.5.0.6 and it is programmed to UART0. when i change the UART pins (UART0 to UART1), it is not working. Please suggest what else i need to do, because my circuit is designed to work on UART1 (GPIO3 & GPIO4). Following are the changes made "nework_terminal" program of sdk_1.5.0.6.

uart_term.c--> InitTerm()--.>
----------- uartHandle = UART_open(Board_UART0, &uartParams);   is changed to uartHandle = UART_open(Board_UART1, &uartParams);
CC3220SF_LAUNCHXL.c-->
PowerCC32XX_ParkInfo parkInfo[ ] -->
{PowerCC32XX_PIN58, PowerCC32XX_WEAK_PULL_DOWN_STD}, /* GPIO3               */
{PowerCC32XX_PIN59, PowerCC32XX_WEAK_PULL_DOWN_STD}, /* GPIO4               */
are changed to
{PowerCC32XX_PIN58, PowerCC32XX_WEAK_PULL_UP_STD}, /* GPIO3               */
{PowerCC32XX_PIN59, PowerCC32XX_WEAK_PULL_UP_STD}, /* GPIO4               */
----------------

        .baseAddr = UARTA1_BASE,
        .intNum = INT_UARTA1,
        .intPriority = (~0),
        .flowControl = UARTCC32XX_FLOWCTRL_NONE,
        .ringBufPtr  = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1],
        .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]),
        .rxPin = UARTCC32XX_PIN_08_UART1_RX,
        .txPin = UARTCC32XX_PIN_07_UART1_TX,
        .ctsPin = UARTCC32XX_PIN_UNASSIGNED,
        .rtsPin = UARTCC32XX_PIN_UNASSIGNED
   
above lines changed as
        .baseAddr = UARTA1_BASE,
        .intNum = INT_UARTA1,
        .intPriority = (~0),
        .flowControl = UARTCC32XX_FLOWCTRL_NONE,
        .ringBufPtr  = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1],
        .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]),
        .rxPin = UARTCC32XX_PIN_59_UART1_RX,
        .txPin = UARTCC32XX_PIN_58_UART1_TX,
        .ctsPin = UARTCC32XX_PIN_UNASSIGNED,
        .rtsPin = UARTCC32XX_PIN_UNASSIGNED
Even after changing above lines i am getting any output, so please suggest me what should i do, if want use GPIO3 & GPIO4 as UART communication to host processor.
  • Hi Umasankar,

    Please note that on the module this configuration maps to pins 48 and 49 on the module: www.ti.com/.../cc3220mod.pdf
    If you are using the Launchpad, please check the schematic for the launchpad, as these lines are also shared with ADC, and thus have opamps connected by default.

    -Aaron
  • hi,

    i am not using launch pad, i made my custom board. schematic is similar to the ckt available in page:74, www.ti.com/.../cc3220mod.pdf
  • Your uart base address looks like its not changing from UARTA1_BASE, is this correct? I thought you were changing from UART 0
  • const UARTCC32XX_HWAttrsV1 uartCC3220SHWAttrs[CC3220SF_LAUNCHXL_UARTCOUNT] = {
    {
    .baseAddr = UARTA0_BASE,
    .intNum = INT_UARTA0,
    .intPriority = (~0),
    .flowControl = UARTCC32XX_FLOWCTRL_NONE,
    .ringBufPtr = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART0],
    .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART0]),
    .rxPin = UARTCC32XX_PIN_57_UART0_RX,
    .txPin = UARTCC32XX_PIN_55_UART0_TX,
    .ctsPin = UARTCC32XX_PIN_UNASSIGNED,
    .rtsPin = UARTCC32XX_PIN_UNASSIGNED
    },
    {
    .baseAddr = UARTA1_BASE,
    .intNum = INT_UARTA1,
    .intPriority = (~0),
    .flowControl = UARTCC32XX_FLOWCTRL_NONE,
    .ringBufPtr = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1],
    .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]),
    .rxPin = UARTCC32XX_PIN_59_UART1_RX,
    .txPin = UARTCC32XX_PIN_58_UART1_TX,
    .ctsPin = UARTCC32XX_PIN_UNASSIGNED,
    .rtsPin = UARTCC32XX_PIN_UNASSIGNED
    }
    };

    above is the code i am using, when it is UART0_BASE in inint_term() it working fine but when i changed to UART1_BASE it is not working.

    "uartHandle = UART_open(Board_UART0, &uartParams);" is changed to " uartHandle = UART_open(Board_UART1, &uartParams);"
  • If you configure these two pins as GPIO, are you able to toggle them? Could help eliminate if hardware issue
  • I have been trying to get UART1 working on the CC32xx device for a few days without any luck to find this recent post having the exact same issue.  I am using a different port however and still it fails.  I don't believe it is a hardware problem since I am using different ports.

    const UARTCC32XX_HWAttrsV1 uartCC3220SHWAttrs[CC3220S_LAUNCHXL_UARTCOUNT] = {
        {
            .baseAddr = UARTA0_BASE,
            .intNum = INT_UARTA0,
            .intPriority = (~0),
            .flowControl = UARTCC32XX_FLOWCTRL_NONE,
            .ringBufPtr  = uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART0],
            .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART0]),
            .rxPin = UARTCC32XX_PIN_57_UART0_RX,
            .txPin = UARTCC32XX_PIN_55_UART0_TX,
            .ctsPin = UARTCC32XX_PIN_UNASSIGNED,
            .rtsPin = UARTCC32XX_PIN_UNASSIGNED,
            .errorFxn = NULL
        },
        {
            .baseAddr = UARTA1_BASE,
            .intNum = INT_UARTA1,
            .intPriority = (~0),
            .flowControl = UARTCC32XX_FLOWCTRL_NONE,
            .ringBufPtr  = uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART1],
            .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220S_LAUNCHXL_UART1]),
            .rxPin = UARTCC32XX_PIN_02_UART1_RX,
            .txPin = UARTCC32XX_PIN_01_UART1_TX,
            .ctsPin = UARTCC32XX_PIN_UNASSIGNED,
            .rtsPin = UARTCC32XX_PIN_UNASSIGNED,
            .errorFxn = NULL
        }

    I traced through the debugger code and it crashes to the faultISR() function while trying to execute the initHw(...) function in the SimpleLink SDK.  The debugger jumps around but it appears it is the function UARTIntClear.  I checked the baseAddr and it is 0x4000.D000.  I am using the latest version of everything thinking that was the issue (SDK v1.60, CCS 7.2.0).

    It doesn't crash if I set the UART_open function to use Board_UART0 but that port isn't connected to any UART on my board.  I have to use pins 01 and 02 or (3/4 on the module).

    static void initHw(UART_Handle handle)
    {
        ClockP_FreqHz                 freq;
        UARTCC32XX_Object            *object = handle->object;
        UARTCC32XX_HWAttrsV1 const   *hwAttrs = handle->hwAttrs;
    
        /* Enable UART and its interrupt. */
        MAP_UARTIntClear(hwAttrs->baseAddr, UART_INT_TX | UART_INT_RX |
                UART_INT_RT);
        MAP_UARTEnable(hwAttrs->baseAddr);
    
        /* Set the FIFO level to 7/8 empty and 4/8 full. */
        MAP_UARTFIFOLevelSet(hwAttrs->baseAddr, UART_FIFO_TX1_8, UART_FIFO_RX1_8);
    ...

  • Any movement on this?  I have spent the day trying all sorts of things and I can't get UART1 functioning at all.  I even left the default code of PIns 7 and 8 in there and it still crashes.  I tried stepping over some of the functions too (since i don't know how to rebuild changes within the UARTCC32XX.c file). Always crashes on UART functions.

  • Yes, this is hardware issue. I made another board and verified, now it is working.