31
\$\begingroup\$

I recently came across Yet Another RP2040 Trinket (the Beetle RP2040.) In their linked schematic something caught my attention:

It is R10 below - a 10k resistor straight between VUSB and GND. I can't come up with a reason why you'd want it to be there.

I've built several USB-powered microcontroller devices myself and I've never included this feature. Is this something I should have been doing, or did the designer just mess up? Any ideas?

Schematic

My rambling thoughts about it:

  • Normally I'd expect something like this in parallel with some capacitors you'd want to discharge, but the caps are all on the 5V/3.3V rails and the diode prevents R10 from draining them.
  • If it were doubling as a fuse, I'd expect it to be in series with the protection diode, not tying the supply to ground.
  • It's only about 0.5mA of always-on waste, but that's still more than the RP2040 itself draws in sleep mode.
  • The connector is USB-C, but I don't know of any USB guidelines saying that gadgets should put a resistor between VUSB and GND.
  • Looking at the schematic for the official Pico board, there's a GPIO attached to the VUSB through a 5k/10k pulldown divider, presumably to detect when the board is powered over USB. Maybe this designer looked at this and assumed the pulldown was required even without the GPIO?
\$\endgroup\$
1
  • 5
    \$\begingroup\$ The 10k resistor in the Beetle schematic doesn't seem to serve any real purpose. The official pico schematic allows for self-power, so the RP2040 needs to know when USB is connected & disconnected - and the 5k/10 divider does the job. But the Beetle appears to be only bus powered, so it doesn't need (or even have) a GPIO to detect Vusb. \$\endgroup\$
    – brhans
    Sep 18 at 22:56

4 Answers 4

51
\$\begingroup\$

It might appear useless, but it is not.

The 5V node at the regulator input goes to an IO pad which can be used both as an input and as an output.

As an output it can be used for powering external devices from USB.

As an input, it can be used to power the device from an external 5V supply, so USB is not required to power it.

When the device is powered externally, there is a diode D1 which prevents back-feeding of the external supply back into PC via USB.

Except that the diode is a Schottky diode, and while Schottky diodes have better efficiency due to lower voltage in the forward biased direction, they have much larger reverse leakage current than standard diodes.

This means that if you feed 5V externally to power the device, and measure the USB VBUS voltage with a multimeter, it will read roughly 5V, because the multimeter is a very high impedance input device. If you measure with an oscilloscope that has 1Mohm input impedance, it would measure much less voltage because measuring loads the diode more.

Usually few hundred nanoamps is not a big issue, but on USB-C, it might be. The USB specs require that the USB host must check that the VBUS voltage is safely near zero before 5V is turned on. Due to high impedance, the diode leakage current may raise the VBUS voltage out of the safe 0V zone and it will not turn on or try comnunicating at all, because a device was not safely detected.

The extra 10k resistor is there as a load for the Schottky leakage current, to keep the VBUS at connector within the safe 0V level so that host will turn 5V on when plugged in and enable communicating with the device.

\$\endgroup\$
2
  • 1
    \$\begingroup\$ Could this be safely done with a higher resistance value, in order to reduce the waste in low-power applications? Say to 50k or 100k? Or would such a high resistance value simply not be enough to serve the intended purpose? \$\endgroup\$
    – tylerl
    Sep 20 at 18:34
  • 3
    \$\begingroup\$ @tylerl Maybe, but if you need to worry about a 10k resistor consuming 500 microamps of current, then you likely have already chosen the wrong board. And it only draws it while powered via USB. \$\endgroup\$
    – Justme
    Sep 20 at 20:49
8
\$\begingroup\$

The 10k allows the device to detect a disconnected USB port when it its powered by an external source (think battery or wall wart).

In that case your only way to reliably detect the "disconnected" state is that VUSB is pulled down to zero volts (GND). Otherwise you would not be able to differenciate between "disconnected" and "suspended" USB state.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Ah... You mean it allows the USB host device to detect a disconnected gadget, yes? So like, if the gadget goes to sleep, a battery pack might otherwise think that the gadget has actually been unplugged and shut off power to the port. Did I get that right? \$\endgroup\$
    – tylerl
    Sep 18 at 17:27
  • 2
    \$\begingroup\$ Other way round: Device needs to know that it was disconnected from the host, so it can turn off (ro reset) its USB stuff. \$\endgroup\$
    – Turbo J
    Sep 18 at 17:29
  • 11
    \$\begingroup\$ Hold on - if that's the case, then there needs to be some sort of sensing in there to detect the voltage, right? But the only thing on the USB side of the diode is the resistor to ground, so pulling VUSB down wouldn't be seen by any of the device's circuitry. \$\endgroup\$
    – tylerl
    Sep 18 at 17:35
5
\$\begingroup\$

From a purely electrical point of view, without R10, the anode of the diode and the connector pin would be floating so ESD or otherwise could produce a voltage that would forward bias the diode. The 10k resistor eliminates this possibility by ensuring the diode is reverse biased.

And yes as others have indicated it can be used by the host to differentiate between disconnected and suspended.

\$\endgroup\$
4
\$\begingroup\$

I remember seeing somewhere that some USB chargers will require a minimum current flow (greater than the demands of the RP2040) or they shut down the 5VDC supply being provided. I like all the other answers better than mine, but just another possibility.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ In that case, a 10k resistor would make very little difference, as it will only add half a milliampere. \$\endgroup\$
    – Justme
    Sep 20 at 6:42
  • 2
    \$\begingroup\$ @Justme What makes you think 0.5mA would not be enough? I have a power bank which wakes up even if I touch bare VBUS/GND pads (on a USB breakout board) with my hand. \$\endgroup\$ Sep 20 at 7:33
  • 1
    \$\begingroup\$ I've heard about it as well, but I'm sure that D1+U4+C14 (and their further load) will pull enough current to make R10 green with envy. And even if U4 has a soft-start and/or whatnot, then there's also C17 which provides immediate inrush current... so I think it's not that \$\endgroup\$ Sep 21 at 22:12

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.