Nucleo boards add usb renumerate circuit

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

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
new_usb_renum.png (111.66 KiB) Viewed 274 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?
-rick

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

Re: Nucleo boards add usb renumerate circuit

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

Rick

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.

zmemw16
Posts: 1420
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) )

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

<edit>
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>
</edit>
stephen

Post Reply