SPI to Ethernet Master
Dependencies: WIZnetInterface mbed
Fork of SPI_HelloWorld_Mbed by
main.cpp@5:fc5ffd86b1df, 2016-03-10 (annotated)
- 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?
User | Revision | Line number | New 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 |