SDカードの動作原理を簡単に説明してください
機能
SDカードはメモリカードであり、その機能はストレージです。
分類
SDカードは容量によって分類され、次の3つのカテゴリに分類できます。SDカード、SDHCカード、SDXCカード。
容量 |
命名 |
略称 |
0〜2G |
標準容量のSDメモリーカード |
SDSCまたはSD |
2G〜32G |
大容量SDメモリーカード |
SDHC |
32G〜2T |
大容量SDメモリーカード |
SDXC |
ハードウェア構造
SDカードの概要とインターフェース図を以下に示します。
SDカードを動作させるインターフェイスはSPIまたはSDIOポートであり、ピン配置は次のとおりです。
ホストとSDカードのハードウェア接続図:
動作原理
SDカードを動作させるには、主に2つのステップが必要です。
最初のステップは、SDカードの識別プロセスです。
2番目のステップは、SDカードの読み取りと書き込み、つまり、ホストコントローラーとSDカード間のデータ転送プロセスです。
SDカードを正しく動作させるには、SDカードに安定した電圧を供給する方法と、ユーザーが指定した方法でSDカードを動作させる方法があります。これらの2つのタスクの実現は、SDカードに制御コマンドを送信するホストコントローラーによって実現されます。
ホスト(SDIOコントローラー)は、アプリケーションレイヤーコマンドACMDや共通コマンドCMDなど、SDカードを駆動するために多くのコマンドを使用する必要があります。ホスト(SDIOコントローラー)は、SDカードにコマンドを送信し、SDカードが応答します。応答と呼ばれる応答コマンドは、R1、R1b、R2、R3、R6、R7の6つのカテゴリに分類されます。
ホスト(SDIOコントローラー)がSDカードにコマンドを送信すると、SDカードが応答します。この応答には、ホスト(SDIOコントローラー)が必要とするデータ(SD情報、容量、ストレージデータなど)が含まれます。
前述のように、SDカードは主に識別とデータ伝送に使用されますが、その識別プロセスは少し複雑ですが、コードを書くときは、プロトコルによって提供される初期化フローチャートを参照できます。データ送信には、読み取りと書き込み、シングルバイトとマルチバイトの読み取りと書き込みが含まれます。次の2つのセクションでは、識別の初期化フローチャートとデータの読み取りおよび書き込みのタイミング図について説明します。
フローチャート
SDカード初期化フローチャート:
データの読み取りと書き込みのタイミング図
SDIOとSDカードの通信は、通常、データブロックの形式で送信されます。SDIO(複数)データブロックの読み取り操作を次の図に示します。
以下に示すように、SDIO(複数)データブロック書き込み操作:
コマンドフォーマット
SDIOのすべてのコマンドと応答は、SDIO_CMDピンで送信されます。コマンド長は48ビットに固定されています。SDIOコマンドのフォーマットを次の表に示します。
その中に:設定する必要のあるコマンドインデックスとパラメーターに加えて、その他はSDIOハードウェアによって自動的に制御されます。コマンドインデックス(CMD0、CMD1など)はSDIO_CMDレジスターによって設定され、コマンドパラメーターはSDIO_ARGレジスターによって設定されます。
STM32 SDIOショートレスポンス(48ビット)のフォーマットを次の表に示します。
STM32 SDIOロングレスポンス(136ビット)のフォーマットを次の表に示します。
登録する
SDIOコントローラーのレジスターは、主にSDIOコントローラーとコマンドのインデックスとパラメーターを設定します。
SDカードには、CID、RCA、CSD、SCR.OCRの5つのレジスタがあります。SDカード情報は、SDカードレジスタから取得されます。
まとめ
SDカードの通常の作業は、プロセスが終了するまで、SDカード初期化フローチャートに従ってコマンドを送信し、応答を受信することです。データ送信も読み取りと書き込みのタイミング図に基づいており、送信されるデータはコマンドに入れられて送信されます。
SDIOコントローラーがSDカードを駆動する場合、周波数は400Kです。データを送信する場合、SDIOCK周波数は6Mです。SDカードを初期化するとき、周波数は400Kを超えることはできません。