Skip to content

Commit 0c70525

Browse files
committed
Merge branch 'esp32-s3-support' of https://github.com/espressif/arduino-esp32 into espressif-esp32-s3-support
2 parents 2b05891 + b7c018d commit 0c70525

File tree

9 files changed

+258
-27
lines changed

9 files changed

+258
-27
lines changed

Diff for: boards.txt

+149
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,155 @@ esp32.menu.DebugLevel.verbose.build.code_debug=5
691691

692692
##############################################################
693693

694+
esp32da.name=ESP32-WROOM-DA Module
695+
696+
esp32da.upload.tool=esptool_py
697+
esp32da.upload.maximum_size=1310720
698+
esp32da.upload.maximum_data_size=327680
699+
esp32da.upload.flags=
700+
esp32da.upload.extra_flags=
701+
702+
esp32da.serial.disableDTR=true
703+
esp32da.serial.disableRTS=true
704+
705+
esp32da.build.tarch=xtensa
706+
esp32da.build.bootloader_addr=0x1000
707+
esp32da.build.target=esp32
708+
esp32da.build.mcu=esp32
709+
esp32da.build.core=esp32
710+
esp32da.build.variant=esp32da
711+
esp32da.build.board=ESP32_WROOM_DA
712+
713+
esp32da.build.f_cpu=240000000L
714+
esp32da.build.flash_size=4MB
715+
esp32da.build.flash_freq=40m
716+
esp32da.build.flash_mode=dio
717+
esp32da.build.boot=dio
718+
esp32da.build.partitions=default
719+
esp32da.build.defines=
720+
esp32da.build.loop_core=
721+
esp32da.build.event_core=
722+
723+
esp32da.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
724+
esp32da.menu.PartitionScheme.default.build.partitions=default
725+
esp32da.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
726+
esp32da.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
727+
esp32da.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
728+
esp32da.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
729+
esp32da.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
730+
esp32da.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
731+
esp32da.menu.PartitionScheme.minimal.build.partitions=minimal
732+
esp32da.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
733+
esp32da.menu.PartitionScheme.no_ota.build.partitions=no_ota
734+
esp32da.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
735+
esp32da.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
736+
esp32da.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
737+
esp32da.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
738+
esp32da.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
739+
esp32da.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
740+
esp32da.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
741+
esp32da.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
742+
esp32da.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
743+
esp32da.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
744+
esp32da.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
745+
esp32da.menu.PartitionScheme.huge_app.build.partitions=huge_app
746+
esp32da.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
747+
esp32da.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
748+
esp32da.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
749+
esp32da.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
750+
esp32da.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
751+
esp32da.menu.PartitionScheme.fatflash.build.partitions=ffat
752+
esp32da.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
753+
esp32da.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
754+
esp32da.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
755+
esp32da.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
756+
esp32da.menu.PartitionScheme.rainmaker=RainMaker
757+
esp32da.menu.PartitionScheme.rainmaker.build.partitions=rainmaker
758+
esp32da.menu.PartitionScheme.rainmaker.upload.maximum_size=3145728
759+
760+
esp32da.menu.CPUFreq.240=240MHz (WiFi/BT)
761+
esp32da.menu.CPUFreq.240.build.f_cpu=240000000L
762+
esp32da.menu.CPUFreq.160=160MHz (WiFi/BT)
763+
esp32da.menu.CPUFreq.160.build.f_cpu=160000000L
764+
esp32da.menu.CPUFreq.80=80MHz (WiFi/BT)
765+
esp32da.menu.CPUFreq.80.build.f_cpu=80000000L
766+
esp32da.menu.CPUFreq.40=40MHz (40MHz XTAL)
767+
esp32da.menu.CPUFreq.40.build.f_cpu=40000000L
768+
esp32da.menu.CPUFreq.26=26MHz (26MHz XTAL)
769+
esp32da.menu.CPUFreq.26.build.f_cpu=26000000L
770+
esp32da.menu.CPUFreq.20=20MHz (40MHz XTAL)
771+
esp32da.menu.CPUFreq.20.build.f_cpu=20000000L
772+
esp32da.menu.CPUFreq.13=13MHz (26MHz XTAL)
773+
esp32da.menu.CPUFreq.13.build.f_cpu=13000000L
774+
esp32da.menu.CPUFreq.10=10MHz (40MHz XTAL)
775+
esp32da.menu.CPUFreq.10.build.f_cpu=10000000L
776+
777+
esp32da.menu.FlashMode.qio=QIO
778+
esp32da.menu.FlashMode.qio.build.flash_mode=dio
779+
esp32da.menu.FlashMode.qio.build.boot=qio
780+
esp32da.menu.FlashMode.dio=DIO
781+
esp32da.menu.FlashMode.dio.build.flash_mode=dio
782+
esp32da.menu.FlashMode.dio.build.boot=dio
783+
esp32da.menu.FlashMode.qout=QOUT
784+
esp32da.menu.FlashMode.qout.build.flash_mode=dout
785+
esp32da.menu.FlashMode.qout.build.boot=qout
786+
esp32da.menu.FlashMode.dout=DOUT
787+
esp32da.menu.FlashMode.dout.build.flash_mode=dout
788+
esp32da.menu.FlashMode.dout.build.boot=dout
789+
790+
esp32da.menu.FlashFreq.80=80MHz
791+
esp32da.menu.FlashFreq.80.build.flash_freq=80m
792+
esp32da.menu.FlashFreq.40=40MHz
793+
esp32da.menu.FlashFreq.40.build.flash_freq=40m
794+
795+
esp32da.menu.FlashSize.4M=4MB (32Mb)
796+
esp32da.menu.FlashSize.4M.build.flash_size=4MB
797+
esp32da.menu.FlashSize.8M=8MB (64Mb)
798+
esp32da.menu.FlashSize.8M.build.flash_size=8MB
799+
esp32da.menu.FlashSize.8M.build.partitions=default_8MB
800+
esp32da.menu.FlashSize.16M=16MB (128Mb)
801+
esp32da.menu.FlashSize.16M.build.flash_size=16MB
802+
803+
esp32da.menu.UploadSpeed.921600=921600
804+
esp32da.menu.UploadSpeed.921600.upload.speed=921600
805+
esp32da.menu.UploadSpeed.115200=115200
806+
esp32da.menu.UploadSpeed.115200.upload.speed=115200
807+
esp32da.menu.UploadSpeed.256000.windows=256000
808+
esp32da.menu.UploadSpeed.256000.upload.speed=256000
809+
esp32da.menu.UploadSpeed.230400.windows.upload.speed=256000
810+
esp32da.menu.UploadSpeed.230400=230400
811+
esp32da.menu.UploadSpeed.230400.upload.speed=230400
812+
esp32da.menu.UploadSpeed.460800.linux=460800
813+
esp32da.menu.UploadSpeed.460800.macosx=460800
814+
esp32da.menu.UploadSpeed.460800.upload.speed=460800
815+
esp32da.menu.UploadSpeed.512000.windows=512000
816+
esp32da.menu.UploadSpeed.512000.upload.speed=512000
817+
818+
esp32da.menu.LoopCore.1=Core 1
819+
esp32da.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1
820+
esp32da.menu.LoopCore.0=Core 0
821+
esp32da.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0
822+
823+
esp32da.menu.EventsCore.1=Core 1
824+
esp32da.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1
825+
esp32da.menu.EventsCore.0=Core 0
826+
esp32da.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0
827+
828+
esp32da.menu.DebugLevel.none=None
829+
esp32da.menu.DebugLevel.none.build.code_debug=0
830+
esp32da.menu.DebugLevel.error=Error
831+
esp32da.menu.DebugLevel.error.build.code_debug=1
832+
esp32da.menu.DebugLevel.warn=Warn
833+
esp32da.menu.DebugLevel.warn.build.code_debug=2
834+
esp32da.menu.DebugLevel.info=Info
835+
esp32da.menu.DebugLevel.info.build.code_debug=3
836+
esp32da.menu.DebugLevel.debug=Debug
837+
esp32da.menu.DebugLevel.debug.build.code_debug=4
838+
esp32da.menu.DebugLevel.verbose=Verbose
839+
esp32da.menu.DebugLevel.verbose.build.code_debug=5
840+
841+
##############################################################
842+
694843
esp32wrover.name=ESP32 Wrover Module
695844

