1 2 3 Previous Next 41 Replies Latest reply on Dec 14, 2014 12:05 AM by userc_7511 Branched to a new discussion.

    Programming the BCM20736S on a custom PCB

    userc_4243

      I have a similar problem to this:

      Re: Information: Programming your BCM20732S-based board from an onboard UART header

      I am starting a new thread because it is for the BCM20736S. Here it goes:

       

      I built a board for the BCM20736S and the board seems functional. I built it up, it powers on, and I can see a factory pre-programmed 'Hello' application running from my iPhone using LightBlue. I can interact with the services and characteristic and read the manufacture string.

       

      I am trying to program this board with other apps using both the WICED SDK 2.0 virtualized in Windows XP and natively on Mac OS X. Neither seem to be able to program the board. I know my TX/RX lines connected correctly because I can see debug information over my FTDI breakout board from factory-programmed sample app.

       

      I have not taken any scope captures yet of RX/TX or SCL/SDA.

       

      1. P1 is pulled high with a 10k Pull-up.

      2. UART_RX (pin 18) is pulled high during power-up. (I can still see the hello application on my iPhone even when I do this)

      3. UART_TX is on pin 19.

       

      After power-up, I let UART_RX float or pull it low. I then press the reset button and double-click a sample app and to program/upload code. It always fails to detect the BCM20736S. Obviously it is working so I am not sure why I can't program. What am I doing wrong?

       

       

      I have test pads/break outs on all I/O's so I can probe anything needed.

        • 1. Re: Programming the BCM20736S on a custom PCB
          MichaelF_56

          The pullup on the HCI UART RX line should cause the part to come up in prgramming mode.

           

          If you can still see the app advertising with RX pulled high, then something isn't right.

           

          Note that the the download tools leveraged by the SDK havenot been tested with a VM. One thing to try is to find out which serial port the device is connected to and then use a terminal-like app (teraterm/hyperterm) to open the port on the host OS, then power cycle chip and disconnect the terminal app (so when 2073x boots up, we know that the host is driving its TX line high – not sure if a VM would do this).

           

          Ultimately, we want the host to drive its TXd (2073x’s RXd) high (not just a pull-up).

          • 2. Re: Programming the BCM20736S on a custom PCB
            userc_4243

            Can you put it in programming mode with pulling P0 high? Are there other ways I could test the RX/TX pins to make sure the pads are soldered on correctly?

             

            I built up the board in a toaster oven and don't want to reflow again until I check all other possibilities. Again, the chip is powering up and I can see the Hello application on my iPhone that seems to be pre-loaded.

             

             

             

            Thank You,

            George

            • 3. Re: Programming the BCM20736S on a custom PCB
              MichaelF_56

              I checked with the developers and unfortunately, the previously described method is the only one available.

              • 4. Re: Programming the BCM20736S on a custom PCB
                userc_4243

                On a board I have programming I am facing this error. When I reset it, it still doesn't program. This board was previously programming.

                 

                 

                Creating OTA images...

                Conversion complete

                OTA image footprint in NV is 3841 bytes

                 

                Detecting device...

                Device found

                 

                 

                Downloading application...

                ****Download failed - Press the reset button on the device and retry ****

                • 5. Re: Programming the BCM20736S on a custom PCB
                  userc_4243

                  http://embedded.cdistore.com/datasheets/embedded/EMRF-20736S-BOB%20Datasheet.pdf

                   

                  I am using a board built off this schematic. It has no UART pull-up that I can see and seems to use P0 from experimentation to get into programming mode. Is this not officially supported?

                  • 6. Re: Programming the BCM20736S on a custom PCB

                    Hi George,

                      The HCI_RX line is the key line to pay attention to.  The module has an internal Pull-Down on the HCI_RX line.  So if you connect your board to a USB-UART device it will inevitably have a pull-up that will pull the HCI_RX and HCI_TX lines high.  For the device to be programmed the HCI_RX line MUST be HIGH or Connected to the USB-UART_TX line.  After the device has been programmed you should disconnect the HCI_RX from the USB-UART_TX line and then RESET the module.  This will put it into Application Mode and you can view the Debug Output.

                     

                    Just so you are clear there is no pre-programmed application that comes programmed in the module.

                     

                    Regards,

                    Frank

                    • 7. Re: Programming the BCM20736S on a custom PCB
                      userc_4243

                      Hi Frank,

                       

                      Thanks for this explanation. So the button on P0 has nothing to do with the programming functionality--to be clear?

                       

                      About the pre-programmed application: I received samples. The module definitely has something on it as I have never programmed it. It comes up with the hello application. I can send you some screenshots from my iPhone if you would like to see. Do you know why this could be?

                       

                      With the board I have from Embedded Masters I am unsure why the board is being detected but not programming. Do you know? Have you seen this? I push the reset button and retried to no avail.

                       

                      Thanks,

                      George

                      • 8. Re: Programming the BCM20736S on a custom PCB
                        userc_4243

                        What I am getting when I program the Embedded Masters board:

                         

                        Creating OTA images...

                        Conversion complete

                        OTA image footprint in NV is 3841 bytes

                         

                        Detecting device...

                        Device found

                         

                         

                        Downloading application...

                        ****Download failed - Press the reset button on the device and retry ****

                        • 9. Re: Programming the BCM20736S on a custom PCB
                          MichaelF_56

                          There is detailed description here of how P0/RESET works on the TAG2/3 boards: Re: BCM20732S refuses to program

                          You do not need this switch in a production design.

                           

                          As Frank mentions, the state of the HCI_RX line is critical when the device initially comes up as that determines whether or not it will come up in Programming/Application mode.

                           

                          I will need to ask the manufacturing team about whether or not an application is loaded by default onto the module.  The answer used to be NO, but you are the second user that has determined there is indeed an app running on the module from the factory.

                           

                          nasac_2167841 ArvindS_76

                          • 10. Re: Programming the BCM20736S on a custom PCB
                            nasac_2167841

                            Yes - all modules are pre-programmed in the factory with a test application and this is the default state in which the modules are delivered to customers. This test application is only used for RF testing in the factory production line - but as user have experienced - this application is a very simple BT Smart application.

                            1 of 1 people found this helpful
                            • 11. Re: Programming the BCM20736S on a custom PCB

                              Hey George,

                                Check out the latest documentation for the EMRF-20736S-BOB it is rather comprehensive and covers the HCI_RX/Programming in good detail.  The module may have had something programmed into it as a means for them to do functional testing.  I am sure the cause of programming issues is still to do with the HCI_RX line and ensuring after you have either connected this to the USB-UART_TX line you have to hit RESET for the BCM20736S to register the change as it reads the HCI_RX line after every POR/RST event. 

                               

                              Regards,

                              Frank

                              • 12. Re: Programming the BCM20736S on a custom PCB
                                userc_7511

                                So far all the replies to this thread seem to ignore the fact that the device is in fact in programming mode as evidenced by the download in progress.  The failure comes at the end after the download where the SDK says "Download Failed'... this is after the device is recognized and the program has been downloaded.  What does it mean when it fails at this step.  Surely we can surmise that the RX Line was not the problem since the SDK proceed with the download.

                                • 13. Re: Programming the BCM20736S on a custom PCB
                                  nasac_2167841

                                  In the build directory - there should be a download.log

                                   

                                  Can you please share the log?

                                  1 of 1 people found this helpful
                                  • 14. Re: Programming the BCM20736S on a custom PCB
                                    userc_7511

                                    Having a similar problem to the one mentioned at the top of this thread...  programming custom device I get:

                                     

                                    Detecting device...

                                    Device found

                                     

                                    Downloading application...

                                    ****Download failed - Press the reset button on the device and retry ****

                                     

                                     

                                    When this happens to me I see the following on the scope. (TX on top RX on bottom)

                                    This is during "Downloading application..."

                                    Then after the download appears to stop I get a pause and then "Download failed - Press the reset..."

                                    Programming BCM20736S.jpg

                                    When I press the rest button the same thing happens again.

                                    I tried Recover mode and  I get a similar result, and in the end it says " Recover Failed..".

                                    What is causing the failure?  The device is in program mode and appears to accept the program blocks (lower trace) and after each block there is a blip on the upper trace that I assume is some kind of 'ack - ok send next block' coming from the BCM20736S.

                                     

                                    What does it mean when the download appears to progress but then it says 'failed'  I understand there is some verification step at the end, but what does the verification consist of and what can cause it to fail?

                                    1 2 3 Previous Next