ESP32 custom PCB. Have I wired up the USB bridge correctly?

Hello. I was hoping I have done all this correctly...
I am wanting the ESP32 (WROOM version) to be able to control 2 stepper motors (A4988 driver boards) and to be programmable using the USB/UART0 lines using the MCP2200 bridge.

Any input would be greatly appreciated.

Full Res

How are you supposed to reset this thing or flash new firmware? You’re supposed to leave IO0 alone and not tie EN directly to VCC (at least via a resistor) so you can use it to flash new firmware unless that’s not necessary. I don’t see a reset button either so if program hangs you have to yank the power.

liuzengqiang:
How are you supposed to reset this thing or flash new firmware? You're supposed to leave IO0 alone and not tie EN directly to VCC (at least via a resistor) so you can use it to flash new firmware unless that's not necessary. I don't see a reset button either so if program hangs you have to yank the power.

Thanks for the feedback.
Yeah kinda messed up there.
I didn't know about IO0...
The datasheet doesn't mention that one:
ESP32WROOM datasheet

Notice:

  • Pins SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 and SCS/CMD, namely, GPIO6 to GPIO11 are connected
    to the integrated SPI flash integrated on the module and are not recommended for other uses.

Why can I not use it?

I am new to using a USB/UART bridge to flash MCUs. I know they need the RTS/CTS and UART connections...but I don't get the process. Do I tie the MCP2200 USB/UART RESET to the MCU RESET or what? How do I set it up so it "acts like an arduino and can be flashed using a USB port and no buttons"?

ESP32 Datahseet
Ah! So I have seen this on section 2.4 (page 11)

Does this mean that I pull GPIO0 LOW when I do a RESET to put it in to 'programming mode'?

Johnny010:
Thanks for the feedback.
Yeah kinda messed up there.
I didn't know about IO0...
The datasheet doesn't mention that one:
ESP32WROOM datasheetWhy can I not use it?

I am new to using a USB/UART bridge to flash MCUs. I know they need the RTS/CTS and UART connections...but I don't get the process. Do I tie the MCP2200 USB/UART RESET to the MCU RESET or what? How do I set it up so it "acts like an arduino and can be flashed using a USB port and no buttons"?

If you look at your diagram, ESP32 symbol, all pins on the bottom side are used by the SPI flash so you should NOT use them for anything else. Your program will NOT know when these pins are toggled so you can't multipurpose them. Just leave them alone and use other pins. I don't even have pads for these pins sometimes.
For UART chips, I don't know the one you're using. Need to follow MFG's recommended diagram if any. I use FT232 (expensive but familiar). You don't need CTS or RTS or anything for UART or USB specifically. People just use these pins to help auto reset the target board. Your reset circuitry is non-existing. Should work on that first.
What software are you designing the circuit in? Hope you're not posting same thing over at micropython.org which I'm visiting later today.

Is this any better? I can't seem to find if the EN pin has a built in pullup...so wasn't sure on the set up.
I am using Eagle 9.2.2 (linux free version).

Hope you're not posting same thing over at micropython.org which I'm visiting later today.

No. I didn't even know that these things had enough space for a garbage collector and such to run a higher level language...but now you mention it ;).
(I am a Java/Android/Spring Boot dev as the day job...so electrical and low level is more of a hobby so sorry for the what may seem rather stupid questions).

There is of course the obvious question, how does your circuit work, for programming and running etc, when you tried it on a breadboard ?

The ESP32 does some strange things to some pins, the only way to be sure a circuit will work is in my experience to (shock horror) try it out for real.

srnet:
There is of course the obvious question, how does your circuit work, for programming and running etc, when you tried it on a breadboard ?

The ESP32 does some strange things to some pins, the only way to be sure a circuit will work is in my experience to (shock horror) try it out for real.

Oh yeah. I am using Eagle to sketch it out...but it will end up prototyped before I put effort in to the PCB layout.

I'm not sure R4 thru R7 are needed. They don't seem to do anything (are they part of the switches?).
I wouldn't bother connecting USB UART chip's RTS and CTS to ESP. There's no need. You need to connect RTS to other pins.
Regarding "direction and pulldown", what are the caps doing there? Every time you toggle the IO pin, it is going to cause temporary short circuit. You need a resistor in-line with the cap.

The eagle you use has a strange shade of green. I'm still using the pre autodesk version. I might decide to try the new version. You have to get an autodesk account, I suppose. Have you used older eagle versions?