• 検索結果がありません。

カード・スタックは次のタスクを実行します。

接続されているカードを発見します。

接続したカード内の相対Card Address Register (RCA)を設定します。

カード固有の情報を読み出します。

カード固有の情報は、ローカルに格納されます。

コントローラに接続されているカードは、MMC、CE-ATA、SDまたはSDIO(IO ONLY、

MEM ONLYとCOMBOを含む)カードであることができます。接続されているカード

の種類を識別するには、次のディスカバリー・シーケンスが必要です。

1. ctypeレジスタ内のカード幅1または4ビット(card_width2)およびカード幅8 ビット(card_width1)フィールドを0にリセットします。

2. SD、MMC、SDIOまたはSDIO-COMBOカードのタイプを識別します。

a. カードへの引数0でSD/SDIO IO_SEND_OP_COND(CMD5)コマンドを送信しま す。

b. コントローラ上のresp0を読み出します。 IO_SEND_OP_CONDコマンドに対す る応答はカードがサポートしている電圧を提供します。

c. 引数に所望の電圧ウィンドウで、IO_SEND_OP_CONDコマンドを送信します。

このコマンドは、電圧ウィンドウを設定し、カードが初期化状態を終了する ことができます。

d. resp0のビット27をチェックします。

ビット27が0の場合、SDIOカードはONLY IOです。この場合、ステップ5に 進みます。

ビット27が1の場合、カード・タイプはSDIO COMBOです。次のステップに 進みます。

3. SDIOカード・タイプがCOMBOであるか、または以前IO_SEND_OP_CONDコマン ドから受信した応答がない場合にのみ、このステップに進みます。それ以外の場 合、ステップ5に進みます。

a. 次の引数を使用してSD/SDIO SEND_IF_COND(CMD8)コマンドを送信します。

ビット[31:12] = 0x0(予約ビット)

ビット[11:8] = 0x1(電源電圧値)

ビット[7:0] = 0xAA(SDIO Simplified Specification Version 2.00または以降の バージョンに準拠したSDメモリ・カードで優先のチェック・パターン)

f 11–87ページの「参考資料」上で説明したように、SDIO Simplified Specification Version 2.00を参照してください。

b. 応答が以前のSEND_IF_CONDコマンドに受信された場合、カードはD

Specifications, Part 1, Physical Layer Simplified Specification Version 2.00に準拠した SD High-Capacityをサポートしています。

応答が受信されない場合、ステップeに進みます。

c. 次の引数を使用してSD_SEND_OP_COND(ACMD41)コマンドを送信します。

ビット[31] = 0x0 (予約ビット)

ビット[30] = 0x1 (高容量ステータス)

ビット[29:25] = 0x0(予約ビット)

ビット[24] = 0x1(S18R - 1.8Vのための電圧スイッチングをサポートする)

ビット[23:0] = サポートされている電圧範囲

d. 応答が以前のSD_SEND_OP_CONDコマンドに受信された場合、カードの種類 はSDHCです。そうでない場合、カードは、MMCやCE-ATAとなります。それ 以外の場合、次のステップをスキップして、ステップ5に進みます。

e. 応答は初期のSEND_IF_CONDコマンドに受信されない場合、カードはHigh

ビット[31] = 0x0 (予約ビット)

ビット[30] = 0x0(高容量ステータス)

ビット[29:24] = 0x0(予約ビット)

ビット[23:0] = サポートされている電圧範囲

f. 応答が以前のSD_SEND_OP_CONDコマンドに受信された場合、カードは、SD タイプとなります。そうでない場合、カードは、MMCやCE-ATAとなります。

1 High Capacity SDメモリ・カードを初期化するために、前に最初の

SD_SEND_OP_CONDコマンドにSEND_IF_CONDコマンドを発行する必要が あります。次の条件のいずれかに該当するときは、カードの

SD_SEND_OP_CONDコマンドの応答としてビジーを返します。

カードは、その内部の初期化処理を実行します。

SEND_IF_CONDコマンドはSD_SEND_OP_CONDコマンドの前に発行されてい ません。

ACMD41コマンドが発行されます。コマンドの引数では、Host Capacity

Support(HCS)のビットは大容量SDカードの場合、0に設定されます。

4. カードがCE-ATA1.1、CE-ATA1.0、またはMMCデバイスのいずれかを判別するに は、次のシーケンスを使用します。

a. カードはATAモードを選択しようとするCE-ATA v1.1のカード・デバイスであ るかどうかを確認します。外部カード中のEXT_CSDレジスタ・ブロックのバ イト504(S_CMD_SET)を尋ねて、SD/SDIO SEND_IF_CONDコマンドを送信し ます。

ビット4が1に設定されている場合、カード・デバイスは、ATAモードをサ ポートしています。SWITCH_FUNC(CMD6)コマンドを送信して、EXT_CSD レジスタ・スライス191(CMD_SET)のATAビット(ビット4)を 1に設 定します。このコマンドは、ATAモードを選択して、ATAコマンド・セッ トをアクティブにします。

EXT_CSDレジスタのバイト191から読み戻すことによって、現在選択され

ているモードを確認することができます。

ステップ5に進みます。

カード・デバイスがATAモードをサポートしない場合、MMCカードまたは

CE-ATA v1.0のカードである場合があります。ステップbに進みます。

b. カードはCE-ATA1.0カード・デバイスまたはRW_REGコマンドを送信するこ

とにより、MMCカード・デバイスであることを確認します。応答が受信さ れ、応答データにCE-ATAの署名が含まれている場合、カードはCE-ATA1.0 カード・デバイスです。そうでない場合、カードはMMCカード・デバイスで す。

5. この時点で、ソフトウェアは、SD/SDHC、SDIOまたはSDIO-COMBOカードのタイ プを決定している場合があります。この場合、発見されているタイプに応じて カード・スタックを列挙する必要があります。

6. 識別クロック・レートの周波数にカード・クロック・ソースの周波数を400 kHz に設定します。次のディスカバリー・コマンド・シーケンスのいずれかを使用し ます。

SDカードやSDIOのメモリ・セクションは、次のSD/SDIOコマンドシーケンスを 送信します。

GO_IDLE_STATE

SEND_IF_COND

SD_SEND_OP_COND (ACMD41)

ALL_SEND_CID (CMD2)

SEND_RELATIVE_ADDR (CMD3)

SDIOカードは、次のコマンド・シーケンスを送信します。

IO_SEND_OP_COND.

関数カウントが有効の場合、SEND_RELATIVE_ADDRコマンドを送信します。

MMCは、次のコマンド・シーケンスを送信します。

GO_IDLE_STATE

SEND_OP_COND (CMD1)

ALL_SEND_CID

SEND_RELATIVE_ADDR

7. sdmmc_clkクロックを分周するclkdivレジスタに値を書き込むことにより、発 見された後、カード・クロック周波数を変更することができます。

次のリストでは、さまざまな種類のカードの代表的なクロック周波数を示してい ます。

SDメモリ・カードの25 MHz

MMCカード・デバイスの12.5 MHz

フル・スピードSDIO, 25 MHz

ロー・スピードSDIO, 400 kHz

関連したドキュメント