How to implement WIZ550io on FRDM-KL25Z. Refer to http://wizwiki.net/wiki/doku.php
Dependencies: W5500Interface mbed
Refer to http://www.youtube.com/watch?v=i77zoV5tnbE
Revision 0:614e89b2211e, committed 2014-10-22
- Comitter:
- bingdo
- Date:
- Wed Oct 22 06:34:24 2014 +0000
- Child:
- 1:2d33dfc71ea6
- Commit message:
- Create an example of FRDM-KL25Z Ethernet with WIZ550io.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterfaceW5500.lib Wed Oct 22 06:34:24 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/EthernetInterfaceW5500-makers/code/EthernetInterfaceW5500/#6f469f76a76a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Oct 22 06:34:24 2014 +0000 @@ -0,0 +1,136 @@ +#include "mbed.h" +//#include "EthernetInterface.h" +#include "EthernetInterfaceW5500.h" +#include <stdio.h> +#include <string.h> + +#define PORT 80 +//#define PORT 888 +#define _DHCP + +// move to main(). +//EthernetInterface eth; + +// move to main(). +//TCPSocketServer svr; +bool serverIsListened = false; + +// move to main(). +//TCPSocketConnection client; +bool clientIsConnected = false; +DigitalOut led1(LED1); //server listning status +DigitalOut led2(LED2); //socket connecting status + +Ticker ledTick; + +void ledTickfunc() +{ + if(serverIsListened) { + led1 = !led1; + } else { + led1 = false; + } +} + +int main (void) +{ + SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk + EthernetInterfaceW5500 eth(&spi, PTD0, PTA20);//, nRESET(PTA20); // reset pin is dummy, don't affect any pin of WIZ550io + spi.format(8,0); // 8bit, mode 0 + spi.frequency(7000000); // 7MHz + wait(1); // 1 second for stable state + + // late binding + TCPSocketServer svr; + TCPSocketConnection client; + + ledTick.attach(&ledTickfunc,0.5); + + /* + //setup ethernet interface + eth.init(); //Use DHCP + eth.connect(); + printf("IP Address is %s\n\r", eth.getIPAddress()); + */ + +#ifdef _DHCP +// didn't test yet in DHCP => TEST OK... + + eth.init(); //Use DHCP + eth.connect(); + //printf("IP Address is %s\n\r", eth.getIPAddress()); + printf("Initialized, MAC: %s\n\r", eth.getMACAddress()); + printf("Connected, IP: %s, MASK: %s, GW: %s\n\r", + eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); + +#else + // as your env. change to real IP address and so on. + int ret = eth.init("222.98.173.212", "255.255.255.192", "222.98.173.254"); + if (!ret) { + printf("Initialized, MAC: %s\n\r", eth.getMACAddress()); + printf("Connected, IP: %s, MASK: %s, GW: %s\n\r", + eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); + } else { + printf("Error eth.init() - ret = %d\n\r", ret); + return -1; + } +#endif + + //setup tcp socket + if(svr.bind(PORT)< 0) { + printf("tcp server bind failed.\n\r"); + return -1; + } else { + printf("tcp server bind successed.\n\r"); + serverIsListened = true; + } + + if(svr.listen(1) < 0) { + printf("tcp server listen failed.\n\r"); + return -1; + } else { + printf("tcp server is listening...\n\r"); + } + + //listening for http GET request + while (serverIsListened) { + //blocking mode(never timeout) + if(svr.accept(client)<0) { + printf("failed to accept connection.\n\r"); + } else { + printf("connection success!\n\rIP: %s\n\r",client.get_address()); + clientIsConnected = true; + led2 = true; + + while(clientIsConnected) { + char buffer[1024] = {}; + switch(client.receive(buffer, 1023)) { + case 0: + printf("recieved buffer is empty.\n\r"); + clientIsConnected = false; + break; + case -1: + printf("failed to read data from client.\n\r"); + clientIsConnected = false; + break; + default: + printf("Recieved Data: %d\n\r\n\r%.*s\n\r",strlen(buffer),strlen(buffer),buffer); + if(buffer[0] == 'G' && buffer[1] == 'E' && buffer[2] == 'T' ) { + printf("GET request incomming.\n\r"); + //setup http response header & data + char echoHeader[256] = {}; + sprintf(echoHeader,"HTTP/1.1 200 OK\n\rContent-Length: %d\n\rContent-Type: text\n\rConnection: Close\n\r\n\r",strlen(buffer)); + client.send(echoHeader,strlen(echoHeader)); + client.send(buffer,strlen(buffer)); + clientIsConnected = false; + printf("echo back done.\n\r"); + } + break; + } + } + printf("close connection.\n\rtcp server is listening...\n\r"); + client.close(); + led2 = false; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Oct 22 06:34:24 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/9327015d4013 \ No newline at end of file