wroom32 schematics

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

wroom32 schematics

Postby zhivko » Wed Nov 09, 2016 2:22 am

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?
Attachments
pcb.png
pcb.png (216.93 KiB) Viewed 18483 times
schematic.png
schematic.png (149.46 KiB) Viewed 18483 times

ESP_Angus
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: wroom32 schematics

Postby ESP_Angus » Wed Nov 09, 2016 5:07 am

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.

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

Re: wroom32 schematics

Postby zhivko » Wed Nov 09, 2016 7:22 am

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?

ESP_Angus
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: wroom32 schematics

Postby ESP_Angus » Thu Nov 10, 2016 11:37 pm

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.

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

Re: wroom32 schematics

Postby zhivko » Sat Nov 19, 2016 11:31 pm

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 18301 times
Attachments
IMG_20161119_020318.jpg
IMG_20161119_020318.jpg (2.65 MiB) Viewed 18301 times
IMG_20161120_002145.jpg
IMG_20161120_002145.jpg (2.84 MiB) Viewed 18301 times

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

Re: wroom32 schematics

Postby zhivko » Sun Nov 20, 2016 10:07 am

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?

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

Re: wroom32 schematics

Postby zhivko » Sun Nov 20, 2016 10:17 am

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.

ESP_igrr
Posts: 2072
Joined: Tue Dec 01, 2015 8:37 am

Re: wroom32 schematics

Postby ESP_igrr » Sun Nov 20, 2016 12:14 pm

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?

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

Re: wroom32 schematics

Postby zhivko » Sun Nov 20, 2016 5:26 pm

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.

zhivko
Posts: 23
Joined: Tue Dec 01, 2015 12:02 pm

Re: wroom32 schematics

Postby zhivko » Sun Nov 20, 2016 9:17 pm

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 18238 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!
Last edited by zhivko on Wed Dec 07, 2016 10:13 am, edited 1 time in total.

Who is online

Users browsing this forum: No registered users and 107 guests