microSDを使ってみる
Page last updated
16 May 2011, by
Tsunenobu Endo.
1 reply
microSDにはSPIを使って通信する。
SDを操作するクラスとFATフォーマットに対応するクラスが必要。
まず、SDFileSystemをインポートする。
ここから、
http://mbed.org/users/simon/programs/SDFileSystem/5yj8f
Import this programをクリックする。
mbet Compilerが選択されて、選択したファイルをインポートする画面に切り替わる。SDFileSystemは「Program」で公開されているので、ライブラリとして使用するプロジェクトに読み込む。
「Library」スイッチ・ボックスを選択し、
「TargetPath」を目的のターゲットに切り替えるとImportできる。
インポートされると、SDFileSystemと、FATFileSystemがライブラリとしてプロジェクトに登録される。
OrangeBoardのピンアサインでの記述は以下の通りで、SDへの読み書きのディレクトリは
/sd/
(LocalFileSystemの場合は、/local/)
// MicroSD Ssytem
#include "SDFileSystem.h"
#define SD_MOSI p5
#define SD_MISO p6
#define SD_SCLK p7
#define SD_CS p8
//SDFileSystem sd(p5, p6, p7, p13, "sd"); // mosi, miso, sclk, cs, name
SDFileSystem sd(SD_MOSI, SD_MISO, SD_SCLK, SD_CS, "sd"); // mosi, miso, sclk, cs, name (HW modification candidate)
// File Open <ex>
FILE *fp;
fp = fopen( "/sd/star_bd.txt", "w" );
1 comment on microSDを使ってみる:
EndoTsunenobu
#
26 Jul 2011
ファイル名の参照とフォルダ
LocalFileSystemの注意
Hand BookによるとLocal File Systemでは、
- サブ・ディレクトリは不可 -> MicroSDSystemでは大丈夫のようである
- ファイルは8.3のみ
- 書込みファイルではfseekをサポートしない
ようなので、注意する
ファイル名を参照
opendirが使える。dirent.hをincludeする必要はない。
#include "mbed.h"
LocalFileSystem local("local");
int main(void) {
char DIRPATH[]="/local";
DIR *dir;
struct dirent *entry;
dir = opendir(DIRPATH);
if ( dir != NULL ) {
while ( (entry = readdir(dir)) != NULL ) {
printf("%s\r\n", entry->d_name);
}
}
closedir(dir);
return 0;
}
MicroSDでサブ・ディレクトリを作成
上記と同じくdirect.hをincludeする必要は無い。
mkdir(arg1)
->arg1: 作成するディレクトリ名
mkdir(arg1, arg2)
->arg1: 作成するディレクトリ名
->arg2: 作成するディレクトリのパーミッション設定
// MicroSD Ssytem
#include "SDFileSystem.h"
#define SD_MOSI p5
#define SD_MISO p6
#define SD_SCLK p7
#define SD_CS p8
//SDFileSystem sd(p5, p6, p7, p13, "sd"); // mosi, miso, sclk, cs, name
int main() {
FILE *fp
mkdir("/sd/subdir", 0777);
if ( NULL == (fp = fopen( "/sd/subdir/logData.txt", "w" )) ) {
error( "" ); // Error LED brinking.
return 1;
}
fprintf(fp, "Able to write file to microSD");
fclose(fp);
}
Please log in to post comments.
ファイル名の参照とフォルダ
LocalFileSystemの注意
Hand BookによるとLocal File Systemでは、
ようなので、注意する
ファイル名を参照
opendirが使える。dirent.hをincludeする必要はない。
#include "mbed.h" LocalFileSystem local("local"); int main(void) { char DIRPATH[]="/local"; DIR *dir; struct dirent *entry; dir = opendir(DIRPATH); if ( dir != NULL ) { while ( (entry = readdir(dir)) != NULL ) { printf("%s\r\n", entry->d_name); } } closedir(dir); return 0; }MicroSDでサブ・ディレクトリを作成
上記と同じくdirect.hをincludeする必要は無い。
mkdir(arg1)
->arg1: 作成するディレクトリ名
mkdir(arg1, arg2)
->arg1: 作成するディレクトリ名
->arg2: 作成するディレクトリのパーミッション設定
// MicroSD Ssytem #include "SDFileSystem.h" #define SD_MOSI p5 #define SD_MISO p6 #define SD_SCLK p7 #define SD_CS p8 //SDFileSystem sd(p5, p6, p7, p13, "sd"); // mosi, miso, sclk, cs, name int main() { FILE *fp mkdir("/sd/subdir", 0777); if ( NULL == (fp = fopen( "/sd/subdir/logData.txt", "w" )) ) { error( "" ); // Error LED brinking. return 1; } fprintf(fp, "Able to write file to microSD"); fclose(fp); }