[中級の電子工作テスト]
CANONデジ一で遊ぶ
PIC24F RTCCでカレンダー
PICで赤外線通信
PICでシリアル通信
FT232RL変換モジュール
K型熱電対 AD595CQ
K型熱電対のテスト MAX6675
連枝でラダープログラム
連枝でステッピングモータ
各種デバイスのテスト
[シーケンス回路テスト]
リレーシーケンス
[車載用電子工作テスト]
電源の取り方
[PCBCAD]
EAGLE CAD
[掲示板]
電子工作のテスト工場BBS
[リンク]
工作お役立ちリンク集
[電子工作のテスト工場]
表紙[TOP]へ戻る
[電子工作系]
Sivanyan_Radioのブログ
(↑↑管理人のブログです)
GAMEってたのすぃー
電子回路実験教材の部屋 RLC
電子マスカット 必見[MP3]!
kunioのホームページ AVR+MP3
なひたふ電子
ワタヤンの日記
BLUE's electronics room
isi's 趣味の電子工作
獣医さんの電子工作とパソコン研究室
電子用語集Web
YS電子工作ラボ
(↑↑管理人のブログです)
[プログラム系]
信彦の家
[SNS]
電子工作の広場SNS
[写真]
シャッターを押した瞬間
「SDカードからデータを読み出したい」という願望は電子工作をやっているといつしか出てくるものです。
しかしどうすればいいのか、何が必要なのかという事はなかなか知る方法がありません。
また、SDカードから情報を得るためには2つの難関を突破しないといけないのです。 (1)マイコンとSDカードの通信 (2)ファイルシステム マイコンとSDカードを通信で繋ぐ場合、工作レベルで用いられてる方法に「SPI通信」があります。 SPIはマイコンに搭載された機能により、簡単に通信が確立されるのです。 更に高速にアクセス出来る「MMCモード」というものが存在しますが、ここでは紹介しません。 まずは簡単にマイコンからSDカードのデータにアクセスしましょう。 (2)のファイルシステムが難解中の難解でした。マイコンとSDカードが通信出来たとしても、 カードの中身を読み出すことが出来ないからです。パソコン等で主に用いられている「FATファイルシステム」を 理解し、順をおってコマンドを送りデータをもらう必要があるのです。 簡単にディスクの中身が確認を出来るソフトを一つ紹介しておきます。 下記のソフトでSDカードの中身を確認しながらテストしていくのが近道です。 ディスクダンプエディッタ http://www.vector.co.jp/soft/win95/util/se091045.html ここではこれから「FATファイルシステム」の構造について書いていきます。 |
FATはファイルのデータを記憶するための方式の事です。
セクタと呼ばれる採集記憶単位があり、通常512バイトなのでデータを読み込むのに512バイト分の
RAMがないと処理が追いつかない(出来ない)。つまりはどんなマイコンでもいいわけではなく、
「512バイト+プログラムが使用するRAM容量」を確保できるマイコンが必要になってくる。 今回はFAT12を使うので必然的に扱える最大容量が2GBまでとなる。 この説明は後に行うことにして、プログラムでアクセスする場合の流れだけを書いておきます。 セクタの読み出しにはbuffer[0]-buffer[511]を使う事にする。 (1)SDCの先頭を512バイト分読み出す。 (2)buffer[454]-buffer[457]にセクタのオフセット値が書かれている。 (3)セクタのオフセット値から「セクタ0」のアドレスを計算する。 (4)「セクタ0」を読み込むと情報がいっぱい入手できる。 (5)読み取ったデータからディレクトリの開始位置を計算する。 (6)ディレクトリに移動しさらにセクタ情報を読み込む。 (7)ファイルの先頭セクタを計算で求める。 (8)ファイルの容量を得る。 (9)ファイルへ移動する。 ・ ・ ・ 間にいっぱいすること、知らなければいけないことがいっぱいあるけど、それは次に書いていく事とする。 ここでは簡単にはファイルにアクセスできそうにないなぁと思ってほしい。 また、クラスタというものが存在する。クラスタはセクタを管理する為にあります。セクタが512バイトずつだと すると512バイト以上のファイルの場合どうなるのでしょうか?連続したセクタにデータが記憶されればいいですが、 そうでない場合も多々あります。断片化という感じになるとファイルのデータはあちこちに存在します。 そのあちこちにあるデータがどこにあるのかを示すのがクラスタです。クラスタを順番に読み出し、ファイルのデータ 位置を確認しながら順にセクタへアクセスしていきます。そうですね。先ほどの説明(1)-(9)には出てきてないので この作業も別に必要だという事です。 詳しくは下記を参照して下さい。 WikipediaのFATの説明 |