PSoCでSDカードを読み書きする
PSoCのSDカードのユーザモジュールを使ってSDカードを読み書きしてみました。
ユーザモジュールを使えば簡単にSDカードの読み書きができます。
しかもFATに対応しているので、書き込んだデータをパソコンで見ることもでき非常に便利です。

↑PSoCのSDカードのユーザモジュール
◆使ったもの
主に以下の部品で構成しました。
・PSoC CY8C29466−24PXI(CY8C27443は対応していません)
・SDカード(128MBの500円のもの)
・SDカードスロット(変換基盤もありますが、高いので私はこちらを使いました)
・3.3Vの三端子レギュレータ(PSoCには5Vを供給したため)
◆SDカードスロットについて(ピン配置)
一瞬、ピン配置がどうなっているのか(SD_WPとSD_CDがどっちか)とまどいますが、テスターを当てたり、カードを抜き差ししてみると以下のようになっていることがわかります。

↑SDカードスロットのピン配置
◆作成
SDカードユーザモジュールのデータシートのサンプルの通りにつなぎました。
SDカードスロットの取り付けが少し大変でしたが(力づくでとめました(笑))、それ以外は特に難しい点はありません。
◆動作確認
データシートに記載されていたサンプルプログラムを動かしました。
これはSDカードをスロットにさすとSDカードのルートに"hello.txt"というファイル名で
"Hello World"と書かれたテキストを作成するものです。
データシートのサンプルコードはわかりやすいコメントがついているのでおすすめです。

↑作成されたテキストファイル。作成日時が2004年9月だったりしてなんか変ですがしかたがない。
◆注意点 (と、私がはまった点)
●実験に使うSDカードには重要なデータは入れておかないようにしましょう。
もし失敗してSDカードが認識できなくなったらSDカードをフォーマットする必要があるからです。
このとき、Windowsのエクスプローラを使ってフォーマットするとSDカードが認識できなくなることがあります。
(私はこれで半日はまりました)
フォーマットするときは、
SD/SDHCメモリーカード フォーマットソフトウェア
を使わないといけません。ご注意ください。
●SD Cardモジュールは現在サブディレクトリのファイルには対応していないらしいです。
ルートディレクトリのファイルのみ扱えます。
以下、はまった点
●いつのまにかデバイスエディタの設定が変わっていた(動かなかったらもう一度確認を!)
●クロックは後で考えようと思い、適当にVC2にして放置していたら、
実はVC2を分周するのを忘れ、クロックが24MHzのままになっていた(動かない)
●両面スルーホールの基板の両面に配線していたら、一箇所上と下でつながってはいけないところがつながっていた。(SD_RES1がGNDとつながっていました)
◆作成したプロジェクトファイル
作成したプロジェクトファイルをこちらにおいておきます。
参考にしていただければ幸いです。
(※いろいろテストしたため、ソースはコメントアウトが多く、ぐちゃぐちゃになっていますがご了承ください)
応援お願いします(人気blogランキングへ)