cancel
Showing results for 
Search instead for 
Did you mean: 

handling Boot0 floating input

brianj
Associate II
Posted on April 22, 2015 at 22:03

Hello,

Unfortunately, we've manufactured a large batch of boards with the STM32F103's BOOT0 pin left floating, and not pulled high or low.  As a reliable fix (besides soldering jumper wires) for this issue, can the Boot0 pin be disabled or disregarded internally somehow?  Via a register setting or something?  If not, what's another reliable (software only) method to fix this scenario?

Thanks!  Brian

#boot0-stm32
11 REPLIES 11
John F.
Senior
Posted on April 24, 2015 at 09:25

As the Reference Manual explains,

''The values on the BOOT pins are latched on the 4th rising edge of SYSCLK after a reset. It

is up to the user to set the BOOT1 and BOOT0 pins after Reset to select the required boot

mode.

The BOOT pins are also re-sampled when exiting from Standby mode. Consequently they

must be kept in the required Boot mode configuration in Standby mode. After this startup

delay has elapsed, the CPU fetches the top-of-stack value from address 0x0000 0000, then

starts code execution from the boot memory starting from 0x0000 0004.''

Consequently, no software workaround is possible.

brianj
Associate II
Posted on April 24, 2015 at 17:37

John, thanks for the response.  Yes, I've thoroughly read through all of the applicable datasheets, ref. manuals, and app notes, and had hoped that some other expert out there knew of a secret solution to this dilemma.  But you're right, it doesn't appear to be possible.  ST is basically forcing a deliberate hardware configuration for that pin.  I guess the thing that I still don't quite understand (ST staff/engineers, feel free to chime in) is why there isn't a default internal pull-down resistor for boot0, which could still be easily overridden with any desired external wiring.  This would provide a definitively known state at all times, plus ALL of the other GPIO pins already have internal pull up/down options, so why not the boot0?  ST (or others), any thoughts or feedback on this?  

Thanks, Brian

TDK
Guru
Posted on April 24, 2015 at 20:31

Brian,

For what it's worth, I made the same mistake on my boards and everything still works--the floating BOOT0 pin acts as if it's held low when floating.  I wouldn't trust this to work in a high-reliability environment, but if they're cheap parts you may get away with it.

Not sure why there isn't an internal pulldown.  I agree with your comments.  But it is what it is.

If you feel a post has answered your question, please click "Accept as Solution".
pmoore
Associate II
Posted on April 24, 2015 at 22:40

The only reason I have thought of is that a pull-down on a non-user configurable pin is a constant power sink, and thus undesirable in lower power applications.  A weak external pull-down on the BOOT0 pin is one of those things you get used to a design rule for STM32 parts...like having to place a capacitor to ground on the RESET line. 

On the up side, ST does not make you hang external precision RC networks to make the internal PLL run correctly or require you to provide low voltage core power rails from external supplies unlike some other vendors have been known to do.

brianj
Associate II
Posted on April 25, 2015 at 01:20

Tim, thanks for the response.  That's really good to know that you've got the same hardware scenario and are still seeing pretty consistently ''low floating'' behavior.  That's what we've seen so far too, but haven't had enough time for exhaustive testing yet and so I was hoping to get some more detailed technical input from ST on the internals of that pin.  I've found some info on GPIO pin internals, but can't seem to find much about the boot0 pin internals.  Out of curiosity, about how many boards have you built with boot0 floating and still not seen ''floating high'' issues with?

Patrick, really good point about the power conservation reason, that makes sense.  However (being a devil's advocate) it would only take a single configurable register bit to turn that on or off, right?  :)  Definitely agree that it should have been on the HW design and will definitely be on the next rev, but we're just hoping this batch of boards can still perform reliably as-is.

Btw, is there any way to flag this thread to get some official ST engineering attention?  Maybe I'm being too anal about this, but I'd still really like to understand their design reasoning on why boot0 doesn't have a configurable internal pull-down?  Is it a simple oversight, or that way by design?  If by design, why would a configurable internal pull down be bad?

Thanks Gents!

TDK
Guru
Posted on April 25, 2015 at 03:58

Brian, I've done that on two individual boards with different layouts.  Although, one of those boards may have had it weakly tied to ground somewhere.  The other was definitely floating--the pin only goes to an exposed pad to let the user short it if necessary.

If you feel a post has answered your question, please click "Accept as Solution".
brianj
Associate II
Posted on April 25, 2015 at 06:24

Interesting, good to know.  But to clarify, I was specifically wondering about how many qty of those boards you shipped (or built) for customers with it floating, and if you saw any high floating issues?  i.e. 100, 1k, 10k, 100k shipped boards?  

Thanks, Brian

Hamid.Wasti
Associate II
Posted on April 25, 2015 at 08:22

How much money will it cost the company to recall/fix a unit that failed in the field due to this problem? How many units have to fail in the field before the cost of fixing the boards exceeds the cost of adding the jumper? I suspect that number is fairly low.

Frankly I am very dismayed that an engineer would seriously consider shipping the boards with this pin floating. Just because a chip boots correctly with the pin floating does not mean it will continue to boot the same way as the chip ages.

Even if the boards boot up 100% reliably in your lab, it does not mean they will boot up reliably in a customer's facility that may have much higher (but still legal) level of ambient RF.

Will the boards boot reliably at higher/lower humidity levels?

Will the boards boot reliably at higher or lower temperatures?

Will the boards boot reliably when under a thermal gradient?

You can spend a whole lot of money investigating and answering these, or you can spend less money and just fix the problem.

Finally, if there is a problem in the field, what is the cost to the company not just in the cost to recall and fix the problems but the loss of reputation? A reputation for unreliable products is not easy to shake. Someone pretty high up in the company better be making the decision whether to risk the company's life over the cost of avoiding making this mod.

Hamid.Wasti
Associate II
Posted on April 25, 2015 at 08:27

But to clarify, I was specifically wondering about how many qty of those boards you shipped (or built) for customers with it floating, and if you saw any high floating issues?  i.e. 100, 1k, 10k, 100k shipped boards?  

 

''Some guy on the internet told me it was OK to do.''  Do you know of any cases where that explanation has held up?