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@1:e8699d7ca61a, 2018-04-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |