I am currently designing a board centered around the ESP32. I want to implement an auto-program circuit for convenience's sake, because I don't want to hold a boot button each time I want to program it.
My question is: Why is the below circuit that most ESPs use, designed the way it is? I am asking because this circuit fails to initiate the upload more often than I would like and I end up having to press the boot button. So I somehow think there is something with the design that causes this, as I had this problem with more than 1 ESP at different times.
Why not use something like this for instance? This is a thought experiment I made using the logic table and KV diagrams.
(1) EN = not(DTR) + RTS
(2) IO0 = not(RTS) + DTR
From this, I have developed this circuit:
So I know this can probably be done better, but maybe this will solve the reliability problem that I have. Or maybe I should use the relation I found on (1) and (2) to build the same circuit using OR-Gates. In any case, any thoughts on optimization or help on the matter would be appreciated.