1 2 Previous Next 18 Replies Latest reply on Jul 15, 2015 6:45 AM by userc_2727

    BCM4390 gpio issue

      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.

        • 1. Re: BCM4390 gpio issue

          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

          • 2. Re: BCM4390 gpio issue
            VikramR_26

            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.

            • 3. Re: BCM4390 gpio issue

              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?

              • 4. Re: BCM4390 gpio issue
                VikramR_26

                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

                • 5. Re: BCM4390 gpio issue

                  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.

                  • 6. Re: BCM4390 gpio issue

                    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  

                    • 7. Re: BCM4390 gpio issue
                      VikramR_26

                      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

                      • 8. Re: BCM4390 gpio issue
                        VikramR_26

                        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

                        • 9. Re: BCM4390 gpio issue

                          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?

                          • 10. Re: BCM4390 gpio issue
                            VikramR_26

                            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

                            • 11. Re: BCM4390 gpio issue

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

                              }

                               

                               

                              • 12. Re: BCM4390 gpio issue
                                VikramR_26

                                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

                                1 of 1 people found this helpful
                                • 13. Re: BCM4390 gpio issue

                                  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.

                                  • 14. Re: BCM4390 gpio issue
                                    user_2177781

                                    Has there been any solution to this problem?

                                    1 2 Previous Next