SPI to Ethernet Master

Dependencies:   WIZnetInterface mbed

Fork of SPI_HelloWorld_Mbed by mbed official

Committer:
Ricky_Kwon
Date:
Thu Mar 10 01:27:35 2016 +0000
Revision:
5:fc5ffd86b1df
Parent:
4:1b4fc2571fd4
Ethernet ---> W7500 ---> SPI ---> W7500 ---> Ethernet

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 3:feec15e3bb27 1 #include "mbed.h"
Ricky_Kwon 3:feec15e3bb27 2 #include "EthernetInterface.h"
Ricky_Kwon 3:feec15e3bb27 3
Ricky_Kwon 3:feec15e3bb27 4 #define DHCP 1
Ricky_Kwon 3:feec15e3bb27 5
Ricky_Kwon 3:feec15e3bb27 6 uint8_t mac_addr[6] = {0x00, 0x08, 0xdc, 0x12, 0x34, 0x45};
Ricky_Kwon 3:feec15e3bb27 7 const char ip_addr[] = "xxx.xxx.xxx.xxx";
Ricky_Kwon 3:feec15e3bb27 8 const char mask_addr[] = "xxx.xxx.xxx.xxx";
Ricky_Kwon 3:feec15e3bb27 9 const char gateway_addr[] = "xxx.xxx.xxx.xxx";
Ricky_Kwon 3:feec15e3bb27 10
Ricky_Kwon 3:feec15e3bb27 11 const char* Target_addr = "192.168.0.2";
Ricky_Kwon 5:fc5ffd86b1df 12 const int Target_port = 11111;
Ricky_Kwon 3:feec15e3bb27 13
Ricky_Kwon 3:feec15e3bb27 14 SPI master(PA_8, PA_7, PA_6, PA_5); // mosi, miso, sclk
Ricky_Kwon 3:feec15e3bb27 15
Ricky_Kwon 3:feec15e3bb27 16 int main() {
Ricky_Kwon 3:feec15e3bb27 17
Ricky_Kwon 5:fc5ffd86b1df 18 char EthTx[256]={0,};
Ricky_Kwon 5:fc5ffd86b1df 19 int i, n;
Ricky_Kwon 3:feec15e3bb27 20
Ricky_Kwon 3:feec15e3bb27 21 printf("SPI to Ethernet Master\r\n");
Ricky_Kwon 3:feec15e3bb27 22
Ricky_Kwon 3:feec15e3bb27 23 /*
Ricky_Kwon 3:feec15e3bb27 24 * SPI Setting
Ricky_Kwon 3:feec15e3bb27 25 */
Ricky_Kwon 3:feec15e3bb27 26 master.format(8,3);
Ricky_Kwon 3:feec15e3bb27 27 master.frequency(1000000);
Ricky_Kwon 3:feec15e3bb27 28
Ricky_Kwon 3:feec15e3bb27 29 /*
Ricky_Kwon 3:feec15e3bb27 30 * Network Setting
Ricky_Kwon 3:feec15e3bb27 31 */
Ricky_Kwon 3:feec15e3bb27 32 printf("Wait a second...\r\n");
Ricky_Kwon 3:feec15e3bb27 33 EthernetInterface eth;
Ricky_Kwon 3:feec15e3bb27 34 #if DHCP==1
Ricky_Kwon 3:feec15e3bb27 35 printf("Network Setting DHCP\r\n");
Ricky_Kwon 3:feec15e3bb27 36 eth.init(mac_addr);
Ricky_Kwon 3:feec15e3bb27 37 #else
Ricky_Kwon 3:feec15e3bb27 38 printf("Network Setting Static\r\n");
Ricky_Kwon 3:feec15e3bb27 39 eth.init(mac_addr, ip_addr, mask_addr, gateway_addr);
Ricky_Kwon 3:feec15e3bb27 40 #endif
Ricky_Kwon 3:feec15e3bb27 41 eth.connect();
Ricky_Kwon 3:feec15e3bb27 42 printf("IP Address is %s\r\n", eth.getIPAddress());
Ricky_Kwon 3:feec15e3bb27 43 while(1)
Ricky_Kwon 3:feec15e3bb27 44 {
Ricky_Kwon 3:feec15e3bb27 45 printf("Check Ethernet Link\r\n");
Ricky_Kwon 3:feec15e3bb27 46 if(eth.link() == true)
Ricky_Kwon 3:feec15e3bb27 47 {
Ricky_Kwon 3:feec15e3bb27 48 printf("Link up\r\n");
Ricky_Kwon 3:feec15e3bb27 49 break;
Ricky_Kwon 3:feec15e3bb27 50 }
Ricky_Kwon 3:feec15e3bb27 51 }
Ricky_Kwon 3:feec15e3bb27 52
Ricky_Kwon 3:feec15e3bb27 53 /*
Ricky_Kwon 3:feec15e3bb27 54 * Create Client Socket and Connecting
Ricky_Kwon 3:feec15e3bb27 55 */
Ricky_Kwon 3:feec15e3bb27 56 TCPSocketConnection socket;
Ricky_Kwon 3:feec15e3bb27 57 while(1)
Ricky_Kwon 3:feec15e3bb27 58 {
Ricky_Kwon 3:feec15e3bb27 59 while (socket.connect(Target_addr, Target_port) < 0)
Ricky_Kwon 3:feec15e3bb27 60 {
Ricky_Kwon 3:feec15e3bb27 61 printf("Unable to connect to (%s) on port (%d)\r\n", Target_addr, Target_port);
Ricky_Kwon 3:feec15e3bb27 62 wait(1);
Ricky_Kwon 3:feec15e3bb27 63 }
Ricky_Kwon 3:feec15e3bb27 64 printf("Connected to Server at %s\r\n",Target_addr);
Ricky_Kwon 3:feec15e3bb27 65
Ricky_Kwon 3:feec15e3bb27 66 while(1)
Ricky_Kwon 3:feec15e3bb27 67 {
Ricky_Kwon 5:fc5ffd86b1df 68 if((n = socket.receive(EthTx, sizeof(EthTx)))>0)
Ricky_Kwon 3:feec15e3bb27 69 {
Ricky_Kwon 3:feec15e3bb27 70 for(i=0; i<n; i++)
Ricky_Kwon 3:feec15e3bb27 71 {
Ricky_Kwon 5:fc5ffd86b1df 72 master.write(EthTx[i]);
Ricky_Kwon 3:feec15e3bb27 73 }
Ricky_Kwon 5:fc5ffd86b1df 74 memset(EthTx, 0, strlen(EthTx));
Ricky_Kwon 5:fc5ffd86b1df 75 }
Ricky_Kwon 3:feec15e3bb27 76 }
Ricky_Kwon 3:feec15e3bb27 77 }
Ricky_Kwon 3:feec15e3bb27 78 }
Ricky_Kwon 3:feec15e3bb27 79
Ricky_Kwon 3:feec15e3bb27 80