Using SDCard with STM32F103C8T6 board.
Dependencies: mbed SDFileSystem
Using SD Card with STM32F103C8T6 board
Schematic
Wiring
STM32F103C8T6 | SDCard slot | |||
---|---|---|---|---|
GND | <=> | VSS | ||
+3.3V | <=> | VDD | ||
PB_5 | <=> | CMD/DI | ||
PB_4 | <=> | DO/DAT0 | ||
PB_3 | <=> | CLK | ||
PA_10 | <=> | CS/DAT3 |
main.cpp@2:cb349fd2a36a, 2019-02-05 (annotated)
- Committer:
- hudakz
- Date:
- Tue Feb 05 14:04:04 2019 +0000
- Revision:
- 2:cb349fd2a36a
- Parent:
- 1:e8699d7ca61a
Updated.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |