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.

CC3220: Wrong UART0 pins are assigned by PinMuxTool

Part Number: CC3220

Hi,

My customer reported a strange behavior in PinMux Tool (cloud version 4.0.1510).

Target device is CC3220SF (Default package).
When they simply added UART1 to the system, the tool automatically added UART0 with incorrect pin assignments.
Please see below snapshot.



Below two pins are assigned to UART0, but there is no UART0_RX function for PIN_08.
And there is no reason UART1_TX is assigned to UART0.

       .rxPin = UARTCC32XX_PIN_08_UART0_RX,

       .txPin = UARTCC32XX_PIN_07_UART1_TX,

If customer uses this output file (CC3220SF_LAUNCHXL.c), build fails with errors of course.

Thanks and regards,
KoT

  • Hello,

    When I do the same and use the same cloud version, picking UART1 only as you did, I get:

    const UARTCC32XXDMA_HWAttrsV1 uartCC3220SDmaHWAttrs[CC3220SF_LAUNCHXL_UARTCOUNT] = {
        {
            .baseAddr = UARTA0_BASE,
            .intNum = INT_UARTA0,
            .intPriority = (~0),
            .rxChannelIndex = UDMA_CH8_UARTA0_RX,
            .txChannelIndex = UDMA_CH9_UARTA0_TX,
            .rxPin = UARTCC32XXDMA_PIN_08_UART1_RX,
            .txPin = UARTCC32XXDMA_PIN_07_UART1_TX
            
        },
        {
            .baseAddr = UARTA1_BASE,
            .intNum = INT_UARTA1,
            .intPriority = (~0),
            .rxChannelIndex = UDMA_CH10_UARTA1_RX,
            .txChannelIndex = UDMA_CH11_UARTA1_TX,
            .rxPin = UARTCC32XXDMA_PIN_57_UART1_RX,
            .txPin = UARTCC32XXDMA_PIN_55_UART1_TX
        }
    };

    If I pick UART0 as pins 55/57 and UART0 as pins 07/08, I get:

    /* UART configuration structure */
    const UARTCC32XXDMA_HWAttrsV1 uartCC3220SDmaHWAttrs[CC3220SF_LAUNCHXL_UARTCOUNT] = {
        {
            .baseAddr = UARTA0_BASE,
            .intNum = INT_UARTA0,
            .intPriority = (~0),
            .rxChannelIndex = UDMA_CH8_UARTA0_RX,
            .txChannelIndex = UDMA_CH9_UARTA0_TX,
            .rxPin = UARTCC32XXDMA_PIN_57_UART0_RX,
            .txPin = UARTCC32XXDMA_PIN_55_UART0_TX
            
        },
        {
            .baseAddr = UARTA1_BASE,
            .intNum = INT_UARTA1,
            .intPriority = (~0),
            .rxChannelIndex = UDMA_CH10_UARTA1_RX,
            .txChannelIndex = UDMA_CH11_UARTA1_TX,
            .rxPin = UARTCC32XXDMA_PIN_08_UART1_RX,
            .txPin = UARTCC32XXDMA_PIN_07_UART1_TX
        }
    };

    So i do not see what you are seeing, which is strange.

    Regards,

    Shlomi

  • Hi Shlomi,

    The differences are what you are seeing is;

    UARTCC32XXDMA_HWAttrsV1

    I am checking;

    UARTCC32XX_HWAttrsV1

    Anyway, the tool generates wrong pins for both cases.
    In your code, below Pins are assigned for UART0, but they are UART1 pins.

           .rxPin = UARTCC32XXDMA_PIN_08_UART1_RX,

           .txPin = UARTCC32XXDMA_PIN_07_UART1_TX

    Thanks and regards,
    KoT

  • Hello,

    I had a typo when writing: "If I pick UART0 as pins 55/57 and UART0 as pins 07/08".

    The 2nd one should be UART1 which is aligned with what you see.

    For the DMA part, I have just copied it instead of the #else part.

    Here it is for reference:

    #else
    #include <ti/drivers/uart/UARTCC32XX.h>
    
    UARTCC32XX_Object uartCC3220SObjects[CC3220SF_LAUNCHXL_UARTCOUNT];
    unsigned char uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UARTCOUNT][32];
    
    /* UART configuration structure */
    const UARTCC32XX_HWAttrsV1 uartCC3220SHWAttrs[CC3220SF_LAUNCHXL_UARTCOUNT] = {
        {
            .baseAddr = UARTA0_BASE,
            .intNum = INT_UARTA0,
            .intPriority = (~0),
            .flowControl = UART_FLOWCONTROL_NONE,
            .ringBufPtr  = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART0],
            .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART0]),
            .rxPin = UARTCC32XX_PIN_57_UART0_RX,
            .txPin = UARTCC32XX_PIN_55_UART0_TX
        },
        {
            .baseAddr = UARTA1_BASE,
            .intNum = INT_UARTA1,
            .intPriority = (~0),
            .flowControl = UART_FLOWCONTROL_NONE,
            .ringBufPtr  = uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1],
            .ringBufSize = sizeof(uartCC3220SRingBuffer[CC3220SF_LAUNCHXL_UART1]),
            .rxPin = UARTCC32XX_PIN_08_UART1_RX,
            .txPin = UARTCC32XX_PIN_07_UART1_TX
        }
    };
    
    const UART_Config UART_config[CC3220SF_LAUNCHXL_UARTCOUNT] = {
        {
            .fxnTablePtr = &UARTCC32XX_fxnTable,
            .object = &uartCC3220SObjects[CC3220SF_LAUNCHXL_UART0],
            .hwAttrs = &uartCC3220SHWAttrs[CC3220SF_LAUNCHXL_UART0]
        },
        {
            .fxnTablePtr = &UARTCC32XX_fxnTable,
            .object = &uartCC3220SObjects[CC3220SF_LAUNCHXL_UART1],
            .hwAttrs = &uartCC3220SHWAttrs[CC3220SF_LAUNCHXL_UART1]
        }
    };
    #endif /* TI_DRIVERS_UART_DMA */

    Shlomi