696845
esp32wrover.upload.tool=esptool_py

Diff for: cores/esp32/esp32-hal-uart.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -421,11 +421,12 @@ int log_printf(const char *format, ...)
421421
va_list copy;
422422
va_start(arg, format);
423423
va_copy(copy, arg);
424-
len = vsnprintf(NULL, 0, format, arg);
424+
len = vsnprintf(NULL, 0, format, copy);
425425
va_end(copy);
426426
if(len >= sizeof(loc_buf)){
427427
temp = (char*)malloc(len+1);
428428
if(temp == NULL) {
429+
va_end(arg);
429430
return 0;
430431
}
431432
}

Diff for: libraries/WiFi/examples/WiFiScanDualAntenna/WiFiScanDualAntenna.ino

+6-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@ void setup()
2424
// Set WiFi to station mode and disconnect from an AP if it was previously connected
2525
WiFi.mode(WIFI_STA);
2626

27-
// Set WiFi dual antenna configuration by passing the GPIO and antenna mode for RX ant TX
27+
/* Attention: This is the manual prodecure for the dual antenna configuration.
28+
* If you choose the ESP32-WROOM-DA module from the Tools -> Board, this configuration
29+
* is not necessary!
30+
*
31+
* Set WiFi dual antenna configuration by passing the GPIO and antenna mode for RX ant TX
32+
*/
2833
err = WiFi.setDualAntennaConfig(GPIO_ANT1, GPIO_ANT1, WIFI_RX_ANT_AUTO, WIFI_TX_ANT_AUTO);
2934

