BCM4390 gpio issue

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

cross mob
Anonymous
Not applicable

When setting gpio input, I didn't get gpio interrupt after setting

gpio_keypad_enable().

When setting gpio output for LED on/off control,

calling wiced_gpio_output_low() / wiced_gpio_output_high() does not work.

Note, I remember the same testing code was working on BCM943362WCD4 platform,

this seems something wroing in BCM439x MCU low-level code.

Can someone take a look at this issue?

Thanks.

0 Likes
18 Replies
Anonymous
Not applicable

With 4390,

  We have the same problem in controlling GPIO B

  GPIO B is not wotking

  By seeing the Module's reference schematic, GPIO B seems to be worked.

  But by control GPIO B via API, it does not works

  Port A is working well.

  We have several issues in new SDK and 4390 module.

 

  I heard that new SDK will be release soon so we stopped job.

Thanks

0 Likes

manuslan

The GPIO B bank is not programmable and also in DS we have an errata of GPIO B being worked on.

sam.lin

Could you specify if you are not able to toggle few GPIO pins, could you let us know which GPIO pins you are seeing issue, such we can reproduce it at our end and help you solve the issue.

0 Likes
Anonymous
Not applicable

Hi vik86,

We test LED control (gpio output) with:

PA02 and PA04  ( Also found the same issue on PA07 and PA09)

below code does not turn on the led (led1/led2 is pa02/pa04):

    platform_gpio_init( &platform_gpio_pins[WICED_LED1], OUTPUT_PUSH_PULL );

    platform_gpio_init( &platform_gpio_pins[WICED_LED2], OUTPUT_PUSH_PULL );

    platform_gpio_output_high( &platform_gpio_pins[WICED_LED1] );

    platform_gpio_output_high( &platform_gpio_pins[WICED_LED2] );

Test button control (gpio input) with:

PB00 and PB01

It's a bit strange, we found it needs adding external resistance for PB00 and PB01.

Otherwise, the wiced_gpio_input_get() does not return correct status.

BTW, where to find the errata?

0 Likes

Ok thnx sam.lin. Shall try working on the gpio issue and let you know.

Errata is still not finalized, its in the process. Once we have it final shall let you know.

thnx

vik86

0 Likes
Anonymous
Not applicable

Hi vik86,

For button control test, wiced_gpio_input_get() can return correct status

after adding external pullup resistance.

But we don't get any interrupt when the status changed.

I test it with gpio_keypad_enable() and the gpio keypad handler callback is not called.

I think this is related to this issue as well.

Thanks.

0 Likes
Anonymous
Not applicable

To check my mistakes,

   I changed to APPS_I2S_XX_XX as GPIO  output .

  This is not working also,  I applied to snip.gpio-xxxxxxxxxxxxxx in 4390 Board.

   It is not working at all.

Question:

  1. Where does this issue make ?

        1) 4390 ?  

        2) BCM94390WCD2_2 ( we have this module )

               In SDK 3.1 , module schematic is  BCM94390WCD2_3.

2.  Which schematic can be referred?

       We are going to make module and EVB for our platform references.

       Please advise valid 4390 module references and EVB schematic.

       we will follow your advise and buy new references module and evb.

We are wondering all will working well or not.

TKS  

0 Likes

Hi Alex.Yoon

Just to clarify you have no issues toggling GPIO-A LED's?

and as I mentioned earlier the GPIO-B cannot be programmed.

To check my mistakes,

   I changed to APPS_I2S_XX_XX as GPIO  output .

    This is not working also,  I applied to snip.gpio-xxxxxxxxxxxxxx in 4390 Board.

   It is not working at all.

  Could you explain this again, I could not understand ?

Question:

  1. Where does this issue make ? Make as in the make file ?

        1) 4390 ?  

        2) BCM94390WCD2_2 ( we have this module )

               In SDK 3.1 , module schematic is  BCM94390WCD2_3.

2.  Which schematic can be referred?

       We are going to make module and EVB for our platform references.

       Please advise valid 4390 module references and EVB schematic.

       we will follow your advise and buy new references module and evb.

Kindly get the BCM94390WCD2 module

thnx,

vik86

0 Likes

Hi Sam Lin,

I was able to run the gpio app on WICED 3.1.0 and it ran accordingly. I was able to toggle GPIO's turn on the LED's and also the buttons on breakaway board of BCM94390WCD2. Could you run the gpio app that is present in snip and confirm ?

I tried this as well

int i;

    /* Flash the LEDs */

    for ( i = 0; i < 50; i++ )

    {

        wiced_gpio_output_high(WICED_LED1);

        wiced_gpio_output_low(WICED_LED2);

        wiced_rtos_delay_milliseconds( 300 );

        wiced_gpio_output_low(WICED_LED1);

        wiced_gpio_output_high(WICED_LED2);

        wiced_rtos_delay_milliseconds( 300 );

    }

    wiced_gpio_output_low(WICED_LED1);

    wiced_gpio_output_low(WICED_LED2);

in 4390 platform.h

#define WICED_LED1    ( WICED_GPIO_10 )
#define WICED_LED2    ( WICED_GPIO_8 )
#define WICED_BUTTON1 ( WICED_GPIO_9 )
#define WICED_BUTTON2 ( WICED_GPIO_7 )

#define WICED_THERMISTOR  ( WICED_ADC_NONE )

Thanks,

vik86

Anonymous
Not applicable

Hi vik86,

For LED1 and LED2 gpio output test,

I test again with the gpio snip and it looks work if using PA09 and PA07.

Then I test all GPIO-A pins and found that it does not work for some pins.

Is this a know issue?

// My gpio output test code

int i, gpio;

