W5500 driver for mbed OS 5

Dependents:   http-webserver-example mbed-os-example-sockets

Fork of W5500Interface by Sergei G

Revision:
8:c71c66d43703
Parent:
6:e2ab76b2be07
Child:
11:5118c2bff025
--- a/WIZnet/W5500.cpp	Thu Aug 09 08:42:47 2018 +0000
+++ b/WIZnet/W5500.cpp	Fri Aug 10 04:22:24 2018 +0000
@@ -7,37 +7,44 @@
 #ifdef USE_W5500
 
 //Debug is disabled by default
-#if 0
+#define w5500_DBG 0
+
+#if w5500_DBG
 #define DBG(...) do{debug("%p %d %s ", this,__LINE__,__PRETTY_FUNCTION__); debug(__VA_ARGS__); } while(0);
 //#define DBG(x, ...) debug("[W5500:DBG]"x"\r\n", ##__VA_ARGS__);
 #define WARN(x, ...) debug("[W5500:WARN]"x"\r\n", ##__VA_ARGS__);
 #define ERR(x, ...) debug("[W5500:ERR]"x"\r\n", ##__VA_ARGS__);
+#define INFO(x, ...) debug("[W5500:INFO]"x"\r\n", ##__VA_ARGS__);
 #else
 #define DBG(x, ...)
 #define WARN(x, ...)
 #define ERR(x, ...)
-#endif
-
-#if 1
-#define INFO(x, ...) debug("[W5500:INFO]"x"\r\n", ##__VA_ARGS__);
-#else
 #define INFO(x, ...)
 #endif
 
 #define DBG_SPI 0
 
+#if !defined(MBED_CONF_W5500_SPI_SPEED)
+#define MBED_CONF_W5500_SPI_SPEED   100000
+#endif
+
+
 WIZnet_Chip* WIZnet_Chip::inst;
 
 WIZnet_Chip::WIZnet_Chip(PinName mosi, PinName miso, PinName sclk, PinName _cs, PinName _reset):
     cs(_cs), reset_pin(_reset)
 {
     spi = new SPI(mosi, miso, sclk);
+    DBG("SPI interface init...\n");
+    spi->format(32, 0);
+    spi->frequency(MBED_CONF_W5500_SPI_SPEED);
     cs = 1;
     reset_pin = 1;
     inst = this;
     dhcp = false;
 }
 
+/*
 WIZnet_Chip::WIZnet_Chip(SPI* spi, PinName _cs, PinName _reset):
     cs(_cs), reset_pin(_reset)
 {
@@ -47,6 +54,12 @@
     inst = this;
     dhcp = false;
 }
+*/
+
+WIZnet_Chip::~WIZnet_Chip()
+{
+    delete spi;
+}
 
 bool WIZnet_Chip::setmac()
 {
@@ -150,9 +163,8 @@
 #if defined(USE_WIZ550IO_MAC)
     //reg_rd_mac(SHAR, mac); // read the MAC address inside the module
 #endif
-
     //reg_wr_mac(SHAR, mac);
-
+    
     // set RX and TX buffer size
     for (int socket = 0; socket < MAX_SOCK_NUM; socket++) {
         sreg<uint8_t>(socket, Sn_RXBUF_SIZE, 2);