1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-27 01:56:14 +01:00

ESP32-S3 initial compilation support

This commit is contained in:
pmantoine 2023-12-31 15:18:12 +08:00
parent 503378f1bb
commit a97afde72a
6 changed files with 52 additions and 62 deletions

View File

@ -83,16 +83,34 @@ int DCCTimer::freeMemory() {
#include <soc/sens_struct.h> #include <soc/sens_struct.h>
#undef ADC_INPUT_MAX_VALUE #undef ADC_INPUT_MAX_VALUE
#define ADC_INPUT_MAX_VALUE 4095 // 12 bit ADC #define ADC_INPUT_MAX_VALUE 4095 // 12 bit ADC
#if defined(ARDUINO_ESP32_DEV)
#define pinToADC1Channel(X) (adc1_channel_t)(((X) > 35) ? (X)-36 : (X)-28) #define pinToADC1Channel(X) (adc1_channel_t)(((X) > 35) ? (X)-36 : (X)-28)
#elif defined(ARDUINO_ESP32S3_DEV)
#define pinToADC1Channel(X) (adc1_channel_t)(((X) < 11) ? (X)-2 : (X)-11)
#else
#warning This ESP32 variant is not supported!
#endif
int IRAM_ATTR local_adc1_get_raw(int channel) { int IRAM_ATTR local_adc1_get_raw(int channel) {
uint16_t adc_value; uint16_t adc_value;
#if defined(ARDUINO_ESP32_DEV)
SENS.sar_meas_start1.sar1_en_pad = (1 << channel); // only one channel is selected SENS.sar_meas_start1.sar1_en_pad = (1 << channel); // only one channel is selected
while (SENS.sar_slave_addr1.meas_status != 0); while (SENS.sar_slave_addr1.meas_status != 0);
SENS.sar_meas_start1.meas1_start_sar = 0; SENS.sar_meas_start1.meas1_start_sar = 0;
SENS.sar_meas_start1.meas1_start_sar = 1; SENS.sar_meas_start1.meas1_start_sar = 1;
while (SENS.sar_meas_start1.meas1_done_sar == 0); while (SENS.sar_meas_start1.meas1_done_sar == 0);
adc_value = SENS.sar_meas_start1.meas1_data_sar; adc_value = SENS.sar_meas_start1.meas1_data_sar;
#elif defined(ARDUINO_ESP32S3_DEV)
// Between variants... Espressif decides to rename things... sigh
SENS.sar_meas1_ctrl2.sar1_en_pad = (1 << channel); // only one channel is selected
while (SENS.sar_slave_addr1.meas_status != 0);
SENS.sar_meas1_ctrl2.meas1_start_sar = 0;
SENS.sar_meas1_ctrl2.meas1_start_sar = 1;
while (SENS.sar_meas1_ctrl2.meas1_done_sar == 0);
adc_value = SENS.sar_meas1_ctrl2.meas1_data_sar;
#else
#warning This ESP32 variant is not supported!
#endif
return adc_value; return adc_value;
} }

View File

@ -38,6 +38,7 @@
#include "soc/timer_group_struct.h" #include "soc/timer_group_struct.h"
#include "soc/timer_group_reg.h" #include "soc/timer_group_reg.h"
void feedTheDog0(){ void feedTheDog0(){
#if defined(ARDUINO_ESP32_DEV)
// feed dog 0 // feed dog 0
TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable
TIMERG0.wdt_feed=1; // feed dog TIMERG0.wdt_feed=1; // feed dog
@ -46,6 +47,13 @@ void feedTheDog0(){
//TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable //TIMERG1.wdt_wprotect=TIMG_WDT_WKEY_VALUE; // write enable
//TIMERG1.wdt_feed=1; // feed dog //TIMERG1.wdt_feed=1; // feed dog
//TIMERG1.wdt_wprotect=0; // write protect //TIMERG1.wdt_wprotect=0; // write protect
#elif defined(ARDUINO_ESP32S3_DEV)
TIMERG0.wdtwprotect.wdt_wkey = TIMG_WDT_WKEY_V; // write enable
TIMERG0.wdtfeed.wdt_feed = 1; // feed dog
TIMERG0.wdtwprotect.wdt_wkey = 0; // write protect
#else
#warning This ESP32 variant not supported
#endif
} }
/* /*

View File

@ -37,5 +37,5 @@ public:
static void loop(); static void loop();
private: private:
}; };
#endif //WifiESP8266_h #endif // include guard
#endif //ESP8266 #endif // ARDUINO_ARCH_ESP32

View File

@ -125,9 +125,15 @@
#define ARDUINO_TYPE "ESP8266" #define ARDUINO_TYPE "ESP8266"
#warning "ESP8266 platform untested, you are on your own" #warning "ESP8266 platform untested, you are on your own"
#elif defined(ARDUINO_ARCH_ESP32) #elif defined(ARDUINO_ARCH_ESP32)
#define ARDUINO_TYPE "ESP32"
#ifndef DISABLE_EEPROM #ifndef DISABLE_EEPROM
#define DISABLE_EEPROM #define DISABLE_EEPROM
#if defined(ARDUINO_ESP32_DEV)
#define ARDUINO_TYPE "ESP32-WROOM"
#elif defined (ARDUINO_ESP32S3_DEV)
#define ARDUINO_TYPE "ESP32-S3"
// #undef USB_SERIAL
// #define USB_SERIAL SerialUSB
#endif
#endif #endif
#elif defined(ARDUINO_ARCH_SAMD) #elif defined(ARDUINO_ARCH_SAMD)
#define ARDUINO_TYPE "SAMD21" #define ARDUINO_TYPE "SAMD21"

View File

@ -30,7 +30,6 @@ include_dir = .
[env] [env]
build_flags = -Wall -Wextra build_flags = -Wall -Wextra
; monitor_filters = time
[env:samd21-dev-usb] [env:samd21-dev-usb]
platform = atmelsam platform = atmelsam
@ -193,9 +192,6 @@ build_flags = -std=c++17 -Os -g2 -Wunused-variable
monitor_speed = 115200 monitor_speed = 115200
monitor_echo = yes monitor_echo = yes
; Experimental - no reason this should not work, but not
; tested as yet
;
[env:Nucleo-F401RE] [env:Nucleo-F401RE]
platform = ststm32 platform = ststm32
board = nucleo_f401re board = nucleo_f401re
@ -205,59 +201,6 @@ build_flags = -std=c++17 -Os -g2 -Wunused-variable
monitor_speed = 115200 monitor_speed = 115200
monitor_echo = yes monitor_echo = yes
; Commented out by default as the F13ZH has variant files
; but NOT the nucleo_f413zh.json file which needs to be
; installed before you can let PlatformIO see this
;
; [env:Nucleo-F413ZH]
; platform = ststm32
; board = nucleo_f413zh
; framework = arduino
; lib_deps = ${env.lib_deps}
; build_flags = -std=c++17 -Os -g2 -Wunused-variable
; monitor_speed = 115200
; monitor_echo = yes
; Commented out by default as the F446ZE needs variant files
; installed before you can let PlatformIO see this
;
; [env:Nucleo-F446ZE]
; platform = ststm32
; board = nucleo_f446ze
; framework = arduino
; lib_deps = ${env.lib_deps}
; build_flags = -std=c++17 -Os -g2 -Wunused-variable
; monitor_speed = 115200
; monitor_echo = yes
; Commented out by default as the F412ZG needs variant files
; installed before you can let PlatformIO see this
;
; [env:Nucleo-F412ZG]
; platform = ststm32
; board = blah_f412zg
; framework = arduino
; lib_deps = ${env.lib_deps}
; build_flags = -std=c++17 -Os -g2 -Wunused-variable
; monitor_speed = 115200
; monitor_echo = yes
; upload_protocol = stlink
; Experimental - Ethernet work still in progress
;
; [env:Nucleo-F429ZI]
; platform = ststm32
; board = nucleo_f429zi
; framework = arduino
; lib_deps = ${env.lib_deps}
; arduino-libraries/Ethernet @ ^2.0.1
; stm32duino/STM32Ethernet @ ^1.3.0
; stm32duino/STM32duino LwIP @ ^2.1.2
; build_flags = -std=c++17 -Os -g2 -Wunused-variable
; monitor_speed = 115200
; monitor_echo = yes
; upload_protocol = stlink
[env:Teensy3_2] [env:Teensy3_2]
platform = teensy platform = teensy
board = teensy31 board = teensy31
@ -297,3 +240,17 @@ framework = arduino
build_flags = -std=c++17 -Os -g2 build_flags = -std=c++17 -Os -g2
lib_deps = ${env.lib_deps} lib_deps = ${env.lib_deps}
lib_ignore = lib_ignore =
[env:ESP32_S3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
board_upload.flash_size = 8MB
board_build.partitions = default_8MB.csv
build_flags =
-std=c++17
-DARDUINO_USB_CDC_ON_BOOT=1
board_build.arduino.memory_type = opi_opi
lib_deps = ${env.lib_deps}
monitor_speed = 115200
monitor_echo = yes

View File

@ -3,7 +3,8 @@
#include "StringFormatter.h" #include "StringFormatter.h"
#define VERSION "5.2.1" #define VERSION "5.2.2"
// 5.2.2 - ESP32-S3 initial code support, WDT, ADCee(), but note RMT not tested!
// 5.2.1 - Trackmanager rework for simpler structure // 5.2.1 - Trackmanager rework for simpler structure
// 5.2.0 - ESP32: Autoreverse and booster mode support // 5.2.0 - ESP32: Autoreverse and booster mode support
// 5.1.21 - EXRAIL invoke multiple ON handlers for same event // 5.1.21 - EXRAIL invoke multiple ON handlers for same event