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:
Tue Feb 05 14:04:04 2019 +0000
Revision:
2:cb349fd2a36a
Parent:
1:e8699d7ca61a
Updated.

Who changed what in which revision?

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