Skip to content

Commit d4d76dd

Browse files
committed
[ESP32-S3] add some logic to distinguish M2 from M5
1 parent 773b998 commit d4d76dd

8 files changed

Lines changed: 94 additions & 68 deletions

File tree

software/firmware/source/SoftRF/src/driver/GNSS.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1350,7 +1350,8 @@ byte GNSS_setup() {
13501350
hw_info.model == SOFTRF_MODEL_GIZMO ||
13511351
hw_info.model == SOFTRF_MODEL_NANO ||
13521352
hw_info.model == SOFTRF_MODEL_DECENT ||
1353-
hw_info.model == SOFTRF_MODEL_NEO)
1353+
hw_info.model == SOFTRF_MODEL_NEO ||
1354+
hw_info.model == SOFTRF_MODEL_AIRVENTURE)
13541355
{
13551356
// power on by wakeup call
13561357
Serial_GNSS_Out.write((uint8_t) 0); GNSS_FLUSH(); delay(500);

software/firmware/source/SoftRF/src/platform/ESP32.cpp

Lines changed: 69 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,21 @@ void TFT_backlight_on()
147147
#if defined(USE_EPAPER)
148148
#include "../driver/EPD.h"
149149

150+
#if defined(EPD_ASPECT_RATIO_2C1)
150151
GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> epd_bn (GxEPD2_213_BN(
151152
SOC_GPIO_PIN_T3S3_EPD_SS,
152153
SOC_GPIO_PIN_T3S3_EPD_DC,
153154
SOC_GPIO_PIN_T3S3_EPD_RST,
154155
SOC_GPIO_PIN_T3S3_EPD_BUSY));
156+
#endif /* EPD_ASPECT_RATIO_2C1 */
157+
#if defined(EPD_ASPECT_RATIO_1C1)
155158
GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> epd_d67(GxEPD2_154_D67(
156-
SOC_GPIO_PIN_EPD_M5_SS,
157-
SOC_GPIO_PIN_EPD_M5_DC,
158-
SOC_GPIO_PIN_EPD_M5_RST,
159-
SOC_GPIO_PIN_EPD_M5_BUSY));
159+
SOC_GPIO_PIN_M5_EPD_SS,
160+
SOC_GPIO_PIN_M5_EPD_DC,
161+
SOC_GPIO_PIN_M5_EPD_RST,
162+
SOC_GPIO_PIN_M5_EPD_BUSY));
163+
#endif /* EPD_ASPECT_RATIO_1C1 */
164+
160165
GxEPD2_GFX *display;
161166

162167
#if defined(USE_EPD_TASK)
@@ -724,7 +729,7 @@ static void ESP32_setup()
724729
* ESP32 Arduino Core 2.0.x is unable to detect OPI PSRAM
725730
* unless we do a psram_type=opi custom build.
726731
*/
727-
esp32_board = ESP32_ELECROW_TN_M2; /* allow psramFound() to fail */
732+
esp32_board = ESP32_ELECROW_TN_M5; /* allow psramFound() to fail */
728733
break;
729734
default:
730735
esp32_board = ESP32_S3_DEVKIT;
@@ -1558,56 +1563,55 @@ static void ESP32_setup()
15581563
lmic_pins.dio[0] = SOC_GPIO_PIN_BPIPW_DIO1;
15591564
#endif /* USE_RADIOLIB */
15601565

