Nucleo boards add usb renumerate circuit

Post Reply
User avatar
Rick Kimball
Posts: 1078
Joined: Tue Apr 28, 2015 1:26 am
Location: Eastern NC, US

Nucleo boards add usb renumerate circuit

Post by Rick Kimball » Wed Jun 14, 2017 12:37 pm

Maybe this isn't new news, but I just noticed this while poking around in the schematics of my Nucleo board (UM1724 btw)

If you were wondering about which pin to use with your custom USB Renumerate circuit for your bluepill, you might want to check out the way they are doing it on the new Nucleo boards. They use an NPN resistor connected to PA15 of the stm32f103c8. The circuit they use for the NPN switch is pretty simple compared to the elaborate scheme used by the maple board.
new_usb_renum.png (111.66 KiB) Viewed 419 times
I wonder if it just works without them changing the ST-LINK firmware. It probably should turn on the NPN because it is connected to the JTDI signal. That pin has is has an internal pull up turned on so it should automatically enable the 1k5 pull up resistor to 3.3v, yes?

User avatar
Posts: 7693
Joined: Mon Apr 27, 2015 10:36 am
Location: Melbourne, Australia

Re: Nucleo boards add usb renumerate circuit

Post by RogerClark » Thu Jun 15, 2017 12:32 am


When PA15 is tristate (input) the transistor base will rise to 0.7V (10/(10 + 36) * 3.3V) 2.5V (36/(10 + 36) * 3.3V)

However, the transistor will only conduct while the base to emitter voltage is more than about 0.2V (depends on the transistor type but 0.2V is about the minimum I think)

So I don't see how this can pull USB D+ to 3.3V

If I had time I'd put it into LTSpice and simulate it.

Posts: 1685
Joined: Wed Jul 08, 2015 2:09 pm
Location: St Annes, Lancs,UK

Re: Nucleo boards add usb renumerate circuit

Post by zmemw16 » Thu Jun 15, 2017 3:17 am

first thought
Vrenum * (36k/ (36k+ 0.1) )

won't available mA via the 100 swamp that via the 5v
so base is headed towards 3v3, emitter therefore towards 3v1 or 2v6 ??

second thought
internal pullup istr 40k mentioned
so maybe it's
3v3 * (36k/ (36k+ 40k + 0.1) )

this a line driven high to force re-enumeration, suggests it's configured to be push-pull.
back to 1st

2nd is definitely wrong and feed it back into 1st
10k to 5v, lets cheat (3.3*10k/5)k to 3v3
now it would 1/R = 1/(3.3*10k/5)k + 1/40.1k => about 6k6 - a tiny bit
then => 36k/(6k6+36)*3v3 ? => 6/7.1*3v3 => 19.8/7.1 => 2 +5.6/.7.2 => 2+7/9 = 2 + 1-0.2222 => 2.75..2.8 <head math guess>

Post Reply