SPI to Ethernet Slave
Dependencies: WIZnetInterface mbed
Fork of SPI_HelloWorld_Mbed by
main.cpp
- Committer:
- Ricky_Kwon
- Date:
- 2016-03-09
- Revision:
- 3:30b262b6c2f9
- Parent:
- 2:34bd7b8d30f9
- Child:
- 4:eec728094dbc
File content as of revision 3:30b262b6c2f9:
#include "mbed.h" #include "EthernetInterface.h" #define DHCP 1 uint8_t mac_addr[6] = {0x00, 0x08, 0xdc, 0x12, 0x34, 0x45}; const char ip_addr[] = "xxx.xxx.xxx.xxx"; const char mask_addr[] = "xxx.xxx.xxx.xxx"; const char gateway_addr[] = "xxx.xxx.xxx.xxx"; const char* Target_addr = "192.168.0.2"; const int Target_port = 10000; char* test=NULL; SPISlave slave(PA_8, PA_7, PA_6, PA_5); // mosi, miso, sclk, ssel int main() { char txbuf[256]={0,}; char rxbuf[256]={0,}; int i, n, close_cnt, length, send_flag=0, cnt_flag=0, send_cnt=0; int slave_h=0; printf("SPI to Ethernet Slave\r\n"); /* * SPI Setting */ slave.format(8,3); slave.frequency(1000000); /* * Network Setting */ printf("Wait a second...\r\n"); EthernetInterface eth; #if DHCP==1 printf("Network Setting DHCP\r\n"); eth.init(mac_addr); #else printf("Network Setting Static\r\n"); eth.init(mac_addr, ip_addr, mask_addr, gateway_addr); #endif eth.connect(); printf("IP Address is %s\r\n", eth.getIPAddress()); while(1) { printf("Check Ethernet Link\r\n"); if(eth.link() == true) { printf("Link up\r\n"); break; } } /* * Create Client Socket and Connecting */ TCPSocketConnection socket; while(1) { while (socket.connect(Target_addr, Target_port) < 0) { printf("Unable to connect to (%s) on port (%d)\r\n", Target_addr, Target_port); wait(1); } printf("Connected to Server at %s\r\n",Target_addr); while(1) { n = socket.receive(txbuf, sizeof(txbuf)); printf("n = %d\r\n", n); if(slave.receive()) { slave_h = slave.read(); printf("slave_h = char:%c, dec:%d, hex:%x\r\n", slave_h, slave_h, slave_h); if(slave_h==0x55) { printf("check loop slave_h if\r\n"); if(n > 0) { printf("check loop n if\r\n"); slave.reply(0x55); cnt_flag = 1; } else { slave.reply(0x00); } } else if((slave_h==0x01)&&(cnt_flag==1)) { printf("check loop slave_h + cnt_flag if\r\n"); slave.reply(n); cnt_flag = 0; send_flag = 1; } else { printf("else\r\n"); test = (char*)slave_h; socket.send(test, 1); } if(send_flag) { printf("send_flag\r\n"); slave.reply(txbuf[send_cnt]); send_cnt++; printf("send_cnt = char:%c, dec:%d, hex:%x\r\n", send_cnt, send_cnt, send_cnt); if(send_cnt==n) { printf("send_cnt\r\n"); send_cnt=0; send_flag=0; } } } } } }