バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
SDカードのSPIモード通信の読み書きについて。
ざっと読み込みと書き込みの手順解説。
今後の説明手順を列挙してみる。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
SDカードのSPIモード通信の読み書き

前回までで、SDカードの初期化関連は完了でいいんだよね?

そうだね。
というわけで、いよいよSDカード読み書きの話に突入する。
まずはSPIモードの話をする予定。

なんか複雑な処理とかあるの?

SPIモードの方はほぼ無いかなー。

(逆説的にSDモードの方はいろいろあるのか・・・。)
SDカードのSPIモード通信の書き込み手順

先に大雑把に手順を教えてもらえると助かるんだけど。

そうだね。
まずは書き込み手順。
Single Block Writeの場合と、Multi Blockの場合に分かれる。
Single Block Writeの場合
①CMD24(WRITE_BLOCK)による書き込み
Multi Block Writeの場合
①ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定
②CMD25(WRITE_MULTIPLE_BLOCK)による書き込み
③Start Block/data Response/STOP_TRAN tokenの発行

そういえば、Single Block転送、Multi Block転送ってやり方があったから、
ここで使い分けするわけか!

具体的なハンドシェイクはここでやったねー。
SDカードのSPIモード通信の読み込み手順

次は読み込み手順について。
こっちもSingle Block ReadとMulti Block Readに分かれる。
Single Block Readの場合
①CMD17(READ_SINGLE_BLOCK)による読み出し
Multi Block Readの場合
①CMD18(READ_MULTIPLE_BLOCK)による読み出し
②CMD12(STOP_TRANSMISSION)による停止

こっちも以前ちょっとやったねー。
説明手順

というわけで、説明手順としては以下になる予定。
- CMD24(WRITE_BLOCK)による書き込み
- ACMD23(SET_WR_BLK_ERASE_COUNT)による消去ブロック数指定
- CMD25(WRITE_MULTIPLE_BLOCK)による書き込み
- Start Block/data Response/STOP_TRAN tokenの発行
- CMD17(READ_SINGLE_BLOCK)による読み出し
- CMD18(READ_MULTIPLE_BLOCK)による読み出し
- CMD12(STOP_TRANSMISSION)による停止

まぁこの流れが分かり易そうだね。
まとめ

まとめだよ。
- SDカードのSPIモード通信の読み書きの手順について説明。
- 詳細は以下の流れで説明予定。
- Single Block Write処理。
- Multi Block Write処理。
- Single Block Read処理。
- Multi Block Read処理。
コメント