2011-11-10 11 views
5

Ho una scheda microSD Kingston SDHC da 32   GB che deve comunicare a MSP430F2618 tramite SPI. Non ero in grado di inizializzarlo utilizzando CMD55 + ACMD41 (con bit30 impostato su 1), come descritto nella documentazione delle specifiche SD. Ciò che funziona è questa sequenza:SDHC microSD e inizializzazione SPI

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

ho provato anche con una scheda da 8 GB SanDisk   e lavora anche per questo. Quindi, in realtà, sto usando CMD1 qui, non ACMD41, con bit HCS impostato su 1. Tuttavia, non è stabile, a volte funziona, a volte no. Questo potrebbe riguardare l'hardware.

Non è strano che le schede rispondano a CMD1 con l'argomento 0x40000000?

risposta

6

Non utilizzare CMD1 per inizializzare le schede SDHC; come detto nella specifica scheda SD:

In nessuno dei casi CMD1 non è raccomandato perché può essere difficile per l'host di distinguere tra MultiMediaCard e scheda di memoria SD.

Alcuni controller (schede con capacità più nuovo e più alto per lo più) saranno semplicemente stare in IDLE se si emette CMD1 a loro. È necessario prima emettere CMD8 0x1AA dopo il ripristino (CMD0), quindi utilizzare CMD55 + ACMD41.

tl; dr per inizializzare la scheda è necessario:

  1. CMD0 arg: 0x0, CRC: 0x95 (risposta: 0x01)

  2. CMD8 arg: 0x000001AA, CRC: 0x87 (risposta: 0x01)

  3. CMD55 arg: 0x0, CRC: qualsiasi (CMD55 essendo il prefisso ad ogni ACMD)

  4. ACMD41, arg: 0x40000000, CRC: qualsiasi

  5. se la risposta: 0x0, tu sei OK; se si tratta di 0x1, goto 3.

Si noti che la maggior parte delle carte richiedono passi 3/4 per essere ripetuto, di solito una volta, cioè la sequenza reale è CMD0/CMD8/CMD55/ACMD41/CMD55/ACMD41 - a assicurati, provalo n volte (seleziona n entro il tuo motivo), e presume fallire se non lo fa.

Si noti inoltre che si dovrebbe affermare la SS (aka CS) basso a almeno prima e dopo CMD0 - e, in realtà, probabilmente sempre per l'invio di qualsiasi comando sulla scheda SD.

Problemi correlati