make w5500 spi pins configurable
This commit is contained in:
@@ -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
7
Pins.h
@@ -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
|
||||
|
||||
@@ -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>");
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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__)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user