(2015.11.28 作成)
SDカードは3.3Vで動作していますのでArduino UNO等5V系のマイコンでは電圧変換を行う必要があります。電圧変換の方法としてはここで紹介しているようなFETを用いる方法や、一つ上のページで紹介しているようなダイオードを使用する方法などがあります。
結線方法については通常のSPIデバイスとほぼ同じなのですが、注意点としてはSPIのMISO端子をプルアップする必要があることぐらいになります。
参考としての回路例を下に示します。
ChaN氏のFatFsは大きくf_readなどユーザーアプリケーションが使用する上位レイヤと実際のデバイス操作を行う下位レイヤに分かれており、この下位レイヤをマイコンごとに取り替えることで様々なマイコンに対応できるようになっています。
このサイトで紹介しているコードはこの下位レイヤを抽象化した共通ライブラリに置き換えることでユーザーは下位レイヤをまったく意識せずに使えるようになることを期待しています。
使用法ですが、このサイトでは下位レイヤ相当部分のみをダウンロードしていただけます、上位レイヤ部分は本家からのダウンロードをお願いします。
両サイトから必要ファイルをダウンロードし、Arduinoの場合は以下のように配置してください。STM32についてはIDEが認識できる状態にしていただけばOKです。
なおFatFsの対応バージョンですが、本記事執筆時点の最新(R0.13c)での動作を確認しています。
DKS_SD.h/cppの使用法ですが、これらはあくまでFatFsが要求している下位レイヤを実装しているだけです。使用に際してはほとんどやることがありません。リファレンスをこちらに載せていますが、使用する関数は2つだけです。
disk_timerprocは単に1ms毎にコールするだけ、SetEnv関数は利用するSPIクラスなどへのポインタを渡すだけです。
実際のSDカードの操作(ファイル作成など)はFatFsの関数を利用してください。