fix SPI names for touch

with ESP32-C3 specific auto-dma proper selection
This commit is contained in:
arktrin 2021-12-18 20:54:50 +03:00 committed by Carlos Diaz
parent 762bb35265
commit 8cbbc299e9
5 changed files with 65 additions and 94 deletions

4
.gitignore vendored
View file

@ -56,3 +56,7 @@ dkms.conf
# ESP-IDF build dir # ESP-IDF build dir
build build
# Kconfig files
sdkconfig
sdkconfig.old

View file

@ -154,34 +154,12 @@ bool lvgl_spi_driver_init(int host,
int dma_channel, int dma_channel,
int quadwp_pin, int quadhd_pin) int quadwp_pin, int quadhd_pin)
{ {
int dma_chan = 0 /* SPI_DMA_DISABLED */; assert((0 <= host) && (SPI_HOST_MAX > host));
#if defined (CONFIG_IDF_TARGET_ESP32)
assert((SPI_HOST <= host) && (VSPI_HOST >= host));
const char *spi_names[] = {
"SPI_HOST", "HSPI_HOST", "VSPI_HOST"
};
dma_chan = dma_channel;
#elif defined (CONFIG_IDF_TARGET_ESP32S2)
assert((SPI_HOST <= host) && (HSPI_HOST >= host));
const char *spi_names[] = {
"SPI_HOST", "", ""
};
dma_chan = dma_channel;
#elif defined (CONFIG_IDF_TARGET_ESP32C3)
assert((SPI1_HOST <= host) && (SPI3_HOST >= host));
const char *spi_names[] = { const char *spi_names[] = {
"SPI1_HOST", "SPI2_HOST", "SPI3_HOST" "SPI1_HOST", "SPI2_HOST", "SPI3_HOST"
}; };
dma_chan = 3 /* SPI_DMA_CH_AUTO */; ESP_LOGI(TAG, "Configuring SPI host %s", spi_names[host]);
#else
#error "Target chip not selected"
#endif
ESP_LOGI(TAG, "Configuring SPI host %s (%d)", spi_names[host], host);
ESP_LOGI(TAG, "MISO pin: %d, MOSI pin: %d, SCLK pin: %d, IO2/WP pin: %d, IO3/HD pin: %d", ESP_LOGI(TAG, "MISO pin: %d, MOSI pin: %d, SCLK pin: %d, IO2/WP pin: %d, IO3/HD pin: %d",
miso_pin, mosi_pin, sclk_pin, quadwp_pin, quadhd_pin); miso_pin, mosi_pin, sclk_pin, quadwp_pin, quadhd_pin);
@ -189,17 +167,19 @@ bool lvgl_spi_driver_init(int host,
spi_bus_config_t buscfg = { spi_bus_config_t buscfg = {
.miso_io_num = miso_pin, .miso_io_num = miso_pin,
.mosi_io_num = mosi_pin, .mosi_io_num = mosi_pin,
.sclk_io_num = sclk_pin, .sclk_io_num = sclk_pin,
.quadwp_io_num = quadwp_pin, .quadwp_io_num = quadwp_pin,
.quadhd_io_num = quadhd_pin, .quadhd_io_num = quadhd_pin,
.max_transfer_sz = max_transfer_sz .max_transfer_sz = max_transfer_sz
}; };
ESP_LOGI(TAG, "Initializing SPI bus..."); ESP_LOGI(TAG, "Initializing SPI bus...");
esp_err_t ret = spi_bus_initialize(host, &buscfg, dma_chan); #if defined (CONFIG_IDF_TARGET_ESP32C3)
dma_channel = 3;
#endif
esp_err_t ret = spi_bus_initialize(host, &buscfg, (spi_dma_chan_t)dma_channel);
assert(ret == ESP_OK); assert(ret == ESP_OK);
return ESP_OK != ret; return ESP_OK != ret;
} }

View file

@ -64,9 +64,7 @@ extern "C" {
#define ENABLE_TOUCH_INPUT CONFIG_LV_ENABLE_TOUCH #define ENABLE_TOUCH_INPUT CONFIG_LV_ENABLE_TOUCH
#if defined (CONFIG_LV_TFT_DISPLAY_SPI1_HOST) #if defined (CONFIG_LV_TFT_DISPLAY_SPI2_HOST)
#define TFT_SPI_HOST SPI1_HOST
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI2_HOST)
#define TFT_SPI_HOST SPI2_HOST #define TFT_SPI_HOST SPI2_HOST
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI3_HOST) #elif defined (CONFIG_LV_TFT_DISPLAY_SPI3_HOST)
#define TFT_SPI_HOST SPI3_HOST #define TFT_SPI_HOST SPI3_HOST
@ -86,12 +84,10 @@ extern "C" {
#define DISP_SPI_TRANS_MODE_SIO #define DISP_SPI_TRANS_MODE_SIO
#endif #endif
#if defined (CONFIG_LV_TOUCH_CONTROLLER_SPI_HSPI) #if defined (CONFIG_LV_TOUCH_CONTROLLER_SPI2_HOST)
#define TOUCH_SPI_HOST HSPI_HOST #define TOUCH_SPI_HOST SPI2_HOST
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_SPI_VSPI) #elif defined (CONFIG_LV_TOUCH_CONTROLLER_SPI3_HOST)
#define TOUCH_SPI_HOST VSPI_HOST #define TOUCH_SPI_HOST SPI3_HOST
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_SPI_FSPI)
#define TOUCH_SPI_HOST FSPI_HOST
#endif #endif
/* Handle the FT81X Special case */ /* Handle the FT81X Special case */
@ -107,7 +103,7 @@ extern "C" {
// Detect the use of a shared SPI Bus and verify the user specified the same SPI bus for both touch and tft // Detect the use of a shared SPI Bus and verify the user specified the same SPI bus for both touch and tft
#if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_SPI) && TP_SPI_MOSI == DISP_SPI_MOSI && TP_SPI_CLK == DISP_SPI_CLK #if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_SPI) && TP_SPI_MOSI == DISP_SPI_MOSI && TP_SPI_CLK == DISP_SPI_CLK
#if TFT_SPI_HOST != TOUCH_SPI_HOST #if TFT_SPI_HOST != TOUCH_SPI_HOST
#error You must specify the same SPI host (HSPI, VSPI or FSPI) for both display and touch driver #error You must specify the same SPI host (SPIx_HOST) for both display and touch driver
#endif #endif
#define SHARED_SPI_BUS #define SHARED_SPI_BUS

View file

@ -22,7 +22,7 @@ menu "LVGL TFT Display controller"
select LV_TFT_DISPLAY_CONTROLLER_ILI9341 select LV_TFT_DISPLAY_CONTROLLER_ILI9341
select LV_TFT_DISPLAY_PROTOCOL_SPI select LV_TFT_DISPLAY_PROTOCOL_SPI
config LV_PREDEFINED_DISPLAY_M5CORE2 config LV_PREDEFINED_DISPLAY_M5CORE2
bool "M5Core2" bool "M5Core2"
select LV_TFT_DISPLAY_CONTROLLER_ILI9341 select LV_TFT_DISPLAY_CONTROLLER_ILI9341
select LV_TFT_DISPLAY_PROTOCOL_SPI select LV_TFT_DISPLAY_PROTOCOL_SPI
config LV_PREDEFINED_DISPLAY_M5STICK config LV_PREDEFINED_DISPLAY_M5STICK
@ -469,13 +469,10 @@ menu "LVGL TFT Display controller"
choice choice
prompt "TFT SPI Bus." if LV_TFT_DISPLAY_PROTOCOL_SPI prompt "TFT SPI Bus." if LV_TFT_DISPLAY_PROTOCOL_SPI
default LV_TFT_DISPLAY_SPI3_HOST if LV_PREDEFINED_DISPLAY_TTGO && \ default LV_TFT_DISPLAY_SPI2_HOST
!IDF_TARGET_ESP32S2
help help
Select the SPI Bus the TFT Display is attached to. Select the SPI Bus the TFT Display is attached to.
config LV_TFT_DISPLAY_SPI1_HOST
bool "SPI1_HOST"
config LV_TFT_DISPLAY_SPI2_HOST config LV_TFT_DISPLAY_SPI2_HOST
bool "SPI2_HOST" bool "SPI2_HOST"
config LV_TFT_DISPLAY_SPI3_HOST config LV_TFT_DISPLAY_SPI3_HOST
@ -1011,6 +1008,3 @@ menu "LVGL TFT Display controller"
default 0 default 0
endmenu endmenu

View file

@ -1,28 +1,28 @@
menu "LVGL Touch controller" menu "LVGL Touch controller"
config LV_TOUCH_CONTROLLER config LV_TOUCH_CONTROLLER
int int
default 0 if LV_TOUCH_CONTROLLER_NONE default 0 if LV_TOUCH_CONTROLLER_NONE
default 1 if LV_TOUCH_CONTROLLER_XPT2046 default 1 if LV_TOUCH_CONTROLLER_XPT2046
default 2 if LV_TOUCH_CONTROLLER_FT6X06 default 2 if LV_TOUCH_CONTROLLER_FT6X06
default 3 if LV_TOUCH_CONTROLLER_STMPE610 default 3 if LV_TOUCH_CONTROLLER_STMPE610
default 4 if LV_TOUCH_CONTROLLER_ADCRAW default 4 if LV_TOUCH_CONTROLLER_ADCRAW
default 5 if LV_TOUCH_CONTROLLER_FT81X default 5 if LV_TOUCH_CONTROLLER_FT81X
default 6 if LV_TOUCH_CONTROLLER_RA8875 default 6 if LV_TOUCH_CONTROLLER_RA8875
default 7 if LV_TOUCH_CONTROLLER_GT911 default 7 if LV_TOUCH_CONTROLLER_GT911
choice choice
prompt "Select a touch panel controller model." prompt "Select a touch panel controller model."
default LV_TOUCH_CONTROLLER_NONE default LV_TOUCH_CONTROLLER_NONE
help help
Select the controller for your touch panel. Select the controller for your touch panel.
config LV_TOUCH_CONTROLLER_NONE config LV_TOUCH_CONTROLLER_NONE
bool "None" bool "None"
config LV_TOUCH_CONTROLLER_XPT2046 config LV_TOUCH_CONTROLLER_XPT2046
select LV_TOUCH_DRIVER_PROTOCOL_SPI select LV_TOUCH_DRIVER_PROTOCOL_SPI
bool "XPT2046" bool "XPT2046"
config LV_TOUCH_CONTROLLER_FT6X06 config LV_TOUCH_CONTROLLER_FT6X06
select LV_I2C_TOUCH select LV_I2C_TOUCH
bool "FT6X06" bool "FT6X06"
config LV_TOUCH_CONTROLLER_STMPE610 config LV_TOUCH_CONTROLLER_STMPE610
@ -61,23 +61,20 @@ menu "LVGL Touch controller"
bool bool
help help
Touch controller uses same interface/device as display Touch controller uses same interface/device as display
(Note: Display must be initialized before touch) (Note: Display must be initialized before touch)
choice choice
prompt "Touch Controller SPI Bus." prompt "Touch Controller SPI Bus."
depends on LV_TOUCH_DRIVER_PROTOCOL_SPI depends on LV_TOUCH_DRIVER_PROTOCOL_SPI
default LV_TOUCH_CONTROLLER_SPI_VSPI if !IDF_TARGET_ESP32S2 default LV_TOUCH_CONTROLLER_SPI2_HOST
default LV_TOUCH_CONTROLLER_SPI_FSPI if IDF_TARGET_ESP32S2
help help
Select the SPI Bus the TFT Display is attached to. Select the SPI Bus the touch controller is attached to.
config LV_TOUCH_CONTROLLER_SPI_HSPI config LV_TOUCH_CONTROLLER_SPI2_HOST
bool "HSPI" bool "SPI2_HOST"
config LV_TOUCH_CONTROLLER_SPI_VSPI config LV_TOUCH_CONTROLLER_SPI3_HOST
bool "VSPI" if !IDF_TARGET_ESP32S2 bool "SPI3_HOST"
config LV_TOUCH_CONTROLLER_SPI_FSPI
bool "FSPI" if IDF_TARGET_ESP32S2
endchoice endchoice
menu "Touchpanel (XPT2046) Pin Assignments" menu "Touchpanel (XPT2046) Pin Assignments"
@ -86,7 +83,7 @@ menu "LVGL Touch controller"
config LV_TOUCH_SPI_MISO config LV_TOUCH_SPI_MISO
int int
prompt "GPIO for MISO (Master In Slave Out)" prompt "GPIO for MISO (Master In Slave Out)"
default 35 if LV_PREDEFINED_PINS_38V1 default 35 if LV_PREDEFINED_PINS_38V1
default 19 default 19
help help
@ -103,7 +100,7 @@ menu "LVGL Touch controller"
config LV_TOUCH_SPI_CLK config LV_TOUCH_SPI_CLK
int "GPIO for CLK (SCK / Serial Clock)" int "GPIO for CLK (SCK / Serial Clock)"
default 26 if LV_PREDEFINED_PINS_38V1 default 26 if LV_PREDEFINED_PINS_38V1
default 18 default 18
help help
@ -119,7 +116,7 @@ menu "LVGL Touch controller"
config LV_TOUCH_PIN_IRQ config LV_TOUCH_PIN_IRQ
int "GPIO for IRQ (Interrupt Request)" int "GPIO for IRQ (Interrupt Request)"
default 27 if LV_PREDEFINED_PINS_38V4 default 27 if LV_PREDEFINED_PINS_38V4
default 25 default 25
help help
@ -153,10 +150,10 @@ menu "LVGL Touch controller"
default 4095 if LV_PREDEFINED_PINS_38V4 default 4095 if LV_PREDEFINED_PINS_38V4
default 1900 default 1900
config LV_TOUCH_XY_SWAP config LV_TOUCH_XY_SWAP
bool bool
prompt "Swap XY." prompt "Swap XY."
default y default y
config LV_TOUCH_INVERT_X config LV_TOUCH_INVERT_X
bool bool
@ -216,7 +213,7 @@ menu "LVGL Touch controller"
config LV_TOUCH_SPI_MISO config LV_TOUCH_SPI_MISO
int int
prompt "GPIO for MISO (Master In Slave Out)" prompt "GPIO for MISO (Master In Slave Out)"
default 35 if LV_PREDEFINED_PINS_38V1 default 35 if LV_PREDEFINED_PINS_38V1
default 19 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING default 19 if LV_PREDEFINED_DISPLAY_ADA_FEATHERWING
default 19 default 19
@ -278,9 +275,9 @@ menu "LVGL Touch controller"
default 3800 default 3800
config LV_TOUCH_XY_SWAP config LV_TOUCH_XY_SWAP
bool bool
prompt "Swap XY." prompt "Swap XY."
default n default n
config LV_TOUCH_INVERT_X config LV_TOUCH_INVERT_X
bool bool
@ -379,25 +376,25 @@ menu "LVGL Touch controller"
config LV_TOUCH_X_MIN config LV_TOUCH_X_MIN
int int
prompt "Minimum X coordinate ADC value" prompt "Minimum X coordinate ADC value"
range 0 1023 range 0 1023
default 0 default 0
config LV_TOUCH_Y_MIN config LV_TOUCH_Y_MIN
int int
prompt "Minimum Y coordinate ADC value" prompt "Minimum Y coordinate ADC value"
range 0 1023 range 0 1023
default 0 default 0
config LV_TOUCH_X_MAX config LV_TOUCH_X_MAX
int int
prompt "Maximum X coordinate ADC value" prompt "Maximum X coordinate ADC value"
range 0 1023 range 0 1023
default 1023 default 1023
config LV_TOUCH_Y_MAX config LV_TOUCH_Y_MAX
int int
prompt "Maximum Y coordinate ADC value" prompt "Maximum Y coordinate ADC value"
range 0 1023 range 0 1023
default 1023 default 1023
config LV_TOUCH_XY_SWAP config LV_TOUCH_XY_SWAP
@ -418,13 +415,13 @@ menu "LVGL Touch controller"
config LV_TOUCH_RA8875_SAMPLE_TIME config LV_TOUCH_RA8875_SAMPLE_TIME
int int
prompt "TP Sample Time Adjusting" prompt "TP Sample Time Adjusting"
range 0 7 range 0 7
default 0 default 0
config LV_TOUCH_RA8875_ADC_CLOCK config LV_TOUCH_RA8875_ADC_CLOCK
int int
prompt "ADC Clock Setting" prompt "ADC Clock Setting"
range 0 7 range 0 7
default 0 default 0
config LV_TOUCH_RA8875_WAKEUP_ENABLE config LV_TOUCH_RA8875_WAKEUP_ENABLE
@ -447,10 +444,10 @@ menu "LVGL Touch controller"
menu "Touchpanel Configuration (GT911)" menu "Touchpanel Configuration (GT911)"
depends on LV_TOUCH_CONTROLLER_GT911 depends on LV_TOUCH_CONTROLLER_GT911
config LV_GT911_SWAPXY config LV_GT911_SWAPXY
bool bool
prompt "Swap X with Y coordinate." prompt "Swap X with Y coordinate."
default y default y
config LV_GT911_INVERT_X config LV_GT911_INVERT_X
bool bool
@ -472,14 +469,14 @@ menu "LVGL Touch controller"
config LV_I2C_TOUCH_PORT_0 config LV_I2C_TOUCH_PORT_0
bool bool
prompt "I2C port 0" prompt "I2C port 0"
help help
I2C is shared peripheral managed by I2C Manager. In order to configure I2C Manager (pinout, etc.) see menu I2C is shared peripheral managed by I2C Manager. In order to configure I2C Manager (pinout, etc.) see menu
Component config->I2C Port Settings. Component config->I2C Port Settings.
config LV_I2C_TOUCH_PORT_1 config LV_I2C_TOUCH_PORT_1
bool bool
prompt "I2C port 1" prompt "I2C port 1"
help help
I2C is shared peripheral managed by I2C Manager. In order to configure I2C Manager (pinout, etc.) see menu I2C is shared peripheral managed by I2C Manager. In order to configure I2C Manager (pinout, etc.) see menu
Component config->I2C Port Settings. Component config->I2C Port Settings.