HTTP SD Card File Server

Dependencies:   SDFileSystem WIZnetInterface mbed

Fork of HTTP_SD_Server_K64F by FRDM-K64F Code Share

Prerequisite

This Program is the example how to show SD card file list with web-browser for WIZwiki-W7500.

To implement this function, you need a Platform board, network Interface board and SD card. Below are what we used.

  • WIZwiki-W7500 from WIZnet (Platform board and Ethernet I/F board)
  • SD card

Hardware Configuration

WIZwiki-W7500 Pin map

pin map

Software

SPI Initialization

main.cpp

SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd");

Refer to ....

Revision:
8:4b43259a1e33
Parent:
7:04744a9ce2b9
Child:
9:d0615c97295e
--- a/main.cpp	Sun Apr 12 03:04:28 2015 +0000
+++ b/main.cpp	Fri Jun 26 01:17:43 2015 +0000
@@ -4,6 +4,12 @@
 #include <stdio.h>
 #include <string.h>
 
+
+#define MAC     "\x00\x08\xDC\x11\x34\x78"
+#define IP      "192.168.77.100"
+#define MASK    "255.255.255.0"
+#define GATEWAY "192.168.77.1"
+
 #define HTTPD_SERVER_PORT   80
 #define HTTPD_MAX_REQ_LENGTH   1023
 #define HTTPD_MAX_HDR_LENGTH   255
@@ -14,7 +20,8 @@
 
 //SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC1768 MBD2PMD
 //SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // Seeeduino Arch Pro SPI2SD
-SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F
+//SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F
+SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500 
 
 EthernetInterface eth;
 TCPSocketServer server;
@@ -31,6 +38,18 @@
 FILE *fp;
 int rdCnt;
 
+DigitalOut led1(LED1); //server listning status
+DigitalOut led2(LED2); //socket connecting status
+
+Ticker ledTick;
+
+void ledTickfunc()
+{
+    led1 = !led1;
+}
+
+
+
 void get_file(char* uri)
 {
     uart.printf("get_file %s\n", uri);
@@ -88,6 +107,7 @@
 
 int main (void)
 {
+    ledTick.attach(&ledTickfunc,0.5);
 //    Serial Interface eth;
     uart.baud(115200);
     uart.printf("Initializing\n");
@@ -103,7 +123,8 @@
 
 //    EthernetInterface eth;
     uart.printf("Initializing Ethernet\n");
-    eth.init(); //Use DHCP
+    //eth.init(); //Use DHCP
+    eth.init((uint8_t*)MAC,IP,MASK,GATEWAY);  //IP,mask,Gateway
     uart.printf("Connecting\n");
     eth.connect();
     uart.printf("IP Address is %s\n", eth.getIPAddress());
@@ -120,6 +141,7 @@
 
         uart.printf("Connection from: %s\r\n", client.get_address());
         while (true) {
+            led2 = true;
             int n = client.receive(buffer, sizeof(buffer));
             if (n <= 0) break;
             uart.printf("Recieved Data: %d\r\n\r\n%.*s\r\n",n,n,buffer);
@@ -144,7 +166,7 @@
                 }
             }
         }
-
+        led2 = false;
         client.close();
     }
 }