<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">We hit a snag with the 3.1 hardware design. The flash voltage (VDD_SDIO) in WROVER module is 1.8V. In WROOM-32 module, VDD_SDIO was 3.3V. Also, as previously mentioned, the WROOM-32 modules uses GPIO16 and GPIO17 for external PSRAM (SPI CLK and CS signals). What wasn’t clear was _why_ they chose those pins. It now is…</div><div class=""><br class=""></div><div class="">The ESP32 design is that some pins (GPIO16, GPIO17, FL_DATA_2, FL_DATA_3, FL_CMD, FL_CLK, FL_DATA_0, FL_DATA_1, and of course VDD_SDIO) operate in the VDD_SDIO domain, and the rest operate in the 3V3 domain. So, switching VDD_SDIO to 1.8V (is 3.3V in OVMS v3) also switches those eight GPIOs to 1.8V. Another complication is that VDD_SDIO is not exposed (not a problem for 3.3v, but an issue if we want 1.8v to power the external flash).</div><div class=""><br class=""></div><div class=""><div class="">I attach spreadsheet with ESP32, WROOM-32, and WROVER pinouts, along with strapping pins used and power domains (3.3V, SDIO/1.8V, etc). I think this makes things much clearer.</div><div class=""><br class=""></div><div class="">The WROVER pins are essentially the same as WROOM-32. No more, no less. But, VDD_SDIO changes from 3.3V to 1.8V.</div><div class=""><br class=""></div><div class="">It seems that the simplest approach is:</div><div class=""><br class=""></div><div class=""><ul class="MailOutline"><li class="">Free GPIO4 (SD_DATA1), GPIO12 (SD_DATA2), and GPIO13 (SD_DATA3) and make SDCARD 1-line protocol.</li><li class="">Note that GPIO12 is MTDI and is a strapping pin for 1.8V/3.3V, so we’ll try not to use that.</li><li class="">GPIO16 and GPIO17 are now used by PSRAM (CS and CLK), and not exposed. So:</li><ul class=""><li class="">Move UART 2 (TX to modem) to GPIO13.</li><li class="">Move UART 2 (TX from modem) to GPIO4.</li><li class="">Leave GPIO16 and GPIO17 unconnected (used internally by WROVER).</li></ul></ul></div><div class=""><br class=""></div><div class="">That leaves the problem of GPIO22 (FL_CS2) for our external flash. All the other (shared) pins are VDD_SDIO (1.8v), but that pin is in the 3.3v domain, and we need it to drive an external 1.8v flash chip (which is not 3.3v tolerant). From what I can see, there are no free VDD_SDIO domain pins. #17 through #22 are used for SPI flash HSI, and the last two GPIO16 and GPIO17 are used for the PSRAM (and are not exposed outside WROVER so nothing we can do about it anyway).</div><div class=""><br class=""></div><div class="">The only solution we can see is to continue to use GPIO22 for FL_CS2 external flash, but use a level converter 3.3V -> 1.8V. We only need uni-directional, but it must operate fast enough not to interfere with a 40MHz SPI bus. Maybe a resistor voltage divider would be too slow / interfere too much, so safer to use a simple single channel uni-directional 3.3V->1.8V logic level shifter chip. Trying to find a flash chip that is 3.3V tolerant, and test it, would just introduce more delays (for the sake of one extra 9cent component).</div><div class=""><br class=""></div><div class="">Regarding the SDCARD. According to the specs, this is driven at 3.3V and our circuit has this on 3.3V pins, so that should be ok. The only issue is strapping pins GPIO2 and GPIO12. I can’t get this to work with Analog Lamb’s WROOM-32+PSRAM module at all, but it works fine on the Espressif WROVER-KIT I have (in both 1 line and 4 line modes). So we just use the capacitors and pull-up resistors from the WROVER-KIT arrangement, along with our existing GPIO2-GPIO0 link (as per Espressif SDCARD documentation):</div></div><div class=""><br class=""></div><div class="">The changes to support this now include:</div><div class=""><br class=""></div><div class=""><ul class="MailOutline"><li class="">Swap the GPIOs around, as above (freeing some pins from moving SDCARD 4-line to 1-line, and staying clear of the nasty GPIO12).</li><li class="">Add a new small 3.3v->1.8v regulator, to power just our 16MB external flash chip (and level converter).</li><li class="">Add a new unidirectional 3.3v->1.8 level converter for CS line of 16MB external flash.</li><li class="">Switch external 16MB flash to a 1.8v component.</li><li class="">Add a few capacitors on the power lines near external flash and SD CARD, to help with peak power draws.</li><li class="">Re-work SD CARD pull-ups and protection circuitry (as per latest Espressif WROVER-KIT design).</li><li class="">Minimising length of SPI and SD bus lines, and keeping them away from sources of interference (where possible).</li><li class="">Increasing size of solder pad for USB connector, and large capacitors, to make stronger.</li></ul></div><div class=""><br class=""></div><div class="">I’m triple checking this tonight (as it goes to make boards tomorrow). I would appreciate any feedback from electrical engineers on this list.</div><div class=""><br class=""></div><div class="">Regards, Mark.</div><div class=""><br class=""></div></body></html>