esp-idf/examples/peripherals/spi_master/hd_eeprom
michael fdf983e0c4 spi: fix config break and reduce overhead of the bus lock on SPI1
The SPI bus lock on SPI1 introduces two side effects:

1. The device lock for the main flash requires the
`CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION` to be selected, however this
option is disabled by default in earlier IDF versions. Some developers
may find their project cannot be built by their old sdkconfig files.

2. Usually we don't need the lock on the SPI1 bus, due to it's
restrictions. However the overhead still exists in this case, the IRAM
cost for static version of semaphore functions, and the time cost when
getting and releasing the lock.

This commit:

1. Add a CONFIG_SPI_FLASH_BYPASS_MAIN_LOCK option, which will forbid the
space cost, as well as the initialization of the main bus lock.

2. When the option is not selected, the bus lock is used, the
`CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION` will be selected explicitly.

3. Revert default value of `CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION`
to `n`.

introduced in 49a48644e4.

Closes https://github.com/espressif/esp-idf/issues/5046
2020-04-22 16:06:13 +08:00
..
components/eeprom spi: fix spi eeprom example build 2020-03-31 17:48:01 +02:00
main spi: fix config break and reduce overhead of the bus lock on SPI1 2020-04-22 16:06:13 +08:00
CMakeLists.txt spi: add eeprom example 2020-03-29 12:52:29 +08:00
Makefile spi: add eeprom example 2020-03-29 12:52:29 +08:00
README.md spi: add eeprom example 2020-03-29 12:52:29 +08:00

SPI master half duplex EEPROM example

This code demonstrates how to use the SPI master half duplex mode to read/write a AT93C46D EEPROM (8-bit mode). There is also an Kconfig option EXAMPLE_USE_SPI1_PINS allowing use the SPI1 (bus with code Flash connected on official modules).

Connections

For different chip and host used, the connections may be different.

ESP32 ESP32 ESP32S2
Host SPI1 HSPI FSPI
VCC 3.3V 3.3V 3.3V
GND GND GND GND
DO 7 18 37
DI 8 23 35
SK 6 19 36
CS 13 13 34
ORG GND GND GND

Notes

If you meet timeout issues, please check your connections.