SPI to Ethernet Master

Dependencies:   WIZnetInterface mbed

Fork of SPI_HelloWorld_Mbed by mbed official

Committer:
Ricky_Kwon
Date:
Wed Mar 09 08:14:30 2016 +0000
Revision:
3:feec15e3bb27
Parent:
2:34bd7b8d30f9
Child:
4:1b4fc2571fd4
SPI to Ethernet Master

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 3:feec15e3bb27 12 const int Target_port = 10001;
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 3:feec15e3bb27 18 char txbuf[256]={0,};
Ricky_Kwon 3:feec15e3bb27 19 char rxbuf[256]={0,};
Ricky_Kwon 3:feec15e3bb27 20 int i, n, closecount, slave_h, length;
Ricky_Kwon 3:feec15e3bb27 21
Ricky_Kwon 3:feec15e3bb27 22 printf("SPI to Ethernet Master\r\n");
Ricky_Kwon 3:feec15e3bb27 23
Ricky_Kwon 3:feec15e3bb27 24 /*
Ricky_Kwon 3:feec15e3bb27 25 * SPI Setting
Ricky_Kwon 3:feec15e3bb27 26 */
Ricky_Kwon 3:feec15e3bb27 27 master.format(8,3);
Ricky_Kwon 3:feec15e3bb27 28 master.frequency(1000000);
Ricky_Kwon 3:feec15e3bb27 29
Ricky_Kwon 3:feec15e3bb27 30 /*
Ricky_Kwon 3:feec15e3bb27 31 * Network Setting
Ricky_Kwon 3:feec15e3bb27 32 */
Ricky_Kwon 3:feec15e3bb27 33 printf("Wait a second...\r\n");
Ricky_Kwon 3:feec15e3bb27 34 EthernetInterface eth;
Ricky_Kwon 3:feec15e3bb27 35 #if DHCP==1
Ricky_Kwon 3:feec15e3bb27 36 printf("Network Setting DHCP\r\n");
Ricky_Kwon 3:feec15e3bb27 37 eth.init(mac_addr);
Ricky_Kwon 3:feec15e3bb27 38 #else
Ricky_Kwon 3:feec15e3bb27 39 printf("Network Setting Static\r\n");
Ricky_Kwon 3:feec15e3bb27 40 eth.init(mac_addr, ip_addr, mask_addr, gateway_addr);
Ricky_Kwon 3:feec15e3bb27 41 #endif
Ricky_Kwon 3:feec15e3bb27 42 eth.connect();
Ricky_Kwon 3:feec15e3bb27 43 printf("IP Address is %s\r\n", eth.getIPAddress());
Ricky_Kwon 3:feec15e3bb27 44 while(1)
Ricky_Kwon 3:feec15e3bb27 45 {
Ricky_Kwon 3:feec15e3bb27 46 printf("Check Ethernet Link\r\n");
Ricky_Kwon 3:feec15e3bb27 47 if(eth.link() == true)
Ricky_Kwon 3:feec15e3bb27 48 {
Ricky_Kwon 3:feec15e3bb27 49 printf("Link up\r\n");
Ricky_Kwon 3:feec15e3bb27 50 break;
Ricky_Kwon 3:feec15e3bb27 51 }
Ricky_Kwon 3:feec15e3bb27 52 }
Ricky_Kwon 3:feec15e3bb27 53
Ricky_Kwon 3:feec15e3bb27 54 /*
Ricky_Kwon 3:feec15e3bb27 55 * Create Client Socket and Connecting
Ricky_Kwon 3:feec15e3bb27 56 */
Ricky_Kwon 3:feec15e3bb27 57 TCPSocketConnection socket;
Ricky_Kwon 3:feec15e3bb27 58 while(1)
Ricky_Kwon 3:feec15e3bb27 59 {
Ricky_Kwon 3:feec15e3bb27 60 while (socket.connect(Target_addr, Target_port) < 0)
Ricky_Kwon 3:feec15e3bb27 61 {
Ricky_Kwon 3:feec15e3bb27 62 printf("Unable to connect to (%s) on port (%d)\r\n", Target_addr, Target_port);
Ricky_Kwon 3:feec15e3bb27 63 wait(1);
Ricky_Kwon 3:feec15e3bb27 64 }
Ricky_Kwon 3:feec15e3bb27 65 printf("Connected to Server at %s\r\n",Target_addr);
Ricky_Kwon 3:feec15e3bb27 66
Ricky_Kwon 3:feec15e3bb27 67 while(1)
Ricky_Kwon 3:feec15e3bb27 68 {
Ricky_Kwon 3:feec15e3bb27 69
Ricky_Kwon 3:feec15e3bb27 70 n = socket.receive(txbuf, sizeof(txbuf));
Ricky_Kwon 3:feec15e3bb27 71 printf("n = %d\r\n", n);
Ricky_Kwon 3:feec15e3bb27 72 slave_h = master.write(0x55);
Ricky_Kwon 3:feec15e3bb27 73 printf("slave_h = char:%c, dec:%d, hex:%x\r\n", slave_h, slave_h, slave_h);
Ricky_Kwon 3:feec15e3bb27 74 if(slave_h==0x55)
Ricky_Kwon 3:feec15e3bb27 75 {
Ricky_Kwon 3:feec15e3bb27 76 printf("check loop slave_h if\r\n");
Ricky_Kwon 3:feec15e3bb27 77 length = master.write(0x01);
Ricky_Kwon 3:feec15e3bb27 78 printf("length = char:%c, dec:%d, hex:%x\r\n", length, length, length);
Ricky_Kwon 3:feec15e3bb27 79 for(i=0; i<length; i++)
Ricky_Kwon 3:feec15e3bb27 80 {
Ricky_Kwon 3:feec15e3bb27 81 rxbuf[i]=master.write(0x00);
Ricky_Kwon 3:feec15e3bb27 82 printf("rxbuf[%d] = char:%c, dec:%d, hex:%x\r\n", i, rxbuf[i], rxbuf[i], rxbuf[i]);
Ricky_Kwon 3:feec15e3bb27 83 }
Ricky_Kwon 3:feec15e3bb27 84 socket.send(rxbuf, strlen(rxbuf));
Ricky_Kwon 3:feec15e3bb27 85 }
Ricky_Kwon 3:feec15e3bb27 86 if(n > 0)
Ricky_Kwon 3:feec15e3bb27 87 {
Ricky_Kwon 3:feec15e3bb27 88 printf("check loop n if\r\n");
Ricky_Kwon 3:feec15e3bb27 89 for(i=0; i<n; i++)
Ricky_Kwon 3:feec15e3bb27 90 {
Ricky_Kwon 3:feec15e3bb27 91 master.write(txbuf[i]);
Ricky_Kwon 3:feec15e3bb27 92 printf("check loop for\r\n");
Ricky_Kwon 3:feec15e3bb27 93 }
Ricky_Kwon 3:feec15e3bb27 94 memset(txbuf, 0, strlen(txbuf));
Ricky_Kwon 3:feec15e3bb27 95 closecount=0;
Ricky_Kwon 3:feec15e3bb27 96 }
Ricky_Kwon 3:feec15e3bb27 97 }
Ricky_Kwon 3:feec15e3bb27 98 }
Ricky_Kwon 3:feec15e3bb27 99 }
Ricky_Kwon 3:feec15e3bb27 100
Ricky_Kwon 3:feec15e3bb27 101