
Xiphosuraにはログ取り用にmicroSDカードスロットを搭載しています. stm32plusを使うと,STM32のSDIOペリフェラルの初期化が簡単になるほか,ファイルシステムへのアクセスも非常に楽になるのですが,楽になりすぎて学びがないのがちょっと難点です. 何にせよ便利なので使ってみました.
内容としては以下のようにするだけでおっけーです(便利…).
FileSystem *fs;
NullTimeProvider timeProvider;
SdioDmaSdCard *sdcard = new SdioDmaSdCard; // SDIOの初期化が自動的に行われる
if(errorProvider.hasError()) error();
if(!FileSystem::getInstance(*sdcard,timeProvider,fs)) error(); // ファイルシステムの取得
FileInformation *info;
// testという名前のファイルの情報を取得.ファイルが存在すれば{}の中身が実行される.
if(_fs->getFileInformation("test",info)) {
File *file;
if(!_fs->openFile("test",file)) error(); // ファイルオープン
if(!file->write("Hello World",11)) error(); // ファイルに "Hello World" と書き込み
delete file;
}
else error();
delete info;
delete fs;
参考になりそうなサンプルコード:
- andysworkshop/stm32plus fatfs_writer - GitHub
シンプルな情報取得・書き込みのサンプル - andysworkshop/stm32plus fatfs_reader - GitHub
シンプルな読み込み・USARTへのリダイレクトのサンプル - andysworkshop/stm32plus fatfs_iterate - GitHub
ディレクトリ階層をたどりながらいろいろするサンプル