Hi everyone,
I’m designing a PCB that uses USB-C to program an ESP32-S2 Mini 2. It’s my first time routing USB, and I’ve run into a layout issue I’m not sure how to handle correctly.
Setup
The problem
When I route D+ and D−, the differential pair has to cross to reach the correct pins:
Link to Photos
The current component placement is provisional; I’m still testing the routing and will do the final placement afterward.
I’m a beginner with high-speed/differential routing. Most of my previous boards were simple designs.
What’s the correct/clean way to route this so I don’t make rookie mistakes? Any guidelines, examples, or app notes you recommend would be greatly appreciated. Thanks!
I’m designing a PCB that uses USB-C to program an ESP32-S2 Mini 2. It’s my first time routing USB, and I’ve run into a layout issue I’m not sure how to handle correctly.
Setup
- USB-C receptacle (USB 2.0 only: D+, D−, CC1/CC2).
- ESD protection: USBLC6-2SC6 (2-channel low-cap device protection).
- Goal: use USB-C only for powering and flashing the ESP32-S2 over its native USB.
The problem
When I route D+ and D−, the differential pair has to cross to reach the correct pins:
- It needs to cross between the USB-C connector and the ESD IC.
- It also ends up needing to cross again between the ESD IC and the ESP32-S2 Mini pins.
This feels wrong to me (I don’t have much experience with differential pairs), so I suspect I’m missing a better approach.
- Is it acceptable to do a clean “crossover” of the USB D+/D− pair on the PCB, and if so, what’s the recommended way?
- At the USB-C connector footprint, is it normal that D+ and D− seem to “cross” depending on the footprint orientation? Any best practices to pick a connector or footprint option that avoids this?
- For device-only use, any tips around CC1/CC2 resistors placement and return paths that interact with the D+/D− pair routing?
Link to Photos
The current component placement is provisional; I’m still testing the routing and will do the final placement afterward.
I’m a beginner with high-speed/differential routing. Most of my previous boards were simple designs.
What’s the correct/clean way to route this so I don’t make rookie mistakes? Any guidelines, examples, or app notes you recommend would be greatly appreciated. Thanks!