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)
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...