3035
/* For more details on how to use this feature, see our docs:

Diff for: libraries/WiFi/src/WiFiAP.cpp

+1-17
Original file line numberDiff line numberDiff line change
@@ -205,23 +205,7 @@ bool WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress
205205
}
206206

207207
err = set_esp_interface_ip(ESP_IF_WIFI_AP, local_ip, gateway, subnet);
208-
209-
// testing effectiveness of the operation beyond internal DHCP Client process
210-
esp_netif_ip_info_t ip;
211-
if(esp_netif_get_ip_info(get_esp_interface_netif(ESP_IF_WIFI_AP), &ip) != ESP_OK){
212-
log_e("Netif Get IP Failed!");
213-
return false;
214-
}
215-
bool ip_ok = IPAddress(ip.ip.addr) == local_ip;
216-
bool gw_ok = IPAddress(ip.gw.addr) == gateway;
217-
bool mk_ok = IPAddress(ip.netmask.addr) == subnet;
218-
219-
if (ip_ok && gw_ok && mk_ok) {
220-
return true;
221-
} else {
222-
log_e("Failed setting: %s %s %s", ip_ok ? "" : "Static IP", gw_ok ? "" : "- Gateway", mk_ok ? "" : "- Netmask");
223-
return false;
224-
}
208+
return err == ESP_OK;
225209
}
226210

227211

Diff for: libraries/WiFi/src/WiFiGeneric.cpp

+22-3
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,20 @@ esp_err_t set_esp_interface_ip(esp_interface_t interface, IPAddress local_ip=IPA
138138

139139
dhcps_lease_t lease;
140140
lease.enable = true;
141-
lease.start_ip.addr = static_cast<uint32_t>(local_ip) + (1 << 24);
142-
lease.end_ip.addr = static_cast<uint32_t>(local_ip) + (11 << 24);
143-
141+
uint32_t dhcp_ipaddr = static_cast<uint32_t>(local_ip);
142+
// prevents DHCP lease range to overflow subnet/24 range
143+
// there will be 11 addresses for DHCP to lease
144+
uint8_t leaseStart = (uint8_t)(~subnet[3] - 12);
145+
if ((local_ip[3]) < leaseStart) {
146+
lease.start_ip.addr = dhcp_ipaddr + (1 << 24);
147+
lease.end_ip.addr = dhcp_ipaddr + (11 << 24);
148+
} else {
149+
// make range stay in the begining of the netmask range
150+
dhcp_ipaddr = (dhcp_ipaddr & 0x00FFFFFF);
151+
lease.start_ip.addr = dhcp_ipaddr + (1 << 24);
152+
lease.end_ip.addr = dhcp_ipaddr + (11 << 24);
153+
}
154+
log_v("DHCP Server Range: %s to %s", IPAddress(lease.start_ip.addr).toString(), IPAddress(lease.end_ip.addr).toString());
144155
err = tcpip_adapter_dhcps_option(
145156
(tcpip_adapter_dhcp_option_mode_t)TCPIP_ADAPTER_OP_SET,
146157
(tcpip_adapter_dhcp_option_id_t)REQUESTED_IP_ADDRESS,
@@ -1061,6 +1072,14 @@ bool WiFiGenericClass::mode(wifi_mode_t m)
10611072
if(!espWiFiStart()){
10621073
return false;
10631074
}
1075+
1076+
#ifdef BOARD_HAS_DUAL_ANTENNA
1077+
if(!setDualAntennaConfig(ANT1, ANT2, WIFI_RX_ANT_AUTO, WIFI_TX_ANT_AUTO)){
1078+
log_e("Dual Antenna Config failed!");
1079+
return false;
1080+
}
1081+
#endif
1082+
10641083
return true;
10651084
}
10661085

Diff for: libraries/WiFi/src/WiFiGeneric.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class WiFiGenericClass
186186

187187
bool initiateFTM(uint8_t frm_count=16, uint16_t burst_period=2, uint8_t channel=1, const uint8_t * mac=NULL);
188188

189-
bool setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2, wifi_rx_ant_t rx_mode, wifi_tx_ant_t tx_mode);
189+
static bool setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2, wifi_rx_ant_t rx_mode, wifi_tx_ant_t tx_mode);
190190

191191
static const char * getHostname();
192192
static bool setHostname(const char * hostname);

Diff for: libraries/WiFi/src/WiFiSTA.cpp

+16-3
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,15 @@ IPv6Address WiFiSTAClass::localIPv6()
655655
bool WiFiSTAClass::_smartConfigStarted = false;
656656
bool WiFiSTAClass::_smartConfigDone = false;
657657

658-
659-
bool WiFiSTAClass::beginSmartConfig() {
658+
/**
659+
* @brief
660+
*
661+
* @param type Select type of SmartConfig. Default type is SC_TYPE_ESPTOUCH
662+
* @param crypt_key When using type SC_TYPE_ESPTOUTCH_V2 crypt key needed, else ignored. Lenght should be 16 chars.
663+
* @return true if configuration is successful.
664+
* @return false if configuration fails.
665+
*/
666+
bool WiFiSTAClass::beginSmartConfig(smartconfig_type_t type, char* crypt_key) {
660667
esp_err_t err;
661668
if (_smartConfigStarted) {
662669
return false;
@@ -668,7 +675,13 @@ bool WiFiSTAClass::beginSmartConfig() {
668675
esp_wifi_disconnect();
669676

670677
smartconfig_start_config_t conf = SMARTCONFIG_START_CONFIG_DEFAULT();
671-
err = esp_smartconfig_set_type(SC_TYPE_ESPTOUCH);
678+
679+
if (type == SC_TYPE_ESPTOUCH_V2){
680+
conf.esp_touch_v2_enable_crypt = true;
681+
conf.esp_touch_v2_key = crypt_key;
682+
}
683+
684+
err = esp_smartconfig_set_type(type);
672685
if (err != ESP_OK) {
673686
log_e("SmartConfig Set Type Failed!");
674687
return false;

Diff for: libraries/WiFi/src/WiFiSTA.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class WiFiSTAClass
9292
static bool _autoReconnect;
9393

9494
public:
95-
bool beginSmartConfig();
95+
bool beginSmartConfig(smartconfig_type_t type = SC_TYPE_ESPTOUCH, char* crypt_key = NULL);
9696
bool stopSmartConfig();
9797
bool smartConfigDone();
9898

Diff for: variants/esp32da/pins_arduino.h

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#ifndef Pins_Arduino_h
2+
#define Pins_Arduino_h
3+
4+
#include <stdint.h>
5+
6+
#define EXTERNAL_NUM_INTERRUPTS 16
7+
#define NUM_DIGITAL_PINS 40
8+
#define NUM_ANALOG_INPUTS 16
9+
10+
#define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1)
11+
#define digitalPinToInterrupt(p) (((p)<40)?(p):-1)
12+
#define digitalPinHasPWM(p) (p < 34)
13+
14+
static const uint8_t TX = 1;
15+
static const uint8_t RX = 3;
16+
17+
static const uint8_t SDA = 21;
18+
static const uint8_t SCL = 22;
19+
20+
static const uint8_t SS = 5;
21+
static const uint8_t MOSI = 23;
22+
static const uint8_t MISO = 19;
23+
static const uint8_t SCK = 18;
24+
25+
static const uint8_t A0 = 36;
26+
static const uint8_t A3 = 39;
27+
static const uint8_t A4 = 32;
28+
static const uint8_t A5 = 33;
29+
static const uint8_t A6 = 34;
30+
static const uint8_t A7 = 35;
31+
static const uint8_t A10 = 4;
32+
static const uint8_t A11 = 0;
33+
static const uint8_t A12 = 2;
34+
static const uint8_t A13 = 15;
35+
static const uint8_t A14 = 13;
36+
static const uint8_t A15 = 12;
37+
static const uint8_t A16 = 14;
38+
static const uint8_t A17 = 27;
39+
static const uint8_t A18 = 25;
40+
static const uint8_t A19 = 26;
41+
42+
static const uint8_t T0 = 4;
43+
static const uint8_t T1 = 0;
44+
static const uint8_t T2 = 2;
45+
static const uint8_t T3 = 15;
46+
static const uint8_t T4 = 13;
47+
static const uint8_t T5 = 12;
48+
static const uint8_t T6 = 14;
49+
static const uint8_t T7 = 27;
50+
static const uint8_t T8 = 33;
51+
static const uint8_t T9 = 32;
52+
53+
static const uint8_t DAC1 = 25;
54+
static const uint8_t DAC2 = 26;
55+
56+
#define BOARD_HAS_DUAL_ANTENNA
57+
static const uint8_t ANT1 = 2;
58+
static const uint8_t ANT2 = 25;
59+
60+
#endif /* Pins_Arduino_h */

0 commit comments

Comments
 (0)