BCM4390 UART2_CTS sinking 6 mA

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
JoEy_2146646
Level 2
Level 2
First like received Welcome!

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.

0 Likes
1 Solution
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

jre

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 (mmedina​) to escalate this request into our level 2 and 3 engineering teams.

View solution in original post

0 Likes
5 Replies
GauravS_31
Moderator
Moderator
Moderator
10 questions asked 250 solutions authored 250 sign-ins

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.

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.

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.

grsr

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?

0 Likes
MichaelF_56
Moderator
Moderator
Moderator
250 sign-ins 25 comments on blog 10 comments on blog

jre

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 (mmedina​) to escalate this request into our level 2 and 3 engineering teams.

0 Likes
JoEy_2146646
Level 2
Level 2
First like received Welcome!

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);