5 Replies Latest reply on Oct 26, 2017 9:58 AM by JoEy_2146646

    BCM4390 UART2_CTS sinking 6 mA

    JoEy_2146646

      When configuring UART2 to use flow control on the BCM4390, we see the current into this input being way too high, about 6 mA.

       

      The I/O should be configured as floating input, and it looks like we're doing everything we should do, but WICED is somehow configuring that pin to have a strong pull-down or actually driving it low internally.   When we configure the pin WICED_GPIO_7 as a floating input, it draws almost no current.

       

      Can you recommend a fix or look into this?  This is with WICED-3.7 as well as WICED-3.6.

       

      Our code to initialize calls wiced_uart_init() with the config.flow_control = FLOW_CONTROL_CTS_RTS.

        • 1. Re: BCM4390 UART2_CTS sinking 6 mA
          GauravS_31

          From the description, it looks like you are using BCM94390WCD2 platform. If you check the pin mapping in platform.h in SDK 3.7.0, you will find that WICED_GPIO_7 is mapped to pin 43 of the chip. However, when you check the BCM4390 datasheet, the same pin 43 has been multiplexed to UART2_RTS and not UART2_CTS. In fact the pins UART2_CTS and UART2_RTS have been interchanged in Wiced 3.7.0. So go to platform.c and assign WICED_GPIO_9 to UART2_CTS and WICED_GPIO_7 to UART2_RTS and check if this helps.

          1 of 1 people found this helpful
          • 2. Re: BCM4390 UART2_CTS sinking 6 mA
            MichaelF_56

            JoEy_2146646

             

            Unfortunately, the BCM4390 platform is not supported within the broad market and here on the Community (only through partners like yourself), so you will want to use our internal case management system and ask your Regional Marketing account manager (michaelm_41) to escalate this request into our level 2 and 3 engineering teams.

            • 3. Re: BCM4390 UART2_CTS sinking 6 mA
              JoEy_2146646

              Thank you for the reply.  We're not using that EVB, but the remapping between releases is interesting to note, and gives me something to check.

              • 4. Re: BCM4390 UART2_CTS sinking 6 mA
                AxLi_1746341

                grsr wrote:

                 

                From the description, it looks like you are using BCM94390WCD2 platform. If you check the pin mapping in platform.h in SDK 3.7.0, you will find that WICED_GPIO_7 is mapped to pin 43 of the chip. However, when you check the BCM4390 datasheet, the same pin 43 has been multiplexed to UART2_RTS and not UART2_CTS. In fact the pins UART2_CTS and UART2_RTS have been interchanged in Wiced 3.7.0. So go to platform.c and assign WICED_GPIO_9 to UART2_CTS and WICED_GPIO_7 to UART2_RTS and check if this helps.

                GauravS_31

                Checking the datasheet again and I found that in BCM94390WCD2 platform:

                UART2_TX/UART2_TX are wrong. (tx/rx swapped)

                 

                Below is the BCM94390WCD2 uart2 platform code in sdk-3.7.0-7 which is wrong.

                 

                    [WICED_UART_2] =

                    {

                        .port    = UART2,

                        .tx_pin  = &platform_gpio_pins[WICED_GPIO_10],

                        .rx_pin  = &platform_gpio_pins[WICED_GPIO_8],

                        .cts_pin = &platform_gpio_pins[WICED_GPIO_7],

                        .rts_pin = &platform_gpio_pins[WICED_GPIO_9],

                 

                Can you confirm what is the correct setting now?

                • 5. Re: BCM4390 UART2_CTS sinking 6 mA
                  JoEy_2146646

                  We found that we can work around this after wiced_uart_init() by reconfiguring the CTS input GPIO with platform_pin_init() to turn off its output driver:

                   

                                  const platform_uart_t *pin;

                                  platform_pin_gpio_config_t gpio;

                   

                                  memset(&gpio, 0, sizeof(gpio));

                                  gpio.output_disable = 1;

                   

                                  pin = &platform_uart_peripherals[WICED_UART_2];

                                  platform_pin_init(pin->cts_pin->pin, gpio);