Skip to content
This repository was archived by the owner on Jan 29, 2023. It is now read-only.

Commit 069dc9b

Browse files
authored
v1.8.1 to add SPI1 support to RP2040
### Releases v1.8.1 1. Add support to SPI1 for RP2040 using [arduino-pico core](https://github.com/earlephilhower/arduino-pico) 2. Rewrite all the examples to support new features 3. Update `Packages' Patches`
1 parent 3e4918f commit 069dc9b

File tree

52 files changed

+1898
-1299
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1898
-1299
lines changed

examples/AWS_IoT/AWS_IoT.ino

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -126,16 +126,8 @@ void MQTTPublish(const char *topic, char *payload)
126126
Serial.println(payload);
127127
}
128128

129-
void setup()
129+
void initEthernet()
130130
{
131-
// Open serial communications and wait for port to open:
132-
Serial.begin(115200);
133-
while (!Serial);
134-
135-
Serial.print("\nStart AWS_IoT on "); Serial.print(BOARD_NAME);
136-
Serial.print(" with "); Serial.println(SHIELD_TYPE);
137-
Serial.println(ETHERNET_WEBSERVER_SSL_VERSION);
138-
139131
#if USE_ETHERNET_PORTENTA_H7
140132
ET_LOGWARN(F("======== USE_PORTENTA_H7_ETHERNET ========"));
141133
#elif USE_NATIVE_ETHERNET
@@ -151,12 +143,24 @@ void setup()
151143
#endif
152144

153145
#if !(USE_NATIVE_ETHERNET || USE_ETHERNET_PORTENTA_H7)
146+
147+
#if (USING_SPI2)
148+
#if defined(CUR_PIN_MISO)
149+
ET_LOGWARN(F("Default SPI pinout:"));
150+
ET_LOGWARN1(F("MOSI:"), CUR_PIN_MOSI);
151+
ET_LOGWARN1(F("MISO:"), CUR_PIN_MISO);
152+
ET_LOGWARN1(F("SCK:"), CUR_PIN_SCK);
153+
ET_LOGWARN1(F("SS:"), CUR_PIN_SS);
154+
ET_LOGWARN(F("========================="));
155+
#endif
156+
#else
154157
ET_LOGWARN(F("Default SPI pinout:"));
155158
ET_LOGWARN1(F("MOSI:"), MOSI);
156159
ET_LOGWARN1(F("MISO:"), MISO);
157160
ET_LOGWARN1(F("SCK:"), SCK);
158161
ET_LOGWARN1(F("SS:"), SS);
159162
ET_LOGWARN(F("========================="));
163+
#endif
160164

161165
#if defined(ESP8266)
162166
// For ESP8266, change for other boards if necessary
@@ -284,35 +288,33 @@ void setup()
284288
Ethernet.begin(mac[index]);
285289

286290
#if !(USE_NATIVE_ETHERNET || USE_ETHERNET_PORTENTA_H7)
291+
ET_LOGWARN(F("========================="));
292+
287293
#if defined( ESP32 )
288294
// Just info to know how to connect correctly
289295
// To change for other SPI
290-
Serial.println("=========================");
291-
Serial.println("Currently Used SPI pinout:");
292-
Serial.print("MOSI:");
293-
Serial.println(PIN_MOSI);
294-
Serial.print("MISO:");
295-
Serial.println(PIN_MISO);
296-
Serial.print("SCK:");
297-
Serial.println(PIN_SCK);
298-
Serial.print("SS:");
299-
Serial.println(USE_THIS_SS_PIN);
300-
Serial.println(F("========================="));
296+
ET_LOGWARN(F("Currently Used SPI pinout:"));
297+
ET_LOGWARN1(F("MOSI:"), PIN_MOSI);
298+
ET_LOGWARN1(F("MISO:"), PIN_MISO);
299+
ET_LOGWARN1(F("SCK:"), PIN_SCK);
300+
ET_LOGWARN1(F("SS:"), PIN_SS);
301301
#else
302-
// Just info to know how to connect correctly
303-
Serial.println("=========================");
304-
Serial.println("Currently Used SPI pinout:");
305-
Serial.print("MOSI:");
306-
Serial.println(MOSI);
307-
Serial.print("MISO:");
308-
Serial.println(MISO);
309-
Serial.print("SCK:");
310-
Serial.println(SCK);
311-
Serial.print("SS:");
312-
Serial.println(SS);
302+
#if defined(CUR_PIN_MISO)
303+
ET_LOGWARN(F("Currently Used SPI pinout:"));
304+
ET_LOGWARN1(F("MOSI:"), CUR_PIN_MOSI);
305+
ET_LOGWARN1(F("MISO:"), CUR_PIN_MISO);
306+
ET_LOGWARN1(F("SCK:"), CUR_PIN_SCK);
307+
ET_LOGWARN1(F("SS:"), CUR_PIN_SS);
308+
#else
309+
ET_LOGWARN(F("Currently Used SPI pinout:"));
310+
ET_LOGWARN1(F("MOSI:"), MOSI);
311+
ET_LOGWARN1(F("MISO:"), MISO);
312+
ET_LOGWARN1(F("SCK:"), SCK);
313+
ET_LOGWARN1(F("SS:"), SS);
314+
#endif
313315
#endif
314316

315-
Serial.println(F("========================="));
317+
ET_LOGWARN(F("========================="));
316318

317319
#elif (USE_ETHERNET_PORTENTA_H7)
318320
if (Ethernet.hardwareStatus() == EthernetNoHardware)
@@ -338,6 +340,19 @@ void setup()
338340
Serial.println(Ethernet.localIP());
339341
}
340342

