W5500 from SeeedStudio on NUCLEO-L476RG
Dependents: coap-example Borsch coap-example
Fork of W5500Interface by
Diff: WIZnet/W5500.cpp
- Revision:
- 2:06b6f9f7c071
- Parent:
- 1:2dee44ea52a9
- Child:
- 3:61ff27ed8355
--- a/WIZnet/W5500.cpp Thu Jun 15 20:19:23 2017 +0000 +++ b/WIZnet/W5500.cpp Sat Jul 01 07:29:02 2017 +0000 @@ -23,7 +23,7 @@ #define INFO(x, ...) #endif -#define DBG_SPI 0 +#define DBG_SPI 1 WIZnet_Chip* WIZnet_Chip::inst; @@ -49,7 +49,8 @@ bool WIZnet_Chip::setmac() { - for (int i =0; i < 6; i++) reg_wr<uint8_t>(SHAR+i, mac[i]); + reg_wr_mac(SHAR, mac); + //for (int i =0; i < 6; i++) reg_wr<uint8_t>(SHAR+i, mac[i]); return true; } @@ -148,6 +149,8 @@ sreg<uint8_t>(socket, Sn_RXBUF_SIZE, 2); sreg<uint8_t>(socket, Sn_TXBUF_SIZE, 2); } + + reg_rd_mac(SHAR, mac); // read the MAC address inside the module } @@ -244,30 +247,49 @@ if (socket < 0) { return -1; } + debug("send: Sn_TX_WR: %d\n", Sn_TX_WR); uint16_t ptr = sreg<uint16_t>(socket, Sn_TX_WR); uint8_t cntl_byte = (0x14 + (socket << 5)); + debug("send: spi_write cntl_byte: %d, len: %d\n", cntl_byte, len); spi_write(ptr, cntl_byte, (uint8_t*)str, len); + debug("send: Sn_TX_WR: %d\n", Sn_TX_WR); sreg<uint16_t>(socket, Sn_TX_WR, ptr + len); + debug("send: scmd SEND: %d\n", SEND); scmd(socket, SEND); uint8_t tmp_Sn_IR; + debug("send: 1st sreg<uint8_t>(socket, Sn_IR)\n"); while (( (tmp_Sn_IR = sreg<uint8_t>(socket, Sn_IR)) & INT_SEND_OK) != INT_SEND_OK) { // @Jul.10, 2014 fix contant name, and udp sendto function. switch (sreg<uint8_t>(socket, Sn_SR)) { case SOCK_CLOSED : + debug("send: return on close socket\n"); close(socket); return 0; //break; case SOCK_UDP : + debug("send: SOCK_UDP\n"); // ARP timeout is possible. if ((tmp_Sn_IR & INT_TIMEOUT) == INT_TIMEOUT) { + debug("send: return on ARP timeout\n"); sreg<uint8_t>(socket, Sn_IR, INT_TIMEOUT); return 0; } break; default : + debug("send: default - nothing\n"); break; } + debug("send: Nth sreg<uint8_t>(socket, Sn_IR)\n"); } + /* + while ((sreg<uint8_t>(socket, Sn_IR) & INT_SEND_OK) != INT_SEND_OK) { + if (sreg<uint8_t>(socket, Sn_SR) == CLOSED) { + close(socket); + return 0; + } + } + */ + debug("send: return INT_SEND_OK\n"); sreg<uint8_t>(socket, Sn_IR, INT_SEND_OK); return len; @@ -325,9 +347,9 @@ debug("[SPI]W %04x(%02x %d)", addr, cb, len); for(int i = 0; i < len; i++) { debug(" %02x", buf[i]); - if (i > 16) { - debug(" ..."); - break; + if (i % 16 == 0) { + debug("\n"); +// break; } } debug("\r\n"); @@ -352,9 +374,9 @@ debug("[SPI]R %04x(%02x %d)", addr, cb, len); for(int i = 0; i < len; i++) { debug(" %02x", buf[i]); - if (i > 16) { - debug(" ..."); - break; + if (i % 16 == 0) { + debug("\n"); +// break; } } debug("\r\n");