17

組み込み設計のmicroSDカードを使用しています。このカードは、SPI インターフェイスを使用してマイクロコントローラーに接続されます。以前に使用したすべてのカードで問題なく動作しましたが、新しいカードが初期化されなくなりました。カードはトランセンドの2GB microSDカード(TS2GUSD)です。

SPI モードに切り替えるための初期クロック トレインを送信した後、次の手順を実行します。

  1. CMD0 (引数 0、CRC 0x95) -> 応答 0x01 -> OK

  2. CMD8 (引数 0x000001AA、CRC 0x87) -> 応答 0x01 0x000001AA -> SDC V2+ カードであることを意味し、電圧範囲 2.7 V - 3.6 V がサポートされています -> OK

次に ACMD41 コマンドを送信する必要がありますが、CMD41 の前になければならない CMD55 (引数 0、CRC 0) を送信すると、応答 0x05 -> Illegal Command が返されます。CMD1 (MMC カード用) も送信しようとしましたが、同様の不正なコマンド応答が返されます。このコードは、私の Sandisk 2 GB microSD カードで問題なく動作します。

この問題を解決するにはどうすればよいですか?

4

6 に答える 6

17

私は問題を見つけたようです。CMD55 の正しい CRC を計算し、ダミーの CRC の代わりにそれを送信すると、コマンドが受け入れられます (結果 0x01)。セクション 7.2.2の物理層の仕様を見ると、明示的に次のように述べられています。

デフォルトでは、SPI インターフェイスは CRC OFF モードで初期化されます。(コマンド CMD0 および CMD8 を除く)。

これは、この一連のトランセンド カードには当てはまらないようで、仕様に違反しています。また、CRC エラーの場合、応答は 0x05 ではなく 0x09 になります。CMD59 で CRC チェックを明示的に無効にしようとしましたが、効果がないようです。

=> (すべて?) コマンドの正しい CRC を計算すると、カードが機能します。

これについてトランセンドのサポートに連絡しています。何か役に立つことを学べば、ここで教えてくれます。

以前は他の 2 GB Transcend カードを使用していましたが、それらは台湾製でしたが、新しいものは韓国製でした (Samsung カード (MMAGR02GUDCA) のようです)。

于 2009-06-07T10:44:24.960 に答える
2

私はほとんど同じ問題を抱えていました。ACMD41 を送信するときに、CMD55 に続いて CMD41 を送信しました。CMD55 の応答は 0x01 で、アイドル状態で初期化プロセスを実行していることを示しています (これは正常だと思います)。CMD41 は 0x05 で応答し、不正なコマンドを示します。私の特定のカードは、SPI モードであってもデフォルトで CRC チェックを行い、CRC エラーを不正なコマンドとして誤って報告することが判明しました (つまり、SD 仕様に準拠していません)。適切な CRC を計算すると、問題なく動作します。これが私が使用したCRC7計算コードです。私にとってはうまくいきました:

https://github.com/hazelnusse/crc7

CRC チェックを無効にするように注意した場合を除き、無効になっていないと仮定し、各コマンド フレームの適切な CRC を計算することを確認するのがおそらく最善であると思います。SD仕様では、CMD8を除いてSPIモードではデフォルトで無効にする必要があると記載されていますが、SPIモードではデフォルトで無効にするカードと有効にするカードがあります。

于 2012-05-11T09:28:47.407 に答える
1

それは正常です。おそらく、準備が整うまでに通常よりも時間がかかる消去電圧を作成するために使用される内部チャージポンプです...初期化が完了するまで、CMD55 + ACMD41コンボを主張する必要があります。

CMD58 は、正しい電圧レベルを供給しているかどうかを確認するのにも役立ちます (ソケットに接触の問題がある場合があります)。

于 2009-06-05T13:15:58.753 に答える
1

chip select(0) だけで CMD0 を送信しても、カードは SPI モードで初期化されません。これは SPI モードのみを設定します。ACMD41 が受け入れを返すまで、カードは初期化されません。その場合、CRC はデフォルトでオフになっています。

于 2014-08-11T06:22:55.843 に答える