343+
void setup()
344+
{
345+
// Open serial communications and wait for port to open:
346+
Serial.begin(115200);
347+
while (!Serial);
348+
349+
Serial.print("\nStart AWS_IoT on "); Serial.print(BOARD_NAME);
350+
Serial.print(" with "); Serial.println(SHIELD_TYPE);
351+
Serial.println(ETHERNET_WEBSERVER_SSL_VERSION);
352+
353+
initEthernet();
354+
}
355+
341356
void loop()
342357
{
343358
if (!mqtt.connected())

examples/AWS_IoT/defines.h

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,16 @@
99

1010
#pragma once
1111

12+
#ifndef defines_h
13+
#define defines_h
14+
1215
#define DEBUG_ETHERNET_WEBSERVER_PORT Serial
1316

1417
// Debug Level from 0 to 4
1518
#define _ETHERNET_WEBSERVER_LOGLEVEL_ 3
1619

20+
#define USING_SPI2 false //true
21+
1722
#if ( defined(ARDUINO_PORTENTA_H7_M7) || defined(ARDUINO_PORTENTA_H7_M4) )
1823

1924
#if defined(BOARD_NAME)
@@ -30,7 +35,7 @@
3035

3136
#define ETHERNET_USE_PORTENTA_H7 true
3237
#define USE_ETHERNET_PORTENTA_H7 true
33-
38+
3439
#endif
3540

3641
#if ( defined(ARDUINO_SAMD_ZERO) || defined(ARDUINO_SAMD_MKR1000) || defined(ARDUINO_SAMD_MKRWIFI1010) \
@@ -42,7 +47,7 @@
4247
#undef ETHERNET_USE_SAMD
4348
#endif
4449
#define ETHERNET_USE_SAMD true
45-
#endif
50+
#endif
4651

4752
#if ( defined(NRF52840_FEATHER) || defined(NRF52832_FEATHER) || defined(NRF52_SERIES) || defined(ARDUINO_NRF52_ADAFRUIT) || \
4853
defined(NRF52840_FEATHER_SENSE) || defined(NRF52840_ITSYBITSY) || defined(NRF52840_CIRCUITPLAY) || defined(NRF52840_CLUE) || \
@@ -253,13 +258,13 @@
253258
#warning Use ESP8266 architecture
254259
#include <ESP8266mDNS.h>
255260
#define ETHERNET_USE_ESP8266
256-
#define BOARD_TYPE "ESP8266"
261+
#define BOARD_TYPE ARDUINO_BOARD
257262

258263
#elif ( defined(ESP32) )
259264
// For ESP32
260265
#warning Use ESP32 architecture
261266
#define ETHERNET_USE_ESP32
262-
#define BOARD_TYPE "ESP32"
267+
#define BOARD_TYPE ARDUINO_BOARD
263268

264269
#define W5500_RST_PORT 21
265270

@@ -288,35 +293,30 @@
288293

289294
#else
290295
// For RPI Pico using E. Philhower RP2040 core
291-
// SCK: GPIO18, MOSI: GPIO19, MISO: GPIO16, SS/CS: GPIO17
292-
#define USE_THIS_SS_PIN 17
296+
#if (USING_SPI2)
297+
// SCK: GPIO14, MOSI: GPIO15, MISO: GPIO12, SS/CS: GPIO13 for SPI1
298+
#define USE_THIS_SS_PIN 13
299+
#else
300+
// SCK: GPIO18, MOSI: GPIO19, MISO: GPIO16, SS/CS: GPIO17 for SPI0
301+
#define USE_THIS_SS_PIN 17
302+
#endif
293303

294304
#endif
295-
305+
296306
#define SS_PIN_DEFAULT USE_THIS_SS_PIN
297307

298308
// For RPI Pico
299-
#warning Use RPI-Pico RP2040 architecture
300-
301-
#elif (__AVR__)
302-
// For Mega
303-
// Default pin 10 to SS/CS
304-
#define USE_THIS_SS_PIN 10
305-
#define BOARD_TYPE "AVR"
306-
307-
#error Not supporting AVR Mega, Nano, UNO, etc. yet.
308-
// Currently not OK. See https://github.com/mike-matera/ArduinoSTL/issues/56
309-
// Hopefully will be fixed in Arduino IDE 1.8.14
310-
#include "ArduinoSTL.h" // https://github.com/mike-matera/ArduinoSTL
309+
#warning Use RPI-Pico RP2040 architecture
311310

312311
#else
313-
312+
// For Mega
314313
// Default pin 10 to SS/CS
315314
#define USE_THIS_SS_PIN 10
316-
#define BOARD_TYPE "Unknown"
317315

318-
//#error Not supporting yet.
316+
// Reduce size for Mega
317+
#define SENDCONTENT_P_BUFFER_SZ 512
319318

319+
#define BOARD_TYPE "AVR Mega"
320320
#endif
321321

322322
#ifndef BOARD_NAME
@@ -345,7 +345,9 @@
345345
#define USE_ETHERNET_ESP8266 false
346346
#define USE_ETHERNET_ENC false
347347
#define USE_CUSTOM_ETHERNET false
348-
348+
349+
////////////////////////////
350+
349351
#if ( USE_ETHERNET_GENERIC || USE_ETHERNET_ESP8266 || USE_ETHERNET_ENC || \
350352
USE_NATIVE_ETHERNET || USE_ETHERNET_PORTENTA_H7 )
351353
#ifdef USE_CUSTOM_ETHERNET
@@ -390,7 +392,11 @@
390392
#endif
391393

