Example for reading and writing SD card using SPI mode.

Dependencies:   mbed

Fork of Demo_NucleoF4xx_SD_Card by 不韋 呂

Committer:
MikamiUitOpen
Date:
Sun Nov 13 11:37:35 2016 +0000
Revision:
0:08b4a59451e5
Child:
1:640ebf433b62
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:08b4a59451e5 1 //--------------------------------------------------------------
MikamiUitOpen 0:08b4a59451e5 2 // SD カード書き込み,読み出しの例
MikamiUitOpen 0:08b4a59451e5 3 // インターフェース:SPI モード使用
MikamiUitOpen 0:08b4a59451e5 4 //
MikamiUitOpen 0:08b4a59451e5 5 // このプログラムが STM32F446RE で動作するライブラリのリビジョン:
MikamiUitOpen 0:08b4a59451e5 6 // SDFileSystem 3, 4 ~ 6 では正常に動かない
MikamiUitOpen 0:08b4a59451e5 7 // FATFileSystem 3, 4 ~ 9 では正常に動かない
MikamiUitOpen 0:08b4a59451e5 8 // mbed 121, 122 ~ 128 では正常に動かない
MikamiUitOpen 0:08b4a59451e5 9 // 調べた時点での mbed ライブラリの最新版:128
MikamiUitOpen 0:08b4a59451e5 10 //
MikamiUitOpen 0:08b4a59451e5 11 // fprintf() で,文字列に日本語を使っているため,コンパイル時に
MikamiUitOpen 0:08b4a59451e5 12 // 警告が出るが,無視しても問題はない
MikamiUitOpen 0:08b4a59451e5 13 //
MikamiUitOpen 0:08b4a59451e5 14 // 2016/11/13, 三上 直樹
MikamiUitOpen 0:08b4a59451e5 15 //--------------------------------------------------------------
MikamiUitOpen 0:08b4a59451e5 16
MikamiUitOpen 0:08b4a59451e5 17 #include "mbed.h"
MikamiUitOpen 0:08b4a59451e5 18 #include "SDFileSystem.h"
MikamiUitOpen 0:08b4a59451e5 19
MikamiUitOpen 0:08b4a59451e5 20 //SDFileSystem sd_(D11, D12, D13, D10, "sd"); // MOSI, MISO, SCK, CS: SPI1
MikamiUitOpen 0:08b4a59451e5 21 SDFileSystem sd_(D4, D5, D3, D2, "sd"); // MOSI, MISO, SCK, CS: SPI3
MikamiUitOpen 0:08b4a59451e5 22 Serial pc_(USBTX, USBRX);
MikamiUitOpen 0:08b4a59451e5 23
MikamiUitOpen 0:08b4a59451e5 24 int main() {
MikamiUitOpen 0:08b4a59451e5 25 pc_.baud(9600);
MikamiUitOpen 0:08b4a59451e5 26 pc_.printf("\r\nInitializing\r\n");
MikamiUitOpen 0:08b4a59451e5 27
MikamiUitOpen 0:08b4a59451e5 28 // 書き込みのテスト
MikamiUitOpen 0:08b4a59451e5 29 pc_.printf("\nWriting to SD card...: ");
MikamiUitOpen 0:08b4a59451e5 30 FILE *fp = fopen("/sd/sdtest.txt", "a+"); // 追加書き込み
MikamiUitOpen 0:08b4a59451e5 31
MikamiUitOpen 0:08b4a59451e5 32 if (fp != NULL)
MikamiUitOpen 0:08b4a59451e5 33 {
MikamiUitOpen 0:08b4a59451e5 34 fprintf(fp, "SD カードのテストです.\r\n");
MikamiUitOpen 0:08b4a59451e5 35 fclose(fp);
MikamiUitOpen 0:08b4a59451e5 36 pc_.printf("success!\r\n");
MikamiUitOpen 0:08b4a59451e5 37 }
MikamiUitOpen 0:08b4a59451e5 38 else
MikamiUitOpen 0:08b4a59451e5 39 pc_.printf("failed!\r\n");
MikamiUitOpen 0:08b4a59451e5 40
MikamiUitOpen 0:08b4a59451e5 41 // 読み出しのテスト
MikamiUitOpen 0:08b4a59451e5 42 pc_.printf("Reading from SD card...:\r\n");
MikamiUitOpen 0:08b4a59451e5 43 fp = fopen("/sd/sdtest.txt", "r");
MikamiUitOpen 0:08b4a59451e5 44 if (fp != NULL)
MikamiUitOpen 0:08b4a59451e5 45 {
MikamiUitOpen 0:08b4a59451e5 46 char str[256];
MikamiUitOpen 0:08b4a59451e5 47 while (fgets(str, 256, fp) != NULL)
MikamiUitOpen 0:08b4a59451e5 48 pc_.printf("%s", str);
MikamiUitOpen 0:08b4a59451e5 49
MikamiUitOpen 0:08b4a59451e5 50 fclose(fp);
MikamiUitOpen 0:08b4a59451e5 51 pc_.printf("success!\r\n");
MikamiUitOpen 0:08b4a59451e5 52 }
MikamiUitOpen 0:08b4a59451e5 53 else
MikamiUitOpen 0:08b4a59451e5 54 pc_.printf("failed!\r\n");
MikamiUitOpen 0:08b4a59451e5 55
MikamiUitOpen 0:08b4a59451e5 56 while (true) {}
MikamiUitOpen 0:08b4a59451e5 57 }