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"
@ -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
@ -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