SPI to Ethernet Master
Dependencies: WIZnetInterface mbed
Fork of SPI_HelloWorld_Mbed by
main.cpp
- Committer:
- Ricky_Kwon
- Date:
- 2016-03-09
- Revision:
- 3:feec15e3bb27
- Parent:
- 2:34bd7b8d30f9
- Child:
- 4:1b4fc2571fd4
File content as of revision 3:feec15e3bb27:
#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 = 10001; SPI master(PA_8, PA_7, PA_6, PA_5); // mosi, miso, sclk int main() { char txbuf[256]={0,}; char rxbuf[256]={0,}; int i, n, closecount, slave_h, length; printf("SPI to Ethernet Master\r\n"); /* * SPI Setting */ master.format(8,3); master.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); slave_h = master.write(0x55); 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"); length = master.write(0x01); printf("length = char:%c, dec:%d, hex:%x\r\n", length, length, length); for(i=0; i<length; i++) { rxbuf[i]=master.write(0x00); printf("rxbuf[%d] = char:%c, dec:%d, hex:%x\r\n", i, rxbuf[i], rxbuf[i], rxbuf[i]); } socket.send(rxbuf, strlen(rxbuf)); } if(n > 0) { printf("check loop n if\r\n"); for(i=0; i<n; i++) { master.write(txbuf[i]); printf("check loop for\r\n"); } memset(txbuf, 0, strlen(txbuf)); closecount=0; } } } }