-
Notifications
You must be signed in to change notification settings - Fork 12
Dev Notes
This page is meant to keep track of design considerations made.
I selected VSYS instead of VBUS since this takes the +5V rail after the diode on the pico. This provides some protection against sending voltage spikes to the USB port, but it does cause a bit of voltage drop. The voltage drop across the diode is about 0.2V. I tested how low the input voltage can be with a standard DC controller with a VMU and PERFORMANCE jump pack. It seemed to tolerate input voltages from the USB port down to 4.5V. The VMU started to look washed out and VMU data access was problematic with an input voltage lower than this. USB ports should output at least 4.75V if it's adhering to the USB spec.
In my own tests, I have measured less than 500 mA current draw with 4 fully-loaded controllers attached while all jump packs are activated using a 4-player version of this device. Also, the original Dreamcast controller port came with a 400 mA fuse, so it's a pretty safe bet that a standard USB port can handle 4 controllers at once as most computers can supply 500 mA on a single port. The supplied power is shared across all devices on the bus though, so an externally-powered USB hub may be needed in some circumstances.
I wanted to at least provide a bit of fault protection on these data lines since the GPIO on RP2030 are a bit fragile. These resistors also block some voltage reflections, but I didn't notice any communication issues without these resistors in place. Any resistor value over 80-ohms started to affect communication for some controllers (mainly the arcade stick). This is why I settled on 50-ohms.
I wanted to select a minimum value resistor such that if all 8 data lines experienced a fault, the total current draw would be below 50 mA that the GPIO can handle. 3.3 V / 560 ohm * 8 = 47 mA. It seemed like communication was still processed with 1k-ohm resistors used, so I don't feel like this value of 560-ohm reaches any sort of communication integrity limit.
The inputs of 74LVC2T45DC chips are limited to 50 mA. Therefore, I chose a slightly higher resistance here than the safe configuration in order to be below 50 mA during a fault at 3.3 V. A fault where the 5 V is shorted to a data line will technically go over the chip's rating, but the bus is normally high (at 3.3 V) and only transitions low for a tiny fraction of time. I've tested for this type of fault and noticed no damage.