Wi-Fi won't start after long SPI transfer
- Lingua principale
- C++
- Stelle
- 16.7k
- Fork
- 13.1k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
### 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);
}
}
```
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia con lo sketch allegato, in particolare setup(), startupLogo(), SPIwrite() e la chiamata a WiFi.begin(). Esegui la riproduzione con 28 e poi 29 trasferimenti SPI prima dell’inizializzazione del Wi-Fi; è completata quando il Wi-Fi si connette in modo affidabile dopo il trasferimento più lungo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- arduino, cpp
- Ambito
- embedded-iot, networking
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100