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 = digitalRead(hardwareDetect) == HIGH ? NetworkDeviceType::WiFi : NetworkDeviceType::W5500;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_networkDeviceType = NetworkDeviceType::W5500;
|
||||||
switch(_networkDeviceType)
|
switch(_networkDeviceType)
|
||||||
{
|
{
|
||||||
case NetworkDeviceType::W5500:
|
case NetworkDeviceType::W5500:
|
||||||
|
|||||||
7
Pins.h
7
Pins.h
@@ -1,7 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define ETHERNET_CS_PIN 5
|
#define ETHERNET_SCK_PIN 22
|
||||||
#define ETHERNET_RESET_PIN 33
|
#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_LOCK_PIN 32
|
||||||
#define TRIGGER_UNLOCK_PIN 33
|
#define TRIGGER_UNLOCK_PIN 33
|
||||||
#define TRIGGER_UNLATCH_PIN 27
|
#define TRIGGER_UNLATCH_PIN 27
|
||||||
|
|||||||
@@ -564,7 +564,7 @@ void WebCfgServer::buildOtaHtml(String &response)
|
|||||||
{
|
{
|
||||||
buildHtmlHeader(response);
|
buildHtmlHeader(response);
|
||||||
|
|
||||||
if(millis() < 60000)
|
if(millis() < 20000)
|
||||||
{
|
{
|
||||||
response.concat("OTA functionality not ready. Please wait a moment and reload.");
|
response.concat("OTA functionality not ready. Please wait a moment and reload.");
|
||||||
response.concat("</BODY></HTML>");
|
response.concat("</BODY></HTML>");
|
||||||
|
|||||||
@@ -100,9 +100,10 @@ void EthernetClass::begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress g
|
|||||||
_dnsServerAddress = dns;
|
_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.setSS(sspin);
|
||||||
|
W5100.setSPI(sckpin, misopin, mosipin);
|
||||||
}
|
}
|
||||||
|
|
||||||
EthernetLinkStatus EthernetClass::linkStatus()
|
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);
|
||||||
static void begin(uint8_t *mac, IPAddress ip, IPAddress dns, IPAddress gateway);
|
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 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 void MACAddress(uint8_t *mac_address);
|
||||||
static IPAddress localIP();
|
static IPAddress localIP();
|
||||||
|
|||||||
@@ -53,6 +53,9 @@
|
|||||||
uint8_t W5100Class::chip = 0;
|
uint8_t W5100Class::chip = 0;
|
||||||
uint8_t W5100Class::CH_BASE_MSB;
|
uint8_t W5100Class::CH_BASE_MSB;
|
||||||
uint8_t W5100Class::ss_pin = SS_PIN_DEFAULT;
|
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
|
#ifdef ETHERNET_LARGE_BUFFERS
|
||||||
uint16_t W5100Class::SSIZE = 2048;
|
uint16_t W5100Class::SSIZE = 2048;
|
||||||
uint16_t W5100Class::SMASK = 0x07FF;
|
uint16_t W5100Class::SMASK = 0x07FF;
|
||||||
@@ -101,7 +104,11 @@ uint8_t W5100Class::init(void)
|
|||||||
delay(560);
|
delay(560);
|
||||||
//Serial.println("w5100 init");
|
//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();
|
initSS();
|
||||||
resetSS();
|
resetSS();
|
||||||
SPI.beginTransaction(SPI_ETHERNET_SETTINGS);
|
SPI.beginTransaction(SPI_ETHERNET_SETTINGS);
|
||||||
|
|||||||
@@ -298,6 +298,9 @@ public:
|
|||||||
private:
|
private:
|
||||||
static uint8_t chip;
|
static uint8_t chip;
|
||||||
static uint8_t ss_pin;
|
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 softReset(void);
|
||||||
static uint8_t isW5100(void);
|
static uint8_t isW5100(void);
|
||||||
static uint8_t isW5200(void);
|
static uint8_t isW5200(void);
|
||||||
@@ -332,6 +335,11 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static void setSS(uint8_t pin) { ss_pin = pin; }
|
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:
|
private:
|
||||||
#if defined(__AVR__)
|
#if defined(__AVR__)
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ void W5500Device::initialize()
|
|||||||
|
|
||||||
resetDevice();
|
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))
|
if(_preferences->getBool(preference_mqtt_log_enabled))
|
||||||
{
|
{
|
||||||
@@ -123,6 +123,7 @@ void W5500Device::reconfigure()
|
|||||||
|
|
||||||
void W5500Device::resetDevice()
|
void W5500Device::resetDevice()
|
||||||
{
|
{
|
||||||
|
if(ETHERNET_RESET_PIN == -1) return;
|
||||||
Log->println(F("Resetting network hardware."));
|
Log->println(F("Resetting network hardware."));
|
||||||
pinMode(ETHERNET_RESET_PIN, OUTPUT);
|
pinMode(ETHERNET_RESET_PIN, OUTPUT);
|
||||||
digitalWrite(ETHERNET_RESET_PIN, HIGH);
|
digitalWrite(ETHERNET_RESET_PIN, HIGH);
|
||||||
|
|||||||
Reference in New Issue
Block a user