3
\$\begingroup\$

As I read from STM32F10x application note and observed from most designs, there is one series resistor for BOOT0 and BOOT1 respectively, before they are connected to either VCC or GND (see Section 3.2 in the link). But I have no idea what the resistors are used for. The application note only mentioned "Resistor values are given only as a typical example" without further explanation.

I am wondering if I can remove the two resistors?

Specifically, in my design I want to make BOOT0 programmable by a separate IC. BOOT0 is kept low for the most of the time, and becomes high if the other IC sends the signal. Will the following design be safe, where the series resistor is removed?

my tentative design

Thank you for your help!

\$\endgroup\$

2 Answers 2

2
\$\begingroup\$

If you mean figure 10 in the appnote you linked, then that is just an example.

The BOOT1 is a standard GPIO pin and during reset it is an input but it might be used as an output in your code and hardware, so that is why it has a series resistor, otherwise the switch would short circuit the output pin always to GND or VCC which would be an error in the design. So the resistor just needs to have a value high enough not to excessively load an output but low enough to provide stable logic levels when input - a 10k is a reasonable value for that. You most likely don't want to leave out the resistor, and if you don't need to control it you can tie the pin via the resistor directly to GND or VCC depending on which boot mode you want.

The BOOT0 will only be an input, so it can be driven with a push pull output pin directly. But if it is a pushbutton or a switch, you definitely need a resistor to keep the default logic level until a button is pushed or switch activated. Again a 10k resistor is a reasonable value.

\$\endgroup\$
1
  • \$\begingroup\$ Good point. Thank you! For those who want to check the IO direction, here is a link to the datasheet of STM32F103x8. \$\endgroup\$
    – wtj
    Oct 13, 2021 at 11:02
0
\$\begingroup\$

They are logical inputs which select whether bootloader or main program is executed after reset. From the STM32F103VE datasheet

enter image description here

Some chips have these "pins" physically routed to a pin on the package, so you can connect jumper/resistor whatever you like. Some chips only have BOOT0 externally and the BOOT1 is "virtual" - it does not exist as a pin, but rather it is a bit in the "option" flash memory section.

What the logical combinations on BOOT pins actually do seems to be chip specific. Some have USART bootloaders, some even use USB in DFU (device firmware update) mode.

\$\endgroup\$
3
  • \$\begingroup\$ Thank you for your post! I understand the function of BOOT pins. I just don't know if the resistors are necessary or if their values matter. Am I understanding your post right: they are just for connection and can be replaced by jumpers/tracks? \$\endgroup\$
    – wtj
    Oct 13, 2021 at 10:30
  • 1
    \$\begingroup\$ @zwt They can be replaced by jumpers and tracks. If you have pull-up or pull-down configuration with some kind of dipswitches, you need the resistors to define a state when switch position changes. If you are 100% certain of your boot configuration, you can tie the pins directly to VCC or GND. That being said, I strongly suggest you use dipswitches if this is a prototype. \$\endgroup\$ Oct 13, 2021 at 10:53
  • \$\begingroup\$ @WillyWonka Thank you for reminding. I was planning to control the BOOT pin by a separate chip in order to simplify UART programming. \$\endgroup\$
    – wtj
    Oct 13, 2021 at 11:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.