Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

SDカード制御について

こんにちは、NAKAといいます。

もしSDカードの制御にお詳しい方、アドバイスねがえませんでしょうか?
RL78/I1EのCSIをSDカードコネクタに接続してデータのログを行っています

2GBの昔のMicroSDカードの扱いは何とかなりました。⇒思ったようになりました。

4GB以上のSDHC規格のSDカードの場合、CMD0 と CMD1では初期化できないので
CMD8、CMD58、CMD55、ACMD41、CMD9などを使い 初期化はうまくいきました。

SDHC規格のブロック書込み(CMD24)や読込み(CMD17)のADRESSはセクター単位らしいので


初期化の後

【1】
CMD16(512Byte)
※1ブロックを512Byteに設定

次に

CMD24(ADRESS)
ADRESS = ADRESS + 1;   ※1セクター分ADRESSを進めた
DATA_X(X=X+1)
を繰り返し、ブロック書き込み

CMD17(ADRESS)
ADRESS = ADRESS + 1;
で1セクタごと読み出すと


①ブロック  0byte~ DATA_1 ~512byte

②ブロック  0byte~ DATA_1 ~512byte

③ブロック  0byte~ DATA_3 ~512byte

④ブロック  0byte~ DATA_3 ~512byte

※のように

※DATA_2が書かれない
※DATA_1やDATA_3が2ブロックづつ書かれる


【2】
CMD24(ADRESS)
ADRESS = ADRESS + 2;   ※2セクター分ADRESSを進めた
DATA_X(X=X+1)
を繰り返し

CMD17(ADRESS)
ADRESS = ADRESS + 1;
で1セクタごと読み出すと


①ブロック  0byte~ DATA_1 ~512byte

②ブロック  0byte~ DATA_1 ~512byte

③ブロック  0byte~ DATA_2 ~512byte

④ブロック  0byte~ DATA_2 ~512byte

⑤ブロック  0byte~ DATA_3 ~512byte

⑥ブロック  0byte~ DATA_3 ~512byte

※DATA_1⇒DATA_2⇒DATA_3が2ブロックづつ書かれる


となります。

【質問】
ブロックもセクタも同じ512Byteの理解ですが、間違っていますでしょうか?

書込みを2セクタ送り、読込みを1セクタ毎に余分に空読込み(【2】の②④⑥を無視)することで、それらしく動きますがスッキリしません。

どう表現して良いのかわからず、非常にわかりにくい表現になっていますが、よろしくお願いします。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page