2011-11-10 48 views
5

SPIMSP430F2618と通信する必要がある32   GBのKingston SDHC microSDカードがあります。 SD仕様書に記載されているように、CMD55 + ACMD41(bit30を1に設定)を使用して初期化できませんでした。どのような作品は、この順序である:SDHC microSDカードとSPIの初期設定

CMD0, arg: 0   , CRC: 0x95 (response:0x01) 
    CMD8, arg: 0x1AA  , CRC: 0x87 (response:0x01) 
    CMD1, arg: 0x40000000, CRC: 0xFF (response:0x00) 

私は8  ギガバイトサンディスクカードでも、それを試してみましたが、あまりにもそのために働きます。実際には、ACMD41ではなく、CMD1を1に設定してCMD1を使用しています。しかし、安定していない場合もあり、時にはうまく動作しないこともあります。これはハードウェアに関するものかもしれません。

カードが引数0x40000000でCMD1に応答しているのは奇妙なことではありませんか?

答えて

6

SDHCカードの初期化にはCMD1を使用しないでください。

いずれの場合でも、ホストがMultiMediaCardとSDメモリカードを区別することは困難な場合があるため、CMD1はお勧めしません。

CMD1を発行すると、コントローラ(新しいカードと大容量のカードが大部分)は単にIDLEにとどまります。 リセット(CMD0)後に最初にCMD8 0x1AAを発行してから、CMD55 + ACMD41を使用してください。

TL; DRは、あなたがすべきカードを初期化する:

  1. CMD0引数:0x0、CRC:0x95(レスポンス:0x01

  2. CMD8引数:0x000001AA、CRC:0x87を(応答:0x01

  3. CMD55引数:0x0、CRC:任意の(CMD55が接頭辞であることへのすべてのACMD

  4. ACMD41、引数:0x40000000、CRC:任意の

  5. 応答の場合:0x0、あなたはOKです。に - ほとんどのカードは、実際の配列がCMD0/CMD8/CMD55/ACMD41/CMD55/ACMD41である。すなわち、通常は一回、繰り返すように3/4ステップ必要であること、それは0x1だ場合、後藤3.

注意n回試してください(あなたの理由でnを選択してください)、そうでない場合は失敗します。おそらくいつもと、現実には、SDカードに任意のコマンドを送信する - また

、あなたはSS(別名CS)をアサートする必要があることに注意してください低少なくともCMD0前と後。

関連する問題