make w5500 spi pins configurable

This commit is contained in:
technyon
2023-02-03 20:07:45 +01:00
parent 870af68f45
commit 13e7643b0d
8 changed files with 28 additions and 8 deletions

View File

@@ -60,7 +60,7 @@ void Network::setupDevice()
_networkDeviceType = digitalRead(hardwareDetect) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500;
}
}
_networkDeviceType = NetworkDeviceType::W5500;
switch(_networkDeviceType)
{
case NetworkDeviceType::W5500:

7
Pins.h
View File

@@ -1,7 +1,10 @@
#pragma once
#define ETHERNET_CS_PIN 5
#define ETHERNET_RESET_PIN 33
#define ETHERNET_SCK_PIN 22
#define ETHERNET_MISO_PIN 23
#define ETHERNET_MOSI_PIN 33
#define ETHERNET_CS_PIN 19
#define ETHERNET_RESET_PIN -1
#define TRIGGER_LOCK_PIN 32
#define TRIGGER_UNLOCK_PIN 33
#define TRIGGER_UNLATCH_PIN 27

View File

@@ -564,7 +564,7 @@ void WebCfgServer::buildOtaHtml(String &response)
{
buildHtmlHeader(response);
if(millis() < 60000)
if(millis() < 20000)
{
response.concat("OTA functionality not ready. Please wait a moment and reload.");
response.concat("</BODY></HTML>");

View File

@@ -100,9 +100,10 @@ void EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress g
_dnsServerAddress = dns;
}
void EthernetClass::init(uint8_t sspin)
void EthernetClass::init(uint8_t sspin, uint8_t sckpin, uint8_t misopin, uint8_t mosipin)
{
W5100.setSS(sspin);
W5100.setSPI(sckpin, misopin, mosipin);
}
EthernetLinkStatus EthernetClass::linkStatus()

View File

@@ -89,7 +89,7 @@ public:
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns);
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway);
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway, IPAddress subnet);
static void init(uint8_t sspin = 10);
static void init(uint8_t sspin = 10, uint8_t sckpin = 255, uint8_t misopin = 255, uint8_t mosipin = 255);
static void MACAddress(uint8_t *mac_address);
static IPAddress localIP();

View File

@@ -53,6 +53,9 @@
uint8_t W5100Class::chip = 0;
uint8_t W5100Class::CH_BASE_MSB;
uint8_t W5100Class::ss_pin = SS_PIN_DEFAULT;
uint8_t W5100Class::sck_pin = 255;
uint8_t W5100Class::miso_pin = 255;
uint8_t W5100Class::mosi_pin = 255;
#ifdef ETHERNET_LARGE_BUFFERS
uint16_t W5100Class::SSIZE = 2048;
uint16_t W5100Class::SMASK = 0x07FF;
@@ -101,7 +104,11 @@ uint8_t W5100Class::init(void)
delay(560);
//Serial.println("w5100 init");
SPI.begin();
if(sck_pin != 255 && miso_pin != 255 && mosi_pin != 255) {
SPI.begin(sck_pin, miso_pin, mosi_pin, -1);
} else {
SPI.begin();
}
initSS();
resetSS();
SPI.beginTransaction(SPI_ETHERNET_SETTINGS);

View File

@@ -298,6 +298,9 @@ public:
private:
static uint8_t chip;
static uint8_t ss_pin;
static uint8_t sck_pin;
static uint8_t miso_pin;
static uint8_t mosi_pin;
static uint8_t softReset(void);
static uint8_t isW5100(void);
static uint8_t isW5200(void);
@@ -332,6 +335,11 @@ public:
return false;
}
static void setSS(uint8_t pin) { ss_pin = pin; }
static void setSPI(uint8_t sckpin, uint8_t misopin, uint8_t mosipin) {
sck_pin = sckpin;
miso_pin = misopin;
mosi_pin = mosipin;
}
private:
#if defined(__AVR__)

View File

@@ -37,7 +37,7 @@ void W5500Device::initialize()
resetDevice();
Ethernet.init(ETHERNET_CS_PIN);
Ethernet.init(ETHERNET_CS_PIN, ETHERNET_SCK_PIN, ETHERNET_MISO_PIN, ETHERNET_MOSI_PIN);
if(_preferences->getBool(preference_mqtt_log_enabled))
{
@@ -123,6 +123,7 @@ void W5500Device::reconfigure()
void W5500Device::resetDevice()
{
if(ETHERNET_RESET_PIN == -1) return;
Log->println(F("Resetting network hardware."));
pinMode(ETHERNET_RESET_PIN, OUTPUT);
digitalWrite(ETHERNET_RESET_PIN, HIGH);