Skip to content

Commit 241fcfc

Browse files
committed
Avoid SPI input glitches from wifi
1 parent e7ace5c commit 241fcfc

4 files changed

Lines changed: 15 additions & 8 deletions

File tree

firmware/esp32/splitflap/http_task.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,10 @@ HTTPTask::HTTPTask(SplitflapTask& splitflap_task, DisplayTask& display_task, Log
234234

235235
void HTTPTask::connectWifi() {
236236
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
237+
238+
// Disable WiFi sleep as it causes glitches on pin 39; see https://github.com/espressif/arduino-esp32/issues/4903#issuecomment-793187707
239+
WiFi.setSleep(WIFI_PS_NONE);
240+
237241
char buf[256];
238242

239243
logger_.log("Establishing connection to WiFi..");

firmware/esp32/splitflap/mqtt_task.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ MQTTTask::MQTTTask(SplitflapTask& splitflap_task, Logger& logger, const uint8_t
3131
void MQTTTask::connectWifi() {
3232
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
3333

34+
// Disable WiFi sleep as it causes glitches on pin 39; see https://github.com/espressif/arduino-esp32/issues/4903#issuecomment-793187707
35+
WiFi.setSleep(WIFI_PS_NONE);
36+
3437
while (WiFi.status() != WL_CONNECTED) {
3538
delay(1000);
3639
logger_.log("Establishing connection to WiFi..");

firmware/src/spi_io_config.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
#define BUFFER_ATTRS WORD_ALIGNED_ATTR
7676

7777
// Note: must use HSPI to avoid conflict with ST7789 driver which uses VSPI
78-
#define SPI_HOST HSPI_HOST
78+
#define SPLITFLAP_SPI_HOST HSPI_HOST
7979
#define DMA_CHANNEL 1
8080

8181

@@ -173,7 +173,7 @@ inline void initialize_modules() {
173173
.quadhd_io_num = -1,
174174
.max_transfer_sz = 1000,
175175
};
176-
ret=spi_bus_initialize(SPI_HOST, &tx_bus_config, DMA_CHANNEL);
176+
ret=spi_bus_initialize(SPLITFLAP_SPI_HOST, &tx_bus_config, DMA_CHANNEL);
177177
ESP_ERROR_CHECK(ret);
178178

179179
spi_device_interface_config_t tx_device_config = {
@@ -192,7 +192,7 @@ inline void initialize_modules() {
192192
.pre_cb=NULL,
193193
.post_cb=NULL,
194194
};
195-
ret=spi_bus_add_device(SPI_HOST, &tx_device_config, &spi_tx);
195+
ret=spi_bus_add_device(SPLITFLAP_SPI_HOST, &tx_device_config, &spi_tx);
196196
ESP_ERROR_CHECK(ret);
197197

198198
spi_device_interface_config_t rx_device_config = {
@@ -211,7 +211,7 @@ inline void initialize_modules() {
211211
.pre_cb=&latch_registers,
212212
.post_cb=&reset_latch,
213213
};
214-
ret=spi_bus_add_device(SPI_HOST, &rx_device_config, &spi_rx);
214+
ret=spi_bus_add_device(SPLITFLAP_SPI_HOST, &rx_device_config, &spi_rx);
215215
ESP_ERROR_CHECK(ret);
216216

217217
memset(&tx_transaction, 0, sizeof(tx_transaction));

platformio.ini

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ lib_deps =
5858
; -DSPLITFLAP_PIO_HARDWARE_CONFIG
5959

6060
[esp32base]
61-
platform = espressif32@3.4
61+
platform = espressif32@6.10.0
6262
framework = arduino
6363
board = esp32dev
6464
upload_speed = 921600
@@ -122,7 +122,7 @@ build_flags =
122122
-DCHAINLINK
123123
-DNUM_MODULES=6
124124

125-
[env:chainlinkBase]
125+
[env:advanced_chainlinkBase]
126126
extends=esp32base
127127
build_src_filter = ${esp32base.build_src_filter} +<../esp32/base>
128128
build_flags =
@@ -137,7 +137,7 @@ lib_deps =
137137
fastled/FastLED @ 3.9.7
138138
adafruit/Adafruit BusIO @ 1.16.2
139139

140-
[env:chainlinkDriverTester]
140+
[env:advanced_chainlinkDriverTester]
141141
extends=esp32base
142142
build_src_filter = +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/> -<Splitflap.ino.cpp> +<../esp32/core> +<../esp32/tester>
143143
build_flags =
@@ -152,7 +152,7 @@ lib_deps =
152152
adafruit/Adafruit BusIO @ 1.16.2
153153
build_type = debug
154154

155-
[env:esp32CustomAdvanced]
155+
[env:advanced_esp32Custom]
156156
; For non-chainlink custom ESP32-based advanced builds that use shift registers but omit the Chainlink design elements like loopbacks and LEDs.
157157
; This is not the environment you want unless you have custom non-Chainlink hardware and really know the intricacies of the shift register arrangement.
158158
extends=esp32base

0 commit comments

Comments
 (0)