import c2_ulx3s_test from examples
[Arduino] / c2_ulx3s_test / sd.cpp
diff --git a/c2_ulx3s_test/sd.cpp b/c2_ulx3s_test/sd.cpp
new file mode 100644 (file)
index 0000000..6a10f51
--- /dev/null
@@ -0,0 +1,70 @@
+#include <Arduino.h>
+
+#if 0
+#include "spi.h"
+volatile uint16_t *sd_spi    = (uint16_t *)0xFFFFFB50;
+uint8_t sd_cmd0()
+{
+ int i, r;
+
+ spi_start_tx(sd_spi);
+ for(i = 0; i < 10; i++)
+   spi_rxtx(sd_spi, 0xFF);
+ spi_rxtx(sd_spi, 0x40);
+ spi_rxtx(sd_spi, 0x00);
+ spi_rxtx(sd_spi, 0x00);
+ spi_rxtx(sd_spi, 0x00);
+ spi_rxtx(sd_spi, 0x95);
+
+ //Polling it to check  response to 0x01
+ r = 0xFF;
+ for(int i = 0; i < 1000 && r != 0xFF; i++)
+   r = spi_rxtx(sd_spi, 0xFF);
+ return r;
+}
+
+void sd_read(char *a)
+{
+  uint8_t cmd0_response = sd_cmd0();
+  if(cmd0_response == 1)
+    sprintf(a, "SD: %02x OK  ", cmd0_response);
+  else
+    sprintf(a, "SD: %02x FAIL", cmd0_response);
+}
+#endif
+
+#if 1
+#include <SPI.h>
+#include <SD.h>
+// set up variables using the SD utility library functions:
+Sd2Card card;
+SdVolume volume;
+SdFile root;
+// reading sd card type is slow
+void sd_read(char *a)
+{
+  char *cardtype;
+  if (card.init(SPI_HALF_SPEED, 2))
+  {
+    switch (card.type())
+    {
+    case SD_CARD_TYPE_SD1:
+      cardtype = "1 ";
+      break;
+    case SD_CARD_TYPE_SD2:
+      cardtype = "2 ";
+      break;
+    case SD_CARD_TYPE_SDHC:
+      cardtype = "HC";
+      break;
+    default:
+      cardtype = "? ";
+    }
+    sprintf(a, "SD: %s OK", cardtype);
+  }
+  else
+  {
+    sprintf(a, "SD: FAIL ");
+  }
+}
+#endif