mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Always use IDF SPI on ESP32
This commit is contained in:
		| @@ -268,10 +268,10 @@ def validate_spi_config(config): | ||||
|  | ||||
| # Given an SPI index, convert to a string that represents the C++ object for it. | ||||
| def get_spi_interface(index): | ||||
|     if CORE.using_esp_idf: | ||||
|     platform = get_target_platform() | ||||
|     if platform == PLATFORM_ESP32: | ||||
|         return ["SPI2_HOST", "SPI3_HOST"][index] | ||||
|     # Arduino code follows | ||||
|     platform = get_target_platform() | ||||
|     if platform == PLATFORM_RP2040: | ||||
|         return ["&SPI", "&SPI1"][index] | ||||
|     if index == 0: | ||||
| @@ -306,7 +306,7 @@ def spi_mode_schema(mode): | ||||
|     if mode == TYPE_SINGLE: | ||||
|         return SPI_SINGLE_SCHEMA | ||||
|     pin_count = 4 if mode == TYPE_QUAD else 8 | ||||
|     onlys = [cv.only_on([PLATFORM_ESP32]), cv.only_with_esp_idf] | ||||
|     onlys = [cv.only_on([PLATFORM_ESP32])] | ||||
|     if pin_count == 8: | ||||
|         onlys.append( | ||||
|             only_on_variant( | ||||
| @@ -352,7 +352,7 @@ CONFIG_SCHEMA = cv.All( | ||||
| async def to_code(configs): | ||||
|     cg.add_define("USE_SPI") | ||||
|     cg.add_global(spi_ns.using) | ||||
|     if CORE.using_arduino: | ||||
|     if CORE.using_arduino and get_target_platform() != PLATFORM_ESP32: | ||||
|         cg.add_library("SPI", None) | ||||
|     for spi in configs: | ||||
|         var = cg.new_Pvariable(spi[CONF_ID]) | ||||
| @@ -394,7 +394,9 @@ def spi_device_schema( | ||||
|         cv.Optional(CONF_SPI_MODE, default=default_mode): cv.enum( | ||||
|             SPI_MODE_OPTIONS, upper=True | ||||
|         ), | ||||
|         cv.Optional(CONF_RELEASE_DEVICE): cv.All(cv.boolean, cv.only_with_esp_idf), | ||||
|         cv.Optional(CONF_RELEASE_DEVICE): cv.All( | ||||
|             cv.boolean, cv.only_on([PLATFORM_ESP32]) | ||||
|         ), | ||||
|     } | ||||
|     if cs_pin_required: | ||||
|         schema[cv.Required(CONF_CS_PIN)] = pins.gpio_output_pin_schema | ||||
| @@ -443,13 +445,15 @@ def final_validate_device_schema(name: str, *, require_mosi: bool, require_miso: | ||||
| FILTER_SOURCE_FILES = filter_source_files_from_platform( | ||||
|     { | ||||
|         "spi_arduino.cpp": { | ||||
|             PlatformFramework.ESP32_ARDUINO, | ||||
|             PlatformFramework.ESP8266_ARDUINO, | ||||
|             PlatformFramework.RP2040_ARDUINO, | ||||
|             PlatformFramework.BK72XX_ARDUINO, | ||||
|             PlatformFramework.RTL87XX_ARDUINO, | ||||
|             PlatformFramework.LN882X_ARDUINO, | ||||
|         }, | ||||
|         "spi_esp_idf.cpp": {PlatformFramework.ESP32_IDF}, | ||||
|         "spi_esp_idf.cpp": { | ||||
|             PlatformFramework.ESP32_IDF, | ||||
|             PlatformFramework.ESP32_ARDUINO, | ||||
|         }, | ||||
|     } | ||||
| ) | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| #include <utility> | ||||
| #include <vector> | ||||
|  | ||||
| #ifdef USE_ARDUINO | ||||
| #if defined(USE_ARDUINO) && !defined(USE_ESP32) | ||||
|  | ||||
| #include <SPI.h> | ||||
|  | ||||
| @@ -19,13 +19,13 @@ using SPIInterface = SPIClass *; | ||||
|  | ||||
| #endif | ||||
|  | ||||
| #ifdef USE_ESP_IDF | ||||
| #ifdef USE_ESP32 | ||||
|  | ||||
| #include "driver/spi_master.h" | ||||
|  | ||||
| using SPIInterface = spi_host_device_t; | ||||
|  | ||||
| #endif  // USE_ESP_IDF | ||||
| #endif  // USE_ESP32 | ||||
|  | ||||
| #ifdef USE_ZEPHYR | ||||
| // TODO supprse clang-tidy. Remove after SPI driver for nrf52 is added. | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
|  | ||||
| namespace esphome { | ||||
| namespace spi { | ||||
| #ifdef USE_ARDUINO | ||||
| #if defined(USE_ARDUINO) && !defined(USE_ESP32) | ||||
|  | ||||
| static const char *const TAG = "spi-esp-arduino"; | ||||
| class SPIDelegateHw : public SPIDelegate { | ||||
| @@ -73,9 +73,6 @@ class SPIBusHw : public SPIBus { | ||||
|     channel->pins(Utility::get_pin_no(clk), Utility::get_pin_no(sdi), Utility::get_pin_no(sdo), -1); | ||||
|     channel->begin(); | ||||
| #endif  // USE_ESP8266 | ||||
| #ifdef USE_ESP32 | ||||
|     channel->begin(Utility::get_pin_no(clk), Utility::get_pin_no(sdi), Utility::get_pin_no(sdo), -1); | ||||
| #endif | ||||
| #ifdef USE_RP2040 | ||||
|     if (Utility::get_pin_no(sdi) != -1) | ||||
|       channel->setRX(Utility::get_pin_no(sdi)); | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| namespace esphome { | ||||
| namespace spi { | ||||
|  | ||||
| #ifdef USE_ESP_IDF | ||||
| #ifdef USE_ESP32 | ||||
| static const char *const TAG = "spi-esp-idf"; | ||||
| static const size_t MAX_TRANSFER_SIZE = 4092;  // dictated by ESP-IDF API. | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,16 @@ | ||||
| substitutions: | ||||
|   clk_pin: GPIO6 | ||||
|   mosi_pin: GPIO7 | ||||
|   miso_pin: GPIO5 | ||||
|  | ||||
| <<: !include common.yaml | ||||
| spi: | ||||
|   - id: quad_spi | ||||
|     type: quad | ||||
|     interface: hardware | ||||
|     clk_pin: | ||||
|       number: 6 | ||||
|     data_pins: | ||||
|       - 7 | ||||
|       - 2 | ||||
|       - 10 | ||||
|       - allow_other_uses: true | ||||
|         number: 3 | ||||
|   - id: spi_id_2 | ||||
|     interface: any | ||||
|     clk_pin: 4 | ||||
|     mosi_pin: 5 | ||||
|   | ||||
| @@ -1,13 +1,37 @@ | ||||
| spi: | ||||
|   - id: three_spi | ||||
|   - id: quad_spi | ||||
|     type: quad | ||||
|     interface: spi3 | ||||
|     clk_pin: | ||||
|       number: 47 | ||||
|     mosi_pin: | ||||
|       number: 40 | ||||
|   - id: hw_spi | ||||
|     data_pins: | ||||
|       - allow_other_uses: true | ||||
|         number: 40 | ||||
|       - allow_other_uses: true | ||||
|         number: 41 | ||||
|       - allow_other_uses: true | ||||
|         number: 42 | ||||
|       - allow_other_uses: true | ||||
|         number: 43 | ||||
|   - id: octal_spi | ||||
|     type: octal | ||||
|     interface: hardware | ||||
|     clk_pin: | ||||
|       number: 0 | ||||
|     miso_pin: | ||||
|       number: 41 | ||||
|     data_pins: | ||||
|       - 36 | ||||
|       - 37 | ||||
|       - 38 | ||||
|       - 39 | ||||
|       - allow_other_uses: true | ||||
|         number: 40 | ||||
|       - allow_other_uses: true | ||||
|         number: 41 | ||||
|       - allow_other_uses: true | ||||
|         number: 42 | ||||
|       - allow_other_uses: true | ||||
|         number: 43 | ||||
|   - id: spi_id_3 | ||||
|     interface: any | ||||
|     clk_pin: 8 | ||||
|     mosi_pin: 9 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user