392394
#else
393-
#define SHIELD_TYPE "W5x00 using Ethernet_Generic Library"
395+
#if USING_SPI2
396+
#define SHIELD_TYPE "W5x00 using Ethernet_Generic Library on SPI1"
397+
#else
398+
#define SHIELD_TYPE "W5x00 using Ethernet_Generic Library on SPI0/SPI"
399+
#endif
394400
#endif
395401

396402
#define ETHERNET_LARGE_BUFFERS
@@ -427,6 +433,8 @@
427433
// Select just 1 of the following #include if uncomment #define USE_CUSTOM_ETHERNET
428434
// Otherwise, standard Ethernet library will be used for W5x00
429435

436+
////////////////////////////
437+
430438
#elif USE_UIP_ETHERNET
431439
#include "UIPEthernet.h"
432440
#warning Using UIPEthernet library
@@ -471,3 +479,5 @@ IPAddress ip(192, 168, 2, 222);
471479

472480
// Google DNS Server IP
473481
IPAddress myDns(8, 8, 8, 8);
482+
483+
#endif //defines_h

examples/AdvancedWebServer/AdvancedWebServer.ino

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,8 @@ void drawGraph()
147147
}
148148
}
149149

150-
void setup(void)
150+
void initEthernet()
151151
{
152-
Serial.begin(115200);
153-
while (!Serial);
154-
155-
Serial.print("\nStarting AdvancedWebServer on " + String(BOARD_NAME));
156-
Serial.println(" with " + String(SHIELD_TYPE));
157-
Serial.println(ETHERNET_WEBSERVER_SSL_VERSION);
158-
159152
#if USE_ETHERNET_PORTENTA_H7
160153
ET_LOGWARN(F("======== USE_PORTENTA_H7_ETHERNET ========"));
161154
#elif USE_NATIVE_ETHERNET
@@ -171,12 +164,24 @@ void setup(void)
171164
#endif
172165

173166
#if !(USE_NATIVE_ETHERNET || USE_ETHERNET_PORTENTA_H7)
167+
168+
#if (USING_SPI2)
169+
#if defined(CUR_PIN_MISO)
170+
ET_LOGWARN(F("Default SPI pinout:"));
171+
ET_LOGWARN1(F("MOSI:"), CUR_PIN_MOSI);
172+
ET_LOGWARN1(F("MISO:"), CUR_PIN_MISO);
173+
ET_LOGWARN1(F("SCK:"), CUR_PIN_SCK);
174+
ET_LOGWARN1(F("SS:"), CUR_PIN_SS);
175+
ET_LOGWARN(F("========================="));
176+
#endif
177+
#else
174178
ET_LOGWARN(F("Default SPI pinout:"));
175179
ET_LOGWARN1(F("MOSI:"), MOSI);
176180
ET_LOGWARN1(F("MISO:"), MISO);
177181
ET_LOGWARN1(F("SCK:"), SCK);
178182
ET_LOGWARN1(F("SS:"), SS);
179183
ET_LOGWARN(F("========================="));
184+
#endif
180185

181186
#if defined(ESP8266)
182187
// For ESP8266, change for other boards if necessary
@@ -304,35 +309,33 @@ void setup(void)
304309
Ethernet.begin(mac[index]);
305310

306311
#if !(USE_NATIVE_ETHERNET || USE_ETHERNET_PORTENTA_H7)
312+
ET_LOGWARN(F("========================="));
313+
307314
#if defined( ESP32 )
308315
// Just info to know how to connect correctly
309316
// To change for other SPI
310-
Serial.println("=========================");
311-
Serial.println("Currently Used SPI pinout:");
312-
Serial.print("MOSI:");
313-
Serial.println(PIN_MOSI);
314-
Serial.print("MISO:");
315-
Serial.println(PIN_MISO);
316-
Serial.print("SCK:");
317-
Serial.println(PIN_SCK);
318-
Serial.print("SS:");
319-
Serial.println(USE_THIS_SS_PIN);
320-
Serial.println(F("========================="));
317+
ET_LOGWARN(F("Currently Used SPI pinout:"));
318+
ET_LOGWARN1(F("MOSI:"), PIN_MOSI);
319+
ET_LOGWARN1(F("MISO:"), PIN_MISO);
320+
ET_LOGWARN1(F("SCK:"), PIN_SCK);
321+
ET_LOGWARN1(F("SS:"), PIN_SS);
321322
#else
322-
// Just info to know how to connect correctly
323-
Serial.println("=========================");
324-
Serial.println("Currently Used SPI pinout:");
325-
Serial.print("MOSI:");
326-
Serial.println(MOSI);
327-
Serial.print("MISO:");
328-
Serial.println(MISO);
329-
Serial.print("SCK:");
330-
Serial.println(SCK);
331-
Serial.print("SS:");
332-
Serial.println(SS);
323+
#if defined(CUR_PIN_MISO)
324+
ET_LOGWARN(F("Currently Used SPI pinout:"));
325+
ET_LOGWARN1(F("MOSI:"), CUR_PIN_MOSI);
326+
ET_LOGWARN1(F("MISO:"), CUR_PIN_MISO);
327+
ET_LOGWARN1(F("SCK:"), CUR_PIN_SCK);
328+
ET_LOGWARN1(F("SS:"), CUR_PIN_SS);
329+
#else
330+
ET_LOGWARN(F("Currently Used SPI pinout:"));
331+
ET_LOGWARN1(F("MOSI:"), MOSI);
332+
ET_LOGWARN1(F("MISO:"), MISO);
333+
ET_LOGWARN1(F("SCK:"), SCK);
334+
ET_LOGWARN1(F("SS:"), SS);
335+
#endif
333336
#endif
334337

335-
Serial.println(F("========================="));
338+
ET_LOGWARN(F("========================="));
336339

337340
#elif (USE_ETHERNET_PORTENTA_H7)
338341
if (Ethernet.hardwareStatus() == EthernetNoHardware)
@@ -356,6 +359,18 @@ void setup(void)
356359

357360
Serial.print(F("Connected! IP address: "));
358361
Serial.println(Ethernet.localIP());
362+
}
363+
364+
void setup()
365+
{
366+
Serial.begin(115200);
367+
while (!Serial);
368+
369+
Serial.print("\nStarting AdvancedWebServer on " + String(BOARD_NAME));
370+
Serial.println(" with " + String(SHIELD_TYPE));
371+
Serial.println(ETHERNET_WEBSERVER_SSL_VERSION);
372+
373+
initEthernet();
359374

360375
server.on(F("/"), handleRoot);
361376
server.on(F("/test.svg"), drawGraph);

0 commit comments

Comments
 (0)