Using SDCard with STM32F103C8T6 board.

Dependencies:   mbed SDFileSystem

Using SD Card with STM32F103C8T6 board

Schematic

/media/uploads/hudakz/stm32f103c8t6_sdcard.png

Wiring
STM32F103C8T6SDCard slot
GND<=>VSS
+3.3V<=>VDD
PB_5<=>CMD/DI
PB_4<=>DO/DAT0
PB_3<=>CLK
PA_10<=>CS/DAT3
Committer:
hudakz
Date:
Thu Apr 12 17:35:57 2018 +0000
Revision:
1:e8699d7ca61a
Parent:
0:4457b60e87c8
Child:
2:cb349fd2a36a
Updated.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hudakz 0:4457b60e87c8 1 #include "stm32f103c8t6.h"
hudakz 0:4457b60e87c8 2 #include "mbed.h"
hudakz 0:4457b60e87c8 3 #include "SDFileSystem.h"
hudakz 0:4457b60e87c8 4 #include "errno.h"
hudakz 0:4457b60e87c8 5
hudakz 0:4457b60e87c8 6 Serial pc(USBTX, USBRX);
hudakz 0:4457b60e87c8 7 SDFileSystem* fs;
hudakz 0:4457b60e87c8 8 FILE* fp;
hudakz 0:4457b60e87c8 9
hudakz 0:4457b60e87c8 10 int main()
hudakz 0:4457b60e87c8 11 {
hudakz 0:4457b60e87c8 12 confSysClock(); //Configure system clock (72MHz HSE clock, 48MHz USB clock)
hudakz 0:4457b60e87c8 13 pc.baud(9600);
hudakz 0:4457b60e87c8 14
hudakz 1:e8699d7ca61a 15 // Create and mount SDFileSystem
hudakz 0:4457b60e87c8 16 fs = new SDFileSystem(PB_5, PB_4, PB_3, PA_10, "sd"); // mosi, miso, sck, cs
hudakz 1:e8699d7ca61a 17 pc.printf("Mounting file system...\r\n");
hudakz 0:4457b60e87c8 18 int err = fs->mount();
hudakz 0:4457b60e87c8 19 pc.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
hudakz 0:4457b60e87c8 20 if (err)
hudakz 0:4457b60e87c8 21 return err;
hudakz 1:e8699d7ca61a 22
hudakz 0:4457b60e87c8 23 // Open the file.
hudakz 0:4457b60e87c8 24 pc.printf("Opening file '/sd/mytest/sdtest.txt'... ");
hudakz 0:4457b60e87c8 25 fp = fopen("/sd/mytest/sdtest.txt", "w+");
hudakz 0:4457b60e87c8 26 pc.printf("%s\r\n", (!fp ? "Failed :(\r\n" : "OK\r\n"));
hudakz 1:e8699d7ca61a 27
hudakz 1:e8699d7ca61a 28 if (!fp) {
hudakz 0:4457b60e87c8 29 // Check whether directory '/sd/mytest' exists.
hudakz 0:4457b60e87c8 30 pc.printf("\r\nChecking directory '/sd/mytest'...\r\n");
hudakz 0:4457b60e87c8 31 struct stat info;
hudakz 0:4457b60e87c8 32 err = stat("/sd/mytest", &info);
hudakz 1:e8699d7ca61a 33 if (err) {
hudakz 0:4457b60e87c8 34 pc.printf("Directory '/sd/mytest' does not exist.\r\n");
hudakz 0:4457b60e87c8 35 pc.printf("Trying to create it...");
hudakz 0:4457b60e87c8 36 err = mkdir("/sd/mytest", 0777);
hudakz 0:4457b60e87c8 37 pc.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
hudakz 0:4457b60e87c8 38 if (err)
hudakz 1:e8699d7ca61a 39 return err;
hudakz 0:4457b60e87c8 40 }
hudakz 1:e8699d7ca61a 41
hudakz 0:4457b60e87c8 42 // Create a new 'sdtest.txt' file.
hudakz 0:4457b60e87c8 43 pc.printf("File not found, creating a new one...\r\n");
hudakz 0:4457b60e87c8 44 fp = fopen("/sd/mytest/sdtest.txt", "w+");
hudakz 0:4457b60e87c8 45 pc.printf("%s\r\n", (!fp ? "Failed :(" : "OK"));
hudakz 1:e8699d7ca61a 46 if (!fp) {
hudakz 0:4457b60e87c8 47 error("error: %s (%d)\r\n", strerror(errno), -errno);
hudakz 0:4457b60e87c8 48 return errno;
hudakz 0:4457b60e87c8 49 }
hudakz 0:4457b60e87c8 50 }
hudakz 1:e8699d7ca61a 51
hudakz 1:e8699d7ca61a 52 for (int i = 0; i < 10; i++) {
hudakz 0:4457b60e87c8 53 pc.printf("Writing numbers (%d/%d)... ", i, 10);
hudakz 0:4457b60e87c8 54 err = fprintf(fp, " %d\r\n", i);
hudakz 1:e8699d7ca61a 55 if (err < 0) {
hudakz 0:4457b60e87c8 56 pc.printf("Fail :(\r\n");
hudakz 0:4457b60e87c8 57 error("error: %s (%d)\r\n", strerror(errno), -errno);
hudakz 1:e8699d7ca61a 58 } else
hudakz 0:4457b60e87c8 59 pc.printf("OK\r\n");
hudakz 0:4457b60e87c8 60 }
hudakz 1:e8699d7ca61a 61
hudakz 0:4457b60e87c8 62 pc.printf("Writing numbers (%d/%d)... OK\r\n\r\n", 10, 10);
hudakz 0:4457b60e87c8 63 err = fclose(fp);
hudakz 0:4457b60e87c8 64 pc.printf("Closing file '/sd/mytest/sdtest.txt'... ");
hudakz 0:4457b60e87c8 65 pc.printf("%s\r\n", (err ? "Failed :(\r\n" : "OK\r\n"));
hudakz 0:4457b60e87c8 66 if (err)
hudakz 1:e8699d7ca61a 67 return err;
hudakz 1:e8699d7ca61a 68
hudakz 0:4457b60e87c8 69 return 0;
hudakz 0:4457b60e87c8 70 }