SPI to Ethernet Master
Dependencies: WIZnetInterface mbed
Fork of SPI_HelloWorld_Mbed by
main.cpp@3:feec15e3bb27, 2016-03-09 (annotated)
- 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?
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 | 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 |