1561-
} else if (esp32_board == ESP32_ELECROW_TN_M2) {
1566+
} else if (esp32_board == ESP32_ELECROW_TN_M5) {
15621567

1563-
hw_info.model = SOFTRF_MODEL_GIZMO;
1564-
hw_info.revision = 0; /* TBD */
1568+
Wire1.begin(SOC_GPIO_PIN_M5_SDA2, SOC_GPIO_PIN_M5_SCL2);
1569+
Wire1.beginTransmission(PCA9557_ADDRESS);
1570+
ESP32_has_gpio_extension = (Wire1.endTransmission() == 0);
1571+
1572+
if (ESP32_has_gpio_extension) {
1573+
pca9557 = new PCA9557(PCA9557_ADDRESS, &Wire1);
1574+
1575+
hw_info.model = SOFTRF_MODEL_AIRVENTURE;
1576+
hw_info.revision = 0; /* TBD */
15651577

15661578
#if ARDUINO_USB_CDC_ON_BOOT
1567-
SerialOutput.begin(SERIAL_OUT_BR, SERIAL_OUT_BITS,
1568-
SOC_GPIO_PIN_M2_CONS_RX,
1569-
SOC_GPIO_PIN_M2_CONS_TX);
1579+
SerialOutput.begin(SERIAL_OUT_BR, SERIAL_OUT_BITS,
1580+
SOC_GPIO_PIN_M5_CONS_RX,
1581+
SOC_GPIO_PIN_M5_CONS_TX);
15701582
#endif /* ARDUINO_USB_CDC_ON_BOOT */
15711583

1572-
lmic_pins.nss = SOC_GPIO_PIN_M2_SS;
1573-
lmic_pins.rst = SOC_GPIO_PIN_M2_RST;
1574-
lmic_pins.busy = SOC_GPIO_PIN_M2_BUSY;
1584+
lmic_pins.nss = SOC_GPIO_PIN_M5_SS;
1585+
lmic_pins.rst = SOC_GPIO_PIN_M5_RST;
1586+
lmic_pins.busy = SOC_GPIO_PIN_M5_BUSY;
15751587
#if defined(USE_RADIOLIB)
1576-
lmic_pins.dio[0] = SOC_GPIO_PIN_M2_DIO1;
1588+
lmic_pins.dio[0] = SOC_GPIO_PIN_M5_DIO1;
15771589
#endif /* USE_RADIOLIB */
15781590

1579-
} else if (esp32_board == ESP32_ELECROW_TN_M5) {
1591+
/* EPD-SPI init */
1592+
uSD_SPI.begin(SOC_GPIO_PIN_M5_EPD_SCK,
1593+
SOC_GPIO_PIN_M5_EPD_MISO,
1594+
SOC_GPIO_PIN_M5_EPD_MOSI,
1595+
SOC_GPIO_PIN_M5_EPD_SS);
1596+
} else {
1597+
WIRE_FINI(Wire1);
15801598

1581-
hw_info.model = SOFTRF_MODEL_AIRVENTURE;
1582-
hw_info.revision = 0; /* TBD */
1599+
esp32_board = ESP32_ELECROW_TN_M2;
1600+
hw_info.model = SOFTRF_MODEL_GIZMO;
1601+
hw_info.revision = 0; /* TBD */
15831602

15841603
#if ARDUINO_USB_CDC_ON_BOOT
1585-
SerialOutput.begin(SERIAL_OUT_BR, SERIAL_OUT_BITS,
1586-
SOC_GPIO_PIN_M5_CONS_RX,
1587-
SOC_GPIO_PIN_M5_CONS_TX);
1604+
SerialOutput.begin(SERIAL_OUT_BR, SERIAL_OUT_BITS,
1605+
SOC_GPIO_PIN_M2_CONS_RX,
1606+
SOC_GPIO_PIN_M2_CONS_TX);
15881607
#endif /* ARDUINO_USB_CDC_ON_BOOT */
15891608

1590-
lmic_pins.nss = SOC_GPIO_PIN_M5_SS;
1591-
lmic_pins.rst = SOC_GPIO_PIN_M5_RST;
1592-
lmic_pins.busy = SOC_GPIO_PIN_M5_BUSY;
1609+
lmic_pins.nss = SOC_GPIO_PIN_M2_SS;
1610+
lmic_pins.rst = SOC_GPIO_PIN_M2_RST;
1611+
lmic_pins.busy = SOC_GPIO_PIN_M2_BUSY;
15931612
#if defined(USE_RADIOLIB)
1594-
lmic_pins.dio[0] = SOC_GPIO_PIN_M5_DIO1;
1613+
lmic_pins.dio[0] = SOC_GPIO_PIN_M2_DIO1;
15951614
#endif /* USE_RADIOLIB */
1596-
1597-
/* EPD-SPI init */
1598-
uSD_SPI.begin(SOC_GPIO_PIN_EPD_M5_SCK,
1599-
SOC_GPIO_PIN_EPD_M5_MISO,
1600-
SOC_GPIO_PIN_EPD_M5_MOSI,
1601-
SOC_GPIO_PIN_EPD_M5_SS);
1602-
1603-
Wire1.begin(SOC_GPIO_PIN_M5_SDA2, SOC_GPIO_PIN_M5_SCL2);
1604-
Wire1.beginTransmission(PCA9557_ADDRESS);
1605-
ESP32_has_gpio_extension = (Wire1.endTransmission() == 0);
1606-
1607-
if (ESP32_has_gpio_extension) {
1608-
pca9557 = new PCA9557(PCA9557_ADDRESS, &Wire1);
1609-
} else {
1610-
WIRE_FINI(Wire1);
16111615
}
16121616
#endif /* CONFIG_IDF_TARGET_ESP32S3 */
16131617

@@ -2111,17 +2115,20 @@ static void ESP32_setup()
21112115
#endif
21122116

21132117
} else if (esp32_board == ESP32_ELECROW_TN_M5) {
2114-
if (ESP32_has_gpio_extension) {
2115-
pca9557->pinMode(SOC_EXPIO_LED_M5_RED_PWR, OUTPUT); /* status LED */
2116-
pca9557->digitalWrite(SOC_EXPIO_LED_M5_RED_PWR, HIGH);
2117-
pca9557->pinMode(SOC_EXPIO_LED_M5_RED, OUTPUT);
2118-
pca9557->digitalWrite(SOC_EXPIO_LED_M5_RED, LOW);
2119-
2120-
pca9557->pinMode(SOC_EXPIO_PIN_IO_M5_EN, OUTPUT);
2121-
pca9557->pinMode(SOC_EXPIO_PIN_EPD_M5_EN, OUTPUT);
2122-
pca9557->digitalWrite(SOC_EXPIO_PIN_IO_M5_EN, HIGH);
2123-
pca9557->digitalWrite(SOC_EXPIO_PIN_EPD_M5_EN, HIGH);
2124-
}
2118+
2119+
pca9557->pinMode(SOC_EXPIO_LED_M5_RED_PWR, OUTPUT); /* status LED */
2120+
pca9557->digitalWrite(SOC_EXPIO_LED_M5_RED_PWR, HIGH);
2121+
pca9557->pinMode(SOC_EXPIO_LED_M5_RED, OUTPUT);
2122+
pca9557->digitalWrite(SOC_EXPIO_LED_M5_RED, LOW);
2123+
2124+
pca9557->pinMode(SOC_EXPIO_LED_M5_BLUE, OUTPUT);
2125+
pca9557->digitalWrite(SOC_EXPIO_LED_M5_BLUE, LOW);
2126+
2127+
pca9557->pinMode(SOC_EXPIO_PIN_M5_IO_EN, OUTPUT);
2128+
pca9557->pinMode(SOC_EXPIO_PIN_M5_EPD_EN, OUTPUT);
2129+
pca9557->digitalWrite(SOC_EXPIO_PIN_M5_IO_EN, HIGH);
2130+
pca9557->digitalWrite(SOC_EXPIO_PIN_M5_EPD_EN, HIGH);
2131+
21252132
} else if (esp32_board == ESP32_EBYTE_HUB_900TB) {
21262133

21272134
digitalWrite(SOC_GPIO_PIN_EHUB_LED, LOW);
@@ -4332,12 +4339,17 @@ static byte ESP32_Display_setup()
43324339
#if defined(USE_EPAPER)
43334340
switch (esp32_board)
43344341
{
4342+
#if defined(EPD_ASPECT_RATIO_2C1)
43354343
case ESP32_LILYGO_T3S3_EPD:
43364344
display = &epd_bn;
43374345
break;
4346+
#endif /* EPD_ASPECT_RATIO_2C1 */
4347+
43384348
case ESP32_ELECROW_TN_M5:
43394349
default:
4350+
#if defined(EPD_ASPECT_RATIO_1C1)
43404351
display = &epd_d67;
4352+
#endif /* EPD_ASPECT_RATIO_1C1 */
43414353
break;
43424354
}
43434355
display->epd2.selectSPI(uSD_SPI, SPISettings(4000000, MSBFIRST, SPI_MODE0));
@@ -4358,12 +4370,16 @@ static byte ESP32_Display_setup()
43584370
#endif /* USE_EPD_TASK */
43594371
switch (esp32_board)
43604372
{
4373+
#if defined(EPD_ASPECT_RATIO_2C1)
43614374
case ESP32_LILYGO_T3S3_EPD:
43624375
rval = DISPLAY_EPD_2_13;
43634376
break;
4377+
#endif /* EPD_ASPECT_RATIO_2C1 */
43644378
case ESP32_ELECROW_TN_M5:
43654379
default:
4380+
#if defined(EPD_ASPECT_RATIO_1C1)
43664381
rval = DISPLAY_EPD_1_54;
4382+
#endif /* EPD_ASPECT_RATIO_1C1 */
43674383
break;
43684384
}
43694385
}
@@ -5019,6 +5035,7 @@ static float ESP32_Battery_param(uint8_t param)
50195035
hw_info.model == SOFTRF_MODEL_ECO || /* TBD */
50205036
hw_info.model == SOFTRF_MODEL_INK ||
50215037
hw_info.model == SOFTRF_MODEL_GIZMO ||
5038+
hw_info.model == SOFTRF_MODEL_AIRVENTURE ||
50225039
/* TTGO T3 V2.1.6 */
50235040
(hw_info.model == SOFTRF_MODEL_STANDALONE && hw_info.revision == STD_EDN_REV_T3_1_6) ||
50245041
/* Ebyte EoRa-HUB */
@@ -5038,6 +5055,7 @@ static float ESP32_Battery_param(uint8_t param)
50385055
hw_info.model == SOFTRF_MODEL_ECO || /* TBD */
50395056
hw_info.model == SOFTRF_MODEL_INK ||
50405057
hw_info.model == SOFTRF_MODEL_GIZMO ||
5058+
hw_info.model == SOFTRF_MODEL_AIRVENTURE ||
50415059
/* TTGO T3 V2.1.6 */
50425060
(hw_info.model == SOFTRF_MODEL_STANDALONE && hw_info.revision == STD_EDN_REV_T3_1_6) ||
50435061
/* Ebyte EoRa-HUB */

software/firmware/source/SoftRF/src/platform/ESP32.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -563,19 +563,22 @@ extern const USB_Device_List_t supported_USB_devices[];
563563
#endif /* CONFIG_IDF_TARGET_ESP32 */
564564

565565
#if defined(CONFIG_IDF_TARGET_ESP32S3)
566+
#define EXCLUDE_EGM96
567+
#undef USE_NMEALIB
566568
#define USE_U10_EXT
567569
#define ENABLE_RECORDER
568570
#define USE_SA8X8
569571
/* Experimental */
570572
#define ENABLE_REMOTE_ID
571573
//#define EXCLUDE_VOICE_MESSAGE
572574
//#define USE_ARDUINOBLE
575+
//#define USE_NIMBLE
573576
//#undef USE_BLE_MIDI
574-
//#define USE_EPAPER
575-
//#define EPD_ASPECT_RATIO_1C1
577+
#define USE_EPAPER
578+
#define EPD_ASPECT_RATIO_1C1
576579
//#define EPD_ASPECT_RATIO_2C1
577-
//#define USE_EPD_TASK
578-
//#define EPD_POWEROFF {}
580+
#define USE_EPD_TASK
581+
#define EPD_POWEROFF {}
579582
#endif /* S3 */
580583

581584
#if defined(CONFIG_IDF_TARGET_ESP32S2)

software/firmware/source/SoftRF/src/platform/bluetooth/ArduinoBLE.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ static void ArdBLE_Bluetooth_setup()
158158
hw_info.model == SOFTRF_MODEL_INK ? "Ink Edition" :
159159
hw_info.model == SOFTRF_MODEL_GIZMO ? "Gizmo Edition" :
160160
hw_info.model == SOFTRF_MODEL_NANO ? "Nano Edition" :
161+
hw_info.model == SOFTRF_MODEL_AIRVENTURE ? "Airventure Edition" :
161162
"Unknown";
162163
char SerialNum[9];
163164
snprintf(SerialNum, sizeof(SerialNum), "%08X", SoC->getChipId());

software/firmware/source/SoftRF/src/platform/bluetooth/Bluedroid.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ static void ESP32_Bluetooth_setup()
223223
hw_info.model == SOFTRF_MODEL_INK ? "Ink Edition" :
224224
hw_info.model == SOFTRF_MODEL_GIZMO ? "Gizmo Edition" :
225225
hw_info.model == SOFTRF_MODEL_NANO ? "Nano Edition" :
226+
hw_info.model == SOFTRF_MODEL_AIRVENTURE ? "Airventure Edition" :
226227
"Unknown";
227228
char SerialNum[9];
228229
snprintf(SerialNum, sizeof(SerialNum), "%08X", SoC->getChipId());

software/firmware/source/SoftRF/src/platform/bluetooth/NimBLE.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ static void ESP32_Bluetooth_setup()
195195
hw_info.model == SOFTRF_MODEL_INK ? "Ink Edition" :
196196
hw_info.model == SOFTRF_MODEL_GIZMO ? "Gizmo Edition" :
197197
hw_info.model == SOFTRF_MODEL_NANO ? "Nano Edition" :
198+
hw_info.model == SOFTRF_MODEL_AIRVENTURE ? "Airventure Edition" :
198199
"Unknown";
199200
char SerialNum[9];
200201
snprintf(SerialNum, sizeof(SerialNum), "%08X", SoC->getChipId());

software/firmware/source/SoftRF/src/platform/iomap/Elecrow_ThinkNode_M5.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
#define SOC_GPIO_PIN_M5_BUSY 5
2626

2727
/* E-paper */
28-
#define SOC_GPIO_PIN_EPD_M5_MISO SOC_UNUSED_PIN // TBD
29-
#define SOC_GPIO_PIN_EPD_M5_MOSI 45
30-
#define SOC_GPIO_PIN_EPD_M5_SCK 38
31-
#define SOC_GPIO_PIN_EPD_M5_SS 39
32-
#define SOC_GPIO_PIN_EPD_M5_DC 40
33-
#define SOC_GPIO_PIN_EPD_M5_RST 41
34-
#define SOC_GPIO_PIN_EPD_M5_BUSY 42
28+
#define SOC_GPIO_PIN_M5_EPD_MISO SOC_UNUSED_PIN // TBD
29+
#define SOC_GPIO_PIN_M5_EPD_MOSI 45
30+
#define SOC_GPIO_PIN_M5_EPD_SCK 38
31+
#define SOC_GPIO_PIN_M5_EPD_SS 39
32+
#define SOC_GPIO_PIN_M5_EPD_DC 40
33+
#define SOC_GPIO_PIN_M5_EPD_RST 41
34+
#define SOC_GPIO_PIN_M5_EPD_BUSY 42
3535

3636
/* I2C bus 1 */
3737
#define SOC_GPIO_PIN_M5_SDA 2
@@ -49,7 +49,7 @@
4949
#define SOC_GPIO_PIN_M5_BUZZER 9
5050

5151
/* RTC */
52-
#define SOC_GPIO_PIN_RTC_M5_INT 3
52+
#define SOC_GPIO_PIN_M5_RTC_INT 3
5353

5454
/* ADC */
5555
#define SOC_GPIO_PIN_M5_BATTERY 8
@@ -60,8 +60,8 @@
6060
#define SOC_GPIO_PIN_M5_VGPS_SEN 10
6161

6262
/* GPIO expansion (PCA9557) */
63-
#define SOC_EXPIO_LED_M5_BLUE 1
63+
#define SOC_EXPIO_LED_M5_BLUE 1 // active HIGH
6464
#define SOC_EXPIO_LED_M5_RED_PWR 2
65-
#define SOC_EXPIO_LED_M5_RED 3
66-
#define SOC_EXPIO_PIN_IO_M5_EN 4 // active HIGH
67-
#define SOC_EXPIO_PIN_EPD_M5_EN 5 // active HIGH
65+
#define SOC_EXPIO_LED_M5_RED 3 // active HIGH
66+
#define SOC_EXPIO_PIN_M5_IO_EN 4 // active HIGH
67+
#define SOC_EXPIO_PIN_M5_EPD_EN 5 // active HIGH

software/firmware/source/SoftRF/src/ui/Web.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,6 +1431,7 @@ void Web_setup()
14311431
!defined(ARDUINO_ARCH_RP2350) && \
14321432
!defined(CONFIG_IDF_TARGET_ESP32C2) && \
14331433
!defined(CONFIG_IDF_TARGET_ESP32C6) && \
1434+
!defined(CONFIG_IDF_TARGET_ESP32S3) && \
14341435
!defined(ARDUINO_ARCH_RENESAS)
14351436

14361437
server.on ( "/logo.png", []() {

0 commit comments

Comments
 (0)