esp8266 / esp8266/Arduino

Wi-Fi won't start after long SPI transfer

Open
#3,984 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
16.7k
Forks
13.1k
PR merge metrics
No merged PRs in 30d

Description

### Basic Infos

#### Hardware
Hardware: Wemos D1 mini Pro
Core Version: 2.3.0

### Description

If sending a long SPI sequence before initializing Wi-Fi, Wi-Fi won't connect anymore. Example bellow fails at 29 times sending data over SPI, but works up to 28 times.
If starting Wi-Fi first, the problem seems to disappear.

### Settings in IDE

Module: WeMos D1 R2 & mini
Flash Size: 4MB
CPU Frequency: 80Mhz
Upload Using: SERIAL
Reset Method: nodemcu

### Sketch

```cpp

#include
#include

char ssid[] = "myssid";
char pass[] = "mypassword";

void setup() {
Serial.begin(115200);

Serial.print("setup: Connecting to ");
Serial.println(ssid);

startupLogo(); // this makes the SPI calls

WiFi.begin(ssid, pass);

Serial.print("setup: ");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();

Serial.println("setup: WiFi connected");
}

void loop() {

SPIwrite(D0,0x53122);
Serial.print("Loop!");
delay(500);

}

void SPIwrite(byte nCS, unsigned long theString) {
Serial.printf("SPIwrite: SPI value = 0x%08x ",theString);
Serial.println(theString,BIN);

SPI.begin();
SPI.beginTransaction(SPISettings(15000000, MSBFIRST, SPI_MODE0));
digitalWrite(nCS, LOW); // device select
SPI.transfer(theString); // 8 bits out
digitalWrite(nCS, HIGH); // data transfer to SPI outputs...
SPI.endTransaction();
SPI.end();
}

void startupLogo(){
int i=0;

while (i<29) {
SPIwrite(D3, 0x22122);
i++;
delay(100);
}

}

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.