From 8382b3bca6ccba90e8ab62a8434f8f03eb9f7c4d Mon Sep 17 00:00:00 2001 From: martinberlin Date: Mon, 19 Apr 2021 20:16:57 +0200 Subject: [PATCH] #39 Target C3: dma --- components/CalEPD/CMakeLists.txt | 10 +++++----- components/CalEPD/epd4spi.cpp | 2 +- components/CalEPD/epdspi.cpp | 14 +++++++------- .../CalEPD/models/plasticlogic/epdspi2cs.cpp | 15 ++++++++++----- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/components/CalEPD/CMakeLists.txt b/components/CalEPD/CMakeLists.txt index 9662b03..a7d55aa 100644 --- a/components/CalEPD/CMakeLists.txt +++ b/components/CalEPD/CMakeLists.txt @@ -34,9 +34,9 @@ set(srcs "models/plasticlogic/plasticlogic031.cpp" # Parallel epapers supported by Epdiy driver (Uncomment epdParallel & REQUIRES "epd_driver") - #"models/parallel/ED047TC1.cpp" - #"models/parallel/ED047TC1touch.cpp" - #"models/parallel/ED060SC4.cpp" + "models/parallel/ED047TC1.cpp" + "models/parallel/ED047TC1touch.cpp" + "models/parallel/ED060SC4.cpp" # Pending for more testing: "models/gdeh0213b73.cpp" @@ -46,7 +46,7 @@ set(srcs "epdspi.cpp" "epd4spi.cpp" # Only for parallel epapers: - #"epdParallel.cpp" + "epdParallel.cpp" ) # If the project does not use a touch display component FT6X36-IDF can be removed or #commented @@ -54,6 +54,6 @@ idf_component_register(SRCS ${srcs} REQUIRES "Adafruit-GFX" REQUIRES "FT6X36-IDF" # Only for parallel epapers: - #REQUIRES "epd_driver" + REQUIRES "epd_driver" INCLUDE_DIRS "include" ) diff --git a/components/CalEPD/epd4spi.cpp b/components/CalEPD/epd4spi.cpp index 69a9b93..9a806fd 100644 --- a/components/CalEPD/epd4spi.cpp +++ b/components/CalEPD/epd4spi.cpp @@ -14,7 +14,7 @@ #elif defined CONFIG_IDF_TARGET_ESP32C3 // chip only support spi dma channel auto-alloc #define EPD_HOST SPI2_HOST - #define DMA_CHAN 0 + #define DMA_CHAN SPI_DMA_CH_AUTO #endif /** DISPLAYS REF: __________ diff --git a/components/CalEPD/epdspi.cpp b/components/CalEPD/epdspi.cpp index d9328d1..975f8e7 100644 --- a/components/CalEPD/epdspi.cpp +++ b/components/CalEPD/epdspi.cpp @@ -14,14 +14,14 @@ #elif defined CONFIG_IDF_TARGET_ESP32C3 // chip only support spi dma channel auto-alloc #define EPD_HOST SPI2_HOST - #define DMA_CHAN 0 + #define DMA_CHAN SPI_DMA_CH_AUTO #endif void EpdSpi::init(uint8_t frequency=4,bool debug=false){ debug_enabled = debug; - if (debug) { - printf("MOSI: %d CLK: %d\nSPI_CS: %d DC: %d RST: %d BUSY: %d\n\n", CONFIG_EINK_SPI_MOSI, CONFIG_EINK_SPI_CLK, - CONFIG_EINK_SPI_CS,CONFIG_EINK_DC,CONFIG_EINK_RST,CONFIG_EINK_BUSY); + if (true) { + printf("MOSI: %d CLK: %d\nSPI_CS: %d DC: %d RST: %d BUSY: %d DMA_CH: %d\n\n", CONFIG_EINK_SPI_MOSI, CONFIG_EINK_SPI_CLK, + CONFIG_EINK_SPI_CS,CONFIG_EINK_DC,CONFIG_EINK_RST,CONFIG_EINK_BUSY, DMA_CHAN); } //Initialize GPIOs direction & initial states gpio_set_direction((gpio_num_t)CONFIG_EINK_SPI_CS, GPIO_MODE_OUTPUT); @@ -91,7 +91,7 @@ void EpdSpi::cmd(const uint8_t cmd) { if (debug_enabled) { printf("C %x\n",cmd); - } + } esp_err_t ret; spi_transaction_t t; @@ -110,9 +110,9 @@ void EpdSpi::cmd(const uint8_t cmd) void EpdSpi::data(uint8_t data) { - if (debug_enabled) { + /* if (debug_enabled) { printf("D %x\n",data); - } + } */ esp_err_t ret; spi_transaction_t t; memset(&t, 0, sizeof(t)); //Zero out the transaction diff --git a/components/CalEPD/models/plasticlogic/epdspi2cs.cpp b/components/CalEPD/models/plasticlogic/epdspi2cs.cpp index a4c00a1..04aa2d4 100644 --- a/components/CalEPD/models/plasticlogic/epdspi2cs.cpp +++ b/components/CalEPD/models/plasticlogic/epdspi2cs.cpp @@ -5,12 +5,17 @@ #include "esp_log.h" #ifdef CONFIG_IDF_TARGET_ESP32 -#define EPD_HOST HSPI_HOST -#define DMA_CHAN 2 + #define EPD_HOST HSPI_HOST + #define DMA_CHAN 2 -#elif defined CONFIG_IDF_TARGET_ESP32S2 || defined CONFIG_IDF_TARGET_ESP32C3 -#define EPD_HOST SPI2_HOST -#define DMA_CHAN EPD_HOST +#elif defined CONFIG_IDF_TARGET_ESP32S2 + #define EPD_HOST SPI2_HOST + #define DMA_CHAN EPD_HOST + +#elif defined CONFIG_IDF_TARGET_ESP32C3 + // chip only support spi dma channel auto-alloc + #define EPD_HOST SPI2_HOST + #define DMA_CHAN SPI_DMA_DISABLED #endif