diff --git a/cores/esp32/esp32-hal-gpio.c b/cores/esp32/esp32-hal-gpio.c index f0eb4dec7db..552126b848d 100644 --- a/cores/esp32/esp32-hal-gpio.c +++ b/cores/esp32/esp32-hal-gpio.c @@ -37,7 +37,13 @@ #include "soc/periph_defs.h" #include "soc/rtc_io_reg.h" #define GPIO_FUNC 1 -#else +#elif CONFIG_IDF_TARGET_ESP32C3 +#include "esp32c3/rom/ets_sys.h" +#include "esp32c3/rom/gpio.h" +#include "esp_intr_alloc.h" +#include "soc/periph_defs.h" +#define USE_ESP_IDF_GPIO 1 +#else #define USE_ESP_IDF_GPIO 1 #endif #else // ESP32 Before IDF 4.0 @@ -143,6 +149,29 @@ const DRAM_ATTR esp32_gpioMux_t esp32_gpioMux[SOC_GPIO_PIN_COUNT]={ {0xb8, -1, -1, -1},//SCL? {0xbc, -1, -1, -1},//INPUT ONLY {0, -1, -1, -1} +#elif CONFIG_IDF_TARGET_ESP32C3 + {0x04, -1, 0, -1}, // ADC1_CH0 + {0x08, -1, 1, -1}, // ADC1_CH1 + {0x0c, -1, 2, -1}, // ADC1_CH2 | FSPIQ + {0x10, -1, 3, -1}, // ADC1_CH3 + {0x14, -1, 4, -1}, // MTMS | ADC1_CH4 | FSPIHD + {0x18, -1, 5, -1}, // MTDI | ADC2_CH0 | FSPIWP + {0x1c, -1, -1, -1}, // MTCK | FSPICLK + {0x20, -1, -1, -1}, // MTDO | FSPID + {0x24, -1, -1, -1}, // + {0x28, -1, -1, -1}, // + {0x2c, -1, -1, -1}, // FSPICSO + {0x30, -1, -1, -1}, // + {0x34, -1, -1, -1}, // SPIHD + {0x38, -1, -1, -1}, // SPIWP + {0x3c, -1, -1, -1}, // SPICSO + {0x40, -1, -1, -1}, // SPICLK + {0x44, -1, -1, -1}, // SPID + {0x48, -1, -1, -1}, // SPIQ + {0x4c, -1, -1, -1}, // USB- + {0x50, -1, -1, -1}, // USB+ + {0x54, -1, -1, -1}, // U0RXD + {0x58, -1, -1, -1}, // U0TXD #endif }; @@ -481,4 +510,3 @@ extern int digitalRead(uint8_t pin) __attribute__ ((weak, alias("__digitalRead") extern void attachInterrupt(uint8_t pin, voidFuncPtr handler, int mode) __attribute__ ((weak, alias("__attachInterrupt"))); extern void attachInterruptArg(uint8_t pin, voidFuncPtrArg handler, void * arg, int mode) __attribute__ ((weak, alias("__attachInterruptArg"))); extern void detachInterrupt(uint8_t pin) __attribute__ ((weak, alias("__detachInterrupt"))); - diff --git a/cores/esp32/esp32-hal-rmt.c b/cores/esp32/esp32-hal-rmt.c index 3cee1e695e9..9c619eea2c8 100644 --- a/cores/esp32/esp32-hal-rmt.c +++ b/cores/esp32/esp32-hal-rmt.c @@ -124,10 +124,6 @@ static rmt_obj_t g_rmt_objects[MAX_CHANNELS] = { /** * Internal variables for driver data */ -static intr_handle_t intr_handle; - -static bool periph_enabled = false; - static xSemaphoreHandle g_rmt_block_lock = NULL; /** @@ -188,21 +184,21 @@ static void _rmtRxTask(void *args) { rmt_item32_t *data = NULL; if (!rmt) { - log_e(" -- Inavalid Argument \n"); + log_e(" -- Inavalid Argument"); goto err; } int channel = rmt->channel; rmt_get_ringbuf_handle(channel, &rb); if (!rb) { - log_e(" -- Failed to get RMT ringbuffer handle\n"); + log_e(" -- Failed to get RMT ringbuffer handle"); goto err; } for(;;) { data = (rmt_item32_t *) xRingbufferReceive(rb, &rmt_len, portMAX_DELAY); if (data) { - log_d(" -- Got %d bytes on RX Ringbuffer - CH %d\n", rmt_len, rmt->channel); + log_d(" -- Got %d bytes on RX Ringbuffer - CH %d", rmt_len, rmt->channel); rmt->rx_completed = true; // used in rmtReceiveCompleted() // callback if (rmt->cb) { @@ -390,7 +386,6 @@ bool rmtReadData(rmt_obj_t* rmt, uint32_t* data, size_t size) if (!rmt) { return false; } - int channel = rmt->channel; rmtReadAsync(rmt, (rmt_data_t*) data, size, NULL, false, 0); return true; @@ -492,7 +487,7 @@ bool rmtReadAsync(rmt_obj_t* rmt, rmt_data_t* data, size_t size, void* eventFlag // wait for data if requested so if (waitForData && eventFlag) { - uint32_t flags = xEventGroupWaitBits(eventFlag, RMT_FLAGS_ALL, + xEventGroupWaitBits(eventFlag, RMT_FLAGS_ALL, pdTRUE /* clear on exit */, pdFALSE /* wait for all bits */, timeout); } return true; @@ -520,9 +515,9 @@ float rmtSetTick(rmt_obj_t* rmt, float tick) rmt_obj_t* rmtInit(int pin, bool tx_not_rx, rmt_reserve_memsize_t memsize) { int buffers = memsize; - rmt_obj_t* rmt; - size_t i; - size_t j; + rmt_obj_t* rmt = NULL; + size_t i = 0; + size_t j = 0; // create common block mutex for protecting allocs from multiple threads if (!g_rmt_block_lock) { @@ -555,7 +550,7 @@ rmt_obj_t* rmtInit(int pin, bool tx_not_rx, rmt_reserve_memsize_t memsize) } if (i == MAX_CHANNELS || i+j > MAX_CHANNELS || j != buffers) { xSemaphoreGive(g_rmt_block_lock); - log_e("rmInit Failed - not enough channels\n"); + log_e("rmInit Failed - not enough channels"); return NULL; } @@ -591,7 +586,7 @@ rmt_obj_t* rmtInit(int pin, bool tx_not_rx, rmt_reserve_memsize_t memsize) esp_err_code = rmt_config(&config); if (esp_err_code == ESP_OK) esp_err_code = rmt_driver_install(channel, 0, 0); - log_d(" -- %s RMT - CH %d - %d RAM Blocks - pin %d\n", tx_not_rx?"TX":"RX", channel, buffers, pin); + log_d(" -- %s RMT - CH %d - %d RAM Blocks - pin %d", tx_not_rx?"TX":"RX", channel, buffers, pin); } else { rmt_config_t config = RMT_DEFAULT_ARD_CONFIG_RX(pin, channel, buffers); esp_err_code = rmt_config(&config); @@ -599,7 +594,7 @@ rmt_obj_t* rmtInit(int pin, bool tx_not_rx, rmt_reserve_memsize_t memsize) esp_err_code = rmt_driver_install(channel, 1024, 0); if (esp_err_code == ESP_OK) esp_err_code = rmt_set_memory_owner(channel, RMT_MEM_OWNER_RX); - log_d(" -- %s RMT - CH %d - %d RAM Blocks - pin %d\n", tx_not_rx?"TX":"RX", channel, buffers, pin); + log_d(" -- %s RMT - CH %d - %d RAM Blocks - pin %d", tx_not_rx?"TX":"RX", channel, buffers, pin); } RMT_MUTEX_UNLOCK(channel); diff --git a/variants/adafruit_feather_esp32s2_reversetft/bootloader.bin b/variants/adafruit_feather_esp32s2_reversetft/bootloader.bin new file mode 100644 index 00000000000..9889ef9386e Binary files /dev/null and b/variants/adafruit_feather_esp32s2_reversetft/bootloader.bin differ diff --git a/variants/adafruit_feather_esp32s2_reversetft/partitions.csv b/variants/adafruit_feather_esp32s2_reversetft/partitions.csv new file mode 100644 index 00000000000..164ba0d5965 --- /dev/null +++ b/variants/adafruit_feather_esp32s2_reversetft/partitions.csv @@ -0,0 +1,11 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +# bootloader.bin,, 0x1000, 32K +# partition table, 0x8000, 4K + +nvs, data, nvs, 0x9000, 20K, +otadata, data, ota, 0xe000, 8K, +ota_0, 0, ota_0, 0x10000, 1408K, +ota_1, 0, ota_1, 0x170000, 1408K, +uf2, app, factory,0x2d0000, 256K, +ffat, data, fat, 0x310000, 960K, diff --git a/variants/adafruit_feather_esp32s2_reversetft/pins_arduino.h b/variants/adafruit_feather_esp32s2_reversetft/pins_arduino.h new file mode 100644 index 00000000000..84cfd2879cd --- /dev/null +++ b/variants/adafruit_feather_esp32s2_reversetft/pins_arduino.h @@ -0,0 +1,68 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + + +#define USB_VID 0x239A +#define USB_PID 0x80ED +#define USB_MANUFACTURER "Adafruit" +#define USB_PRODUCT "Feather ESP32-S2 Reverse TFT" +#define USB_SERIAL "" // Empty string for MAC adddress + + +#define EXTERNAL_NUM_INTERRUPTS 46 +#define NUM_DIGITAL_PINS 48 +#define NUM_ANALOG_INPUTS 20 + +#define analogInputToDigitalPin(p) (((p)<20)?(esp32_adc2gpio[(p)]):-1) +#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinHasPWM(p) (p < 46) + +#define LED_BUILTIN 13 + +#define PIN_NEOPIXEL 33 +#define NEOPIXEL_NUM 1 // number of neopixels +#define NEOPIXEL_POWER 21 // power pin +#define NEOPIXEL_POWER_ON HIGH // power pin state when on + +#define TFT_I2C_POWER 7 +#define TFT_CS 42 +#define TFT_RST 41 +#define TFT_DC 40 +#define TFT_BACKLITE 45 + +static const uint8_t SDA = 3; +static const uint8_t SCL = 4; + +static const uint8_t SS = 42; +static const uint8_t MOSI = 35; +static const uint8_t SCK = 36; +static const uint8_t MISO = 37; + +static const uint8_t A0 = 18; +static const uint8_t A1 = 17; +static const uint8_t A2 = 16; +static const uint8_t A3 = 15; +static const uint8_t A4 = 14; +static const uint8_t A5 = 8; + +static const uint8_t TX = 39; +static const uint8_t RX = 38; +static const uint8_t TX1 = 39; +static const uint8_t RX1 = 38; + +static const uint8_t T5 = 5; +static const uint8_t T6 = 6; +static const uint8_t T8 = 8; +static const uint8_t T9 = 9; +static const uint8_t T10 = 10; +static const uint8_t T11 = 11; +static const uint8_t T12 = 12; +static const uint8_t T13 = 13; +static const uint8_t T14 = 14; + +static const uint8_t DAC1 = 17; +static const uint8_t DAC2 = 18; + +#endif /* Pins_Arduino_h */ diff --git a/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin b/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin new file mode 100644 index 00000000000..459ab1022e3 Binary files /dev/null and b/variants/adafruit_feather_esp32s2_reversetft/tinyuf2.bin differ diff --git a/variants/adafruit_feather_esp32s2_tft/bootloader.bin b/variants/adafruit_feather_esp32s2_tft/bootloader.bin index c4152676d5e..5f49742aa44 100644 Binary files a/variants/adafruit_feather_esp32s2_tft/bootloader.bin and b/variants/adafruit_feather_esp32s2_tft/bootloader.bin differ diff --git a/variants/adafruit_feather_esp32s2_tft/pins_arduino.h b/variants/adafruit_feather_esp32s2_tft/pins_arduino.h index 1a3bdd20b4c..03ca198d8cd 100644 --- a/variants/adafruit_feather_esp32s2_tft/pins_arduino.h +++ b/variants/adafruit_feather_esp32s2_tft/pins_arduino.h @@ -26,15 +26,16 @@ #define NEOPIXEL_POWER 34 // power pin #define NEOPIXEL_POWER_ON HIGH // power pin state when on -#define TFT_CS 42 -#define TFT_RST 41 -#define TFT_DC 40 +#define TFT_I2C_POWER 21 +#define TFT_CS 7 +#define TFT_RST 40 +#define TFT_DC 39 #define TFT_BACKLITE 45 static const uint8_t SDA = 42; static const uint8_t SCL = 41; -static const uint8_t SS = 21; +static const uint8_t SS = 7; static const uint8_t MOSI = 35; static const uint8_t SCK = 36; static const uint8_t MISO = 37; diff --git a/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin b/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin index f974aadbfe0..740599eca54 100644 Binary files a/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin and b/variants/adafruit_feather_esp32s2_tft/tinyuf2.bin differ diff --git a/variants/adafruit_qtpy_esp32s2/pins_arduino.h b/variants/adafruit_qtpy_esp32s2/pins_arduino.h index 1f698b7100d..1373212ba4d 100644 --- a/variants/adafruit_qtpy_esp32s2/pins_arduino.h +++ b/variants/adafruit_qtpy_esp32s2/pins_arduino.h @@ -34,8 +34,8 @@ static const uint8_t SCL1 = 40; static const uint8_t SS = 42; static const uint8_t MOSI = 35; -static const uint8_t SCK = 34; -static const uint8_t MISO = 33; +static const uint8_t SCK = 36; +static const uint8_t MISO = 37; static const uint8_t A0 = 18; static const uint8_t A1 = 17; @@ -48,6 +48,8 @@ static const uint8_t A7 = 16; static const uint8_t TX = 5; static const uint8_t RX = 16; +#define TX1 TX +#define RX1 RX static const uint8_t T5 = 5; static const uint8_t T6 = 6;