Page 1 of 1

ESP32e override SPI is not working

Posted: Wed Jul 27, 2022 4:39 pm
by DesignerRick
We have a mature hardware and firmware using the ESP32-WROOM-32 module that uses an external 16 MB flash.

In production we override the fuses for the SPI to an external 16 MB Flash and have been making this for almost 2 years. It works well.

Below is the override.

Code: Select all

Config fuses:
XPD_SDIO_FORCE (BLOCK0):                           Ignore MTDI pin (GPIO12) for VDD_SDIO on reset     = False R/W (0b0)
XPD_SDIO_REG (BLOCK0):                             If XPD_SDIO_FORCE, enable VDD_SDIO reg on reset    = False R/W (0b0)
XPD_SDIO_TIEH (BLOCK0):                            If XPD_SDIO_FORCE & XPD_SDIO_REG                   = 1.8V R/W (0b0)
CLK8M_FREQ (BLOCK0):                               8MHz clock freq override                           = 52 R/W (0x34)
SPI_PAD_CONFIG_CLK (BLOCK0):                       Override SD_CLK pad (GPIO6/SPICLK)                 = 6 R/W (0b00110)
SPI_PAD_CONFIG_Q (BLOCK0):                         Override SD_DATA_0 pad (GPIO7/SPIQ)                = 7 R/W (0b00111)
SPI_PAD_CONFIG_D (BLOCK0):                         Override SD_DATA_1 pad (GPIO8/SPID)                = 8 R/W (0b01000)
SPI_PAD_CONFIG_HD (BLOCK0):                        Override SD_DATA_2 pad (GPIO9/SPIHD)               = 9 R/W (0b01001)
SPI_PAD_CONFIG_CS0 (BLOCK0):                       Override SD_CMD pad (GPIO11/SPICS0)                = 2 R/W (0b00010)
DISABLE_SDIO_HOST (BLOCK0):                        Disable SDIO host                                  = False R/W (0b0)
Now we are no longer able to obtain the ESP32-WROOM-32, so have started production using the ESP32-WROOM-32e.

The problem is once we set the fuses on the ESP32-WROOM32e we can no longer access the flash memory. I used an oscilloscope to look at the SPI lines and it looks like they are open circuit!!

This is quite urgent as its holding up production.

Code: Select all

C:\Espressif\frameworks\esp-idf-v4.4\workspace\biorb-earth>esptool.py flash_id
esptool.py v3.2-dev
Found 3 serial ports
Serial port COM7
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP32
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 78:21:84:4f:b1:c0
Uploading stub...
Running stub...
Stub running...
Manufacturer: ff
Device: ffff
Detected flash size: Unknown
Hard resetting via RTS pin...

ESP32-WROOM-32e pinout change

Posted: Wed Jul 27, 2022 5:29 pm
by DesignerRick
I really hope I am wrong!

I had an issue using external Flash on the ESP32-WROOM-32e, it looked like GPIO6,GPIO7,GPIO8,and GPIO9 were floating so I removed the lid of the module to see if I could find continuity to the processor. It looks like these pins no longer go from the processor to the module outside connections !

If so why did you change this? we use these pins for external flash and make thousands of products with the module. We are using every pin so do not have any choice to swap to other IO!

Re: ESP32-WROOM-32e pinout change

Posted: Thu Jul 28, 2022 12:59 am
by ESP_Sprite
Nope, sorry, see the datasheet of that module; those pins are indeed NC now. From what I know, the choice was made because too many customers thought they could use those pins as GPIOs, generating loads of anger and support calls when they found out that broke their setup. The last WROOM to still have those pins connected is the ESP32-WROOM-32D.

We do make the ESP32-WROOM-32E with 16MiB of internal flash as well (order code ESP32-WROOM-32E-N16) so perhaps you can switch to those?

Re: ESP32-WROOM-32e pinout change

Posted: Thu Jul 28, 2022 4:49 pm
by DesignerRick
Our fix is to move to the 32e with 16MB flash. Unfortunately we have built 400 units with the 32e with 4MB flash :-(