for (gpio = WICED_GPIO_1; gpio < WICED_GPIO_24; gpio++)

        wiced_gpio_init(gpio, OUTPUT_PUSH_PULL);

for ( i = 0; i < 500; i++ ) {

        for (gpio = WICED_GPIO_1; gpio < WICED_GPIO_24; gpio++) {

                wiced_gpio_output_high(gpio);

                wiced_rtos_delay_milliseconds(300);

                wiced_gpio_output_low(gpio);

                wiced_rtos_delay_milliseconds(300);

        }

}

// Test result:

// fails on GPIO_2 ~ GPIO_6 (PA02/PA03/PA04/PA05)

// fails on GPIO_15 ~ GPIO_19 (PB02/PB03/PB04/PB05/PB06)

// Note: They are all jtag multi-function pins.

// Does that mean we cannot use these pins for GPIO?

BTW, you mentioned that GPIO-B cannot be programmed.

Do you mean we cannot use GPIO-B for button input or led output?

We have tesed using GPIO-B pins for input.

The issue is we don't get interrupt when input status change.

Can you confirm if you can see the same issue?

0 Likes

Hi Sam.Lin

For LED1 and LED2 gpio output test,

I test again with the gpio snip and it looks work if using PA09 and PA07.

Yes the LED1 and LED2 are connected to these GPIO's  PA09 and PA07.

Then I test all GPIO-A pins and found that it does not work for some pins.

Is this a know issue?

// My gpio output test code

int i, gpio;

for (gpio = WICED_GPIO_1; gpio < WICED_GPIO_24; gpio++)

        wiced_gpio_init(gpio, OUTPUT_PUSH_PULL);

for ( i = 0; i < 500; i++ ) {

        for (gpio = WICED_GPIO_1; gpio < WICED_GPIO_24; gpio++) {

                wiced_gpio_output_high(gpio);

                wiced_rtos_delay_milliseconds(300);

                wiced_gpio_output_low(gpio);

                wiced_rtos_delay_milliseconds(300);

        }

}

You Can probe at different test points for each GPIO using CRO and test these GPIO.

The WICED_GPIO_1 to WICED_GPIO_24 does not mean all GPIO's these are pin labels. If you read the

BCM94390WCD2 platform pin definitions in platforms.h for BCM94390WCD2 you can see each of the pin's there.

// Test result:

// fails on GPIO_2 ~ GPIO_6 (PA02/PA03/PA04/PA05)

// fails on GPIO_15 ~ GPIO_19 (PB02/PB03/PB04/PB05/PB06)

// Note: They are all jtag multi-function pins.

// Does that mean we cannot use these pins for GPIO?

BTW, you mentioned that GPIO-B cannot be programmed.

Do you mean we cannot use GPIO-B for button input or led output?

We have tesed using GPIO-B pins for input. They are only for input. The new data sheet would be more specific on this

The issue is we don't get interrupt when input status change.

Can you confirm if you can see the same issue? Shall confirm once more

thnx

vik86

0 Likes
Anonymous
Not applicable

vik86 wrote:

You Can probe at different test points for each GPIO using CRO and test these GPIO.

The WICED_GPIO_1 to WICED_GPIO_24 does not mean all GPIO's these are pin labels. If you read the

BCM94390WCD2 platform pin definitions in platforms.h for BCM94390WCD2 you can see each of the pin's there.

// Test result:

// fails on GPIO_2 ~ GPIO_6 (PA02/PA03/PA04/PA05)

We do test these GPIOs with CRO.

And what we care is mainly the WICED_GPIO_3 ~ WICED_GPIO_6 (PA02 ~ PA05).

We want to use these pins for gpio output.

Our test shows it does not work running below code:

int gpio;

// only test WICED_GPIO_3 ~ WICED_GPIO_6 as gpio output

for (gpio = WICED_GPIO_3; gpio <= WICED_GPIO_6; gpio++)

        wiced_gpio_init(gpio, OUTPUT_PUSH_PULL);

while(1) {

        for (gpio = WICED_GPIO_3; gpio <= WICED_GPIO_6; gpio++)

                wiced_gpio_output_high(gpio);

        wiced_rtos_delay_milliseconds(300);

        for (gpio = WICED_GPIO_3; gpio <= WICED_GPIO_6; gpio++)

                wiced_gpio_output_low(gpio);

        wiced_rtos_delay_milliseconds(300);

}

0 Likes

I did notice your issue, I 'm working with the engineers to figure this out. Sorry for the delay, shall let you know soon.

Thnx,

vik86

Anonymous
Not applicable

Hi vik86,

I just verified these issues on sdk-3.1.1 and found both issues still happens on SDK-3.1.1.

(use jtag multi-function pins as gpio output does not work,  no interrupt when input status change)

BTW, I don't find any errata or datasheet update so far.

Thanks.

0 Likes

Has there been any solution to this problem?

0 Likes
user_2199751
Level 2
Level 2
First like given

Was there any response to this issue from BRCM?

We have checked the SDK3.1.2 but the issue seemed to be still there.

Hope to have some solutions for this issue.

Thanks

Won Sang Cho

0 Likes
Anonymous
Not applicable

I don't recall any further response to this issue from BRCM.

Maybe you can test it again with SDK 3.3.1 and report if it works or not.

0 Likes
Anonymous
Not applicable

Hi sam.

At the first, you mentioned that the fucntion "gpio_keypad_enable()" does not work.

I have the same issue. After setting input gpio, the function does not work.

SDK.3.3.1 is still same. did you solve this issue?

0 Likes
Anonymous
Not applicable

I think you had better contact your brodcom agent for this issue.

0 Likes