Page 1 of 2

wroom32 schematics

Posted: Wed Nov 09, 2016 2:22 am
by zhivko
I just received wroom32 from Olimex
I am trying to design minimalistic custom board that would allow flashing without reset and flash buttons. I tried to follow following instructions https://gist.github.com/morganrallen/09 ... 9c2a621d50

I plan to flash upload firmware with usb to ttl serial from ebay like here:
http://www.ebay.com/itm/381292739186?_t ... EBIDX%3AIT
@morganrallen is connecting this pins dtr and rts directly but devc from espressif (https://dl.espressif.com/dl/schematics/ ... V2_sch.pdf) is using NPN transistors.

So I wonder are this NPN transistors for DTR (mark as U2 on schematic) and CTS (mark as U3 on schematic) lines necessary?

Re: wroom32 schematics

Posted: Wed Nov 09, 2016 5:07 am
by ESP_Angus
The transistors are for the case where both DTR & RTS are asserted together. When either RTS or DTS are asserted (goes low) it still pulls EN or GPIO0 (respectively) low, the same if they were wired directly. However if both are asserted at the same time, neither pin is pulled low. There's a little logic truth table in the schematic that shows this.

The reason for wanting this behaviour is that many common serial terminal programs will assert DTR & RTS by default. If you have these wired directly, it will permanently hold the chip in reset unless you reconfigure the serial program not to assert RTS.

This design was first popularised with the NodeMCU board for ESP8266.

Re: wroom32 schematics

Posted: Wed Nov 09, 2016 7:22 am
by zhivko
Thanks for superfast reply.
So if I modify serial.py thing would work without both serial transistors, with direct connection to io0 and en pins?
Another question: traces under wroom32 antena traces - would the way I put traces around this area not disturb wifi signal?

Re: wroom32 schematics

Posted: Thu Nov 10, 2016 11:37 pm
by ESP_Angus
zhivko wrote:Thanks for superfast reply.
So if I modify serial.py thing would work without both serial transistors, with direct connection to io0 and en pins?
esptool.py will work with direct connections to IO0 & EN, no modification needed. Serial programs will also work as long as you configure them not to assert RTS. I often use miniterm.py which comes with pyserial, and for that configuration I use this this:

Code: Select all

miniterm.py --raw --dtr=0 --rts=0 /dev/ttyUSB0 115200
Another question: traces under wroom32 antena traces - would the way I put traces around this area not disturb wifi signal?
This is generally a bad idea. You should keep your traces away from the antenna keep-out area. If possible, I'd also recommend pulling back the ground plane from the end of the board and moving the two SMD components in the bottom right away from the antenna, as much as you can.

Re: wroom32 schematics

Posted: Sat Nov 19, 2016 11:31 pm
by zhivko
OK, after all I decided to use NPN transistors, but have problem with flashing esp32.
It seems that EN line does not fully transition from 3.3V to 0V (check scope screenshot of yellow line that represents EN). However blue line that represents IO0 does a full transition from 3.3V to 0V - so any idea what could be wrong with my schematics?
Could S8050 NPN transistor for EN line be non operational?? What else could pull EN so strong to 3.3V that it doesn't let go to 0V as IO0 does?
Check also my other attached pictures...
IMG_20161120_002204.jpg
IMG_20161120_002204.jpg (4.29 MiB) Viewed 17657 times

Re: wroom32 schematics

Posted: Sun Nov 20, 2016 10:07 am
by zhivko
I checked official devc from espressif and there is "Auto program" table in schematics it says:
dtr=0, rts=1 --> en==1, io0=0 so this is what I am getting, but still in arduino esp32 - I get:

Code: Select all

Global variables use 9,160 bytes (3%) of dynamic memory, leaving 285,752 bytes for local variables. Maximum is 294,912 bytes.
python.exe C:\Program Files (x86)\Arduino\hardware\espressif\esp32/tools/esptool.py --chip esp32 --port COM3 --baud 115200 write_flash -z --flash_freq 80m --flash_mode dio 0x1000 C:\Program Files (x86)\Arduino\hardware\espressif\esp32/tools/sdk/bin/bootloader.bin 0x8000 C:\Program Files (x86)\Arduino\hardware\espressif\esp32/tools/sdk/bin/partitions_singleapp.bin 0x10000 C:\Users\klemen\AppData\Local\Temp\arduino_build_629099/blink.ino.bin 
esptool.py v2.0-dev
Connecting...

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
At the time when EN=0 and io0=1, tx and rx lines from ftdi32 are not present anyhow... So what actually "waiting for packet header" means?

Re: wroom32 schematics

Posted: Sun Nov 20, 2016 10:17 am
by zhivko
Oh and regarding rts and cts disabling in miniterm - I tried various combinations for:

Code: Select all

esp32.serial.disableDTR=false
esp32.serial.disableRTS=false
in c:\Program Files (x86)\Arduino\hardware\espressif\esp32\boards.txt file.

Re: wroom32 schematics

Posted: Sun Nov 20, 2016 12:14 pm
by ESP_igrr
Regarding esp32.serial.disableDTR esp32.serial.disableRTS: unless you use Arduino IDE with a patch to support these options, they won't do anything.

"Timed out waiting for packet header means" means that esptool.py has not received a response from the ESP32 serial bootloader.
Can you attach another FTDI to observe what is happening on TX/RX lines while esptool.py is trying to connect?

Re: wroom32 schematics

Posted: Sun Nov 20, 2016 5:26 pm
by zhivko
Unfortunately I do not have another FTDI - only bus pirate (http://dangerousprototypes.com/docs/Bus_Pirate) - maybe I could use it.
But I think main problem here is that EN doesn't go fully to 0V to make reset - however I see io0 to go to 0V and then back to 3.3V - so this makes me believe something is wrong with schematics around EN line.

Re: wroom32 schematics

Posted: Sun Nov 20, 2016 9:17 pm
by zhivko
Turned out I had faulty usb - serial ttl adapter.
I picked new one and here is scope trace of io0 and en line:
IMG_20161120_215540.jpg
IMG_20161120_215540.jpg (2.72 MiB) Viewed 17594 times
and result from arduino ide:

Code: Select all

Sketch uses 102,069 bytes (9%) of program storage space. Maximum is 1,044,464 bytes.
Global variables use 9,160 bytes (3%) of dynamic memory, leaving 285,752 bytes for local variables. Maximum is 294,912 bytes.
python.exe C:\Program Files (x86)\Arduino\hardware\espressif\esp32/tools/esptool.py --chip esp32 --port COM3 --baud 115200 write_flash -z --flash_freq 80m --flash_mode dio 0x1000 C:\Program Files (x86)\Arduino\hardware\espressif\esp32/tools/sdk/bin/bootloader.bin 0x8000 C:\Program Files (x86)\Arduino\hardware\espressif\esp32/tools/sdk/bin/partitions_singleapp.bin 0x10000 C:\Users\klemen\AppData\Local\Temp\arduino_build_234277/blink.ino.bin 
esptool.py v2.0-dev
Connecting...
Uploading stub...
Running stub...
Stub running...
Attaching SPI flash...
Configuring flash size...
Compressed 5264 bytes to 3363...

Writing at 0x00001000... (100 %) 
Wrote 5264 bytes (3363 compressed) at 0x00001000 in 0.3 seconds (effective 139.9 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 78...

Writing at 0x00008000... (100 %) 
Wrote 3072 bytes (78 compressed) at 0x00008000 in 0.0 seconds (effective 2234.2 kbit/s)...
Hash of data verified.
Compressed 225792 bytes to 67923...

Writing at 0x00010000... (20 %) 
Writing at 0x00014000... (40 %) 
Writing at 0x00018000... (60 %) 
Writing at 0x0001c000... (80 %) 
Writing at 0x00020000... (100 %) 
Wrote 225792 bytes (67923 compressed) at 0x00010000 in 6.0 seconds (effective 303.0 kbit/s)...
Hash of data verified.

Leaving...
So thanks for support guys and looking forward for esp32 arduino core functions!