hideakitai / ESP32DMASPI

SPI library for ESP32 which use DMA buffer to send/receive transactions
MIT License
166 stars 36 forks source link

ESP32S3 support #27

Closed s-light closed 11 months ago

s-light commented 1 year ago

as is the master_simple.ino example does not compile:

In file included from /home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/examples/master_simple/master_simple.ino:1:
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::<anonymous>' [-Wmissing-field-initializers]
     };
     ^
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::<anonymous>' [-Wmissing-field-initializers]
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::data4_io_num' [-Wmissing-field-initializers]
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::data5_io_num' [-Wmissing-field-initializers]
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::data6_io_num' [-Wmissing-field-initializers]
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::data7_io_num' [-Wmissing-field-initializers]
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:51:5: warning: missing initializer for member 'spi_bus_config_t::intr_flags' [-Wmissing-field-initializers]
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:53:29: error: 'HSPI_HOST' was not declared in this scope
     spi_host_device_t host {HSPI_HOST};
                             ^~~~~~~~~
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:53:29: note: suggested alternative: 'SPI3_HOST'
     spi_host_device_t host {HSPI_HOST};
                             ^~~~~~~~~
                             SPI3_HOST
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:53:38: error: cannot convert '<brace-enclosed initializer list>' to 'spi_host_device_t' in initialization
     spi_host_device_t host {HSPI_HOST};
                                      ^
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h: In member function 'bool arduino::esp32::spi::dma::Master::begin(uint8_t)':
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:61:43: error: 'VSPI' was not declared in this scope
         bus_cfg.mosi_io_num = (spi_bus == VSPI) ? MOSI : 13;
                                           ^~~~
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:61:43: note: suggested alternative: 'SPI'
         bus_cfg.mosi_io_num = (spi_bus == VSPI) ? MOSI : 13;
                                           ^~~~
                                           SPI
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h: In member function 'bool arduino::esp32::spi::dma::Master::initialize(uint8_t)':
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:297:36: error: 'HSPI_HOST' was not declared in this scope
         host = (spi_bus == HSPI) ? HSPI_HOST : VSPI_HOST;
                                    ^~~~~~~~~
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:297:36: note: suggested alternative: 'SPI3_HOST'
         host = (spi_bus == HSPI) ? HSPI_HOST : VSPI_HOST;
                                    ^~~~~~~~~
                                    SPI3_HOST
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:297:48: error: 'VSPI_HOST' was not declared in this scope
         host = (spi_bus == HSPI) ? HSPI_HOST : VSPI_HOST;
                                                ^~~~~~~~~
/home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI/ESP32DMASPIMaster.h:297:48: note: suggested alternative: 'SPI3_HOST'
         host = (spi_bus == HSPI) ? HSPI_HOST : VSPI_HOST;
                                                ^~~~~~~~~
                                                SPI3_HOST
Using library ESP32DMASPI at version 0.2.0 in folder: /home/stefan/mydata/arduino_sketchbook/libraries/ESP32DMASPI 
Using library SPI at version 2.0.0 in folder: /home/stefan/.arduino15/packages/esp32/hardware/esp32/2.0.6/libraries/SPI 
exit status 1
Error compiling for board ESP32S3 Dev Module.

i will test if the #25 fixes this..

s-light commented 1 year ago

i will test if the #25 fixes this..

no.

i found this information in spi_types.h#L78:

//alias for different chips, **deprecated for the chips after esp32s2**
#ifdef CONFIG_IDF_TARGET_ESP32
#define SPI_HOST    SPI1_HOST
#define HSPI_HOST   SPI2_HOST
#define VSPI_HOST   SPI3_HOST
#elif CONFIG_IDF_TARGET_ESP32S2
// SPI_HOST (SPI1_HOST) is not supported by the SPI Master and SPI Slave driver on ESP32-S2 and later
#define SPI_HOST    SPI1_HOST
#define FSPI_HOST   SPI2_HOST
#define HSPI_HOST   SPI3_HOST
#endif

and esp32-hal-spi.h#L28

#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3
#define FSPI  0
#define HSPI  1
#else
#define FSPI  1 //SPI bus attached to the flash (can use the same data lines but different SS)
#define HSPI  2 //SPI bus normally mapped to pins 12 - 15, but can be matrixed to any pins
#if CONFIG_IDF_TARGET_ESP32
#define VSPI  3 //SPI bus normally attached to pins 5, 18, 19 and 23, but can be matrixed to any pins
#endif
#endif

so i extended #25 to

#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
    #define VSPI FSPI
    #define VSPI_HOST FSPI_HOST
#endif

// TODO check ESP32C3

// https://github.com/espressif/esp-idf/blob/master/components/hal/include/hal/spi_types.h#L78
// alias for different chips, **deprecated for the chips after esp32s2**
#ifdef CONFIG_IDF_TARGET_ESP32
    #define SPI_HOST    SPI1_HOST
    #define HSPI_HOST   SPI2_HOST
    #define VSPI_HOST   SPI3_HOST
// #elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
#else
    // SPI_HOST (SPI1_HOST) is not supported by the SPI Master and SPI Slave driver on ESP32-S2 and later
    // #define SPI_HOST    SPI1_HOST
    #define FSPI_HOST   SPI2_HOST
    #define HSPI_HOST   SPI3_HOST
#endif

and setup a pullrequest

hideakitai commented 11 months ago

Fixed by https://github.com/hideakitai/ESP32DMASPI/pull/31