いんくらyochさんの日記

興味あることの忘備録

SDカードアクセス成功

ようやくChaNさんのFatfsでSDカードにアクセスできるようになりました。サンプルそのままのはずが上手く動かなくて困ってましたが、原因もわかって先へ進めそうです。
もともとはmega168で動かすつもりでしたが、ビルドした時点で容量が2倍とオーバーしていたのでmega128に変更しました。回路はカードデテクトとライトプロテクトとパワーを無視した形で作りました。
動作させるとdiコマンドでokとなるもののflコマンドでDISK_ERRとなりました。ロジアナで調べたりしているうちにflのあとdiが失敗するようになりカードがコマンドを受け付けなくなることが分かりました。mmcのソースで初期化後の動作を追って行く中でパワーオン後にSPIクロックを高速化していることに気付きパワーオン後も高速化しないようにしたところで、アクセスできるようになりました。
クロックは12MHzを外部から注入していて、SPIのレジスタ値から最初は400kHzで初期化、初期化終了後に6MHzになるように設定されています。なんでかな〜と考えていたら、SDカード基板のHC244があることを思い出しデータシートを見た所、1MHzの入力が限界のようでした。もともと5Vと3.3Vの境にするつもりがHCでは出来ないことが分かってそのままにし、回路全体を3.3V駆動としていたので忘れていました。スルーするようにすれば問題なくアクセスできると思います。あとは、RTCを秋月のRTC-8564NBを使うのでこちらのサンプルを流用してTWIアクセスも使えるようにしていきます。

■ログ
FatFs module test monitor for AVR
LFN Disabled, Code page: 1

>di 0
rc=0

>fi 0
rc=0 FR_OK

>fl /

        • A 2012/01/07 20:00 409604064 AS5INS~1.EXE
        • A 2012/01/15 13:43 7849601 LAC_MA~1.ZIP
        • A 2012/01/15 13:54 144128263 LAC_S3~1.ZIP

D---- 2012/02/05 11:43 0 DATASH~1
3 File(s), 561581928 bytes total
1 Dir(s), 1284384K bytes free

>fs /
FAT type = 2
Bytes/Cluster = 32768
Number of FATs = 2
Root DIR entries = 512
Sectors/FAT = 229
Number of clusters = 58518
FAT start (lba) = 150
DIR start (lba,clustor) = 608
Data start (lba) = 640

...23 files, 602007655 bytes.
1 folders.
1872576 KB total disk space.
1284384 KB available.

>ds 0
Drive size: 3745792 sectors
Erase block: 8192 sectors
Card type: 4
CSD:
00000000 00 2F 00 32 5B 5A 83 92 6D B7 FF BF 16 80 00 F5 ./.2[Z..m.......
CID:
00000000 13 4B 47 53 44 30 32 47 00 C3 01 6B 7B 00 BC 3F .KGSD02G...k{..?
OCR:
00000000 80 FF 80 00 ....
SD Status:
00000000 00 00 00 00 00 00 00 28 01 01 90 00 08 05 00 00 .......(........
00000010 00 00 00 00 00 00 00 00 00 53 4D 49 00 00 00 00 .........SMI....
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
>