documentacion sd

9
Funcionamiento de la tarjeta SD. Versión 0.0.1 GEDA 2005 2005 1 Funcionamiento de la tarjeta SD. Introducción. Las tarjetas SD (SecureDigital) son tarjetas de memoria Flash (NAND) con controlador inteligente incorporado. Derivan de las tarjetas MMC (MultiMediaCard). Son las tarjetas de memoria más utilizadas en el mercado. Las tarjetas SD, mini-SD y micro-SD son eléctricamente compatibles entre sí, pero de distintos tamaños. Hay dos tipos de tarjetas: la SD (original) y SDHC (SD High Capacity). La SD original puede almacenar hasta 4GB de memoria; la SDHC, hasta 32GB. ESTE DOCUMENTO NO REEMPLAZA LA LECTURA DE LOS MANUALES Y ESPECIFICACIONES PROVISTAS. SOLAMENTE ES UNA GUÍA INTRODUCTORIA PARA SIMPLIFICAR EL PRIMER “APPROACH” AL USO DE LAS TARJETAS SD. Comunicación con el Host. El Host (microprocesador) se comunica con la tarjeta mediante una interfaz eléctrica de 9 pines: Las tarjetas soportan 2 modos de comunicación: Modo SD y Modo SPI. El Modo SD es el modo nativo, y permite mayor velocidad de transferencia que el modo SPI. Las ventajas de este último modo son la simplicidad y la disponibilidad del periférico de comunicaciones SPI en la mayoría de los microcontroladores. Vamos a ver sólo el modo SPI.

Upload: arquitecto-bogota

Post on 30-Jun-2015

276 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

1

Funcionamiento de la tarjeta SD. Introducción. Las tarjetas SD (SecureDigital) son tarjetas de memoria Flash (NAND) con controlador inteligente incorporado. Derivan de las tarjetas MMC (MultiMediaCard). Son las tarjetas de memoria más utilizadas en el mercado. Las tarjetas SD, mini-SD y micro-SD son eléctricamente compatibles entre sí, pero de distintos tamaños. Hay dos tipos de tarjetas: la SD (original) y SDHC (SD High Capacity). La SD original puede almacenar hasta 4GB de memoria; la SDHC, hasta 32GB. ESTE DOCUMENTO NO REEMPLAZA LA LECTURA DE LOS MANUALES Y ESPECIFICACIONES PROVISTAS. SOLAMENTE ES UNA GUÍA INTRODUCTORIA PARA SIMPLIFICAR EL PRIMER “APPROACH” AL USO DE LAS TARJETAS SD.

Comunicación con el Host. El Host (microprocesador) se comunica con la tarjeta mediante una interfaz eléctrica de 9 pines:

Las tarjetas soportan 2 modos de comunicación: Modo SD y Modo SPI. El Modo SD es el modo nativo, y permite mayor velocidad de transferencia que el modo SPI. Las ventajas de este último modo son la simplicidad y la disponibilidad del periférico de comunicaciones SPI en la mayoría de los microcontroladores. Vamos a ver sólo el modo SPI.

Page 2: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

2

Modo SPI.

Pines.

La interfaz consta de 4 pines:

Pin Nombre Funcionalidad 1 nCS Chip Select (activo bajo) 2 MOSI Entrada de datos 3 GND Power 4 VCC Power 5 SCK Clock 6 GND Power 7 MISO Salida de datos 8 y 9 RSV Reservados, conectar pullups

Las tarjetas se alimentan en genera con una tensión entre 2.7V y 3.6V. Las entradas y salidas son LVCMOS. Comunicación.

La transferencia (full duplex) se realiza de a bytes, alineados con la señal de reloj, MSb primero. La figura muestra el diagrama de tiempos, visto desde el host (microcontrolador).

Según esta figura, la tarjeta y el host muestrearán las líneas de datos en el flanco ascendente del clock.

Page 3: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

3

Velocidad.

En general, la tarjeta SD acepta velocidades de reloj desde 0Hz hasta 25MHz. Sin embargo, durante la inicialización, la línea CLK debe estar detenida o entre 100KHz y 400KHz. Protocolo.

Como ya se ha dicho, la transferencia de datos se hace de a bytes. La comunicación con la tarjeta se basa en comandos de 6 bytes, y respuestas asociadas. La estructura de un comando se muestra en la figura.

• BYTE 1 (MSB)

o Bit 7 (MSb). Siempre 0. o Bit 6. Siempre 1. o Bit 5 a bit 0 (LSb). Comando.

• BYTE 2 a 5

o Bit 31 (MSb) a bit 0 (LSb). Argumento, big

endian.

• BYTE 6 (LSB)

o Bit 7 (MSb) a bit 1. CRC del comando. o Bit 0 (LSb). Siempre 1.

Luego de la recepción de un comando, la tarjeta debe responder. Hay varios tipos de respuesta:

� R1 (respuesta a la mayoría de los comandos). � R1b (respuesta idéntica a R1 + algunos bytes de “busy”). � R2 (respuesta al comando SEND_STATUS). � R3 (respuesta a la lectura del registro OCR – se verá más

adelante). � Data response (respuesta a la lectura de un sector). � Write response (respuesta a la escritura de un sector).

Page 4: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

4

Respuesta R1. Respuesta a la mayoría de los comandos. Consta de 1 byte:

Un ‘1’ indica que ha habido un error. Respuesta de lectura de datos. Dependiendo del éxito de la operación de lectura, la tarjeta responderá de dos formas diferentes:

1. Lectura exitosa.

Bloque de n=4 a n=515 bytes de longitud:

• BYTE 1 (MSB). Siempre 0xFE.

• BYTES 2 a n-2. Datos.

• BYTE n-1 y n. CRC de los datos. 2. Error en el proceso.

Un solo byte, con valor dependiente del error:

Page 5: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

5

Respuesta de escritura de datos. Luego de enviar un bloque para ser escrito en la tarjeta, ésta devuelve una respuesta, indicando el estado de la operación de escritura:

• Status = ‘010’ � Data accepted • Status = ‘101’ � Data rejected due to CRC error • Status = ‘110’ � Data rejected due to a write

error Comandos importantes. El controlador de la tarjeta acepta varios comandos. Debajo se exponen algunos importantes. Se obvian comandos de lectura/escritura multibloque, etc. Command Index

Argument Response Abbreviation Description

CMD0 None R1 GO_IDLE_STATE Software reset.

CMD1 None R1 SEND_OP_COND Initiate initialization process.

ACMD41 None R1 APP_SEND_OP_COND For only SDC. Initiate initialization process.

CMD9 None R1 SEND_CSD Read CSD register.

CMD17 Address[31:0] R1 + DATA READ_SINGLE_BLOCK Read a block.

CMD24 Address[31:0] R1 WRITE_BLOCK Write a block.

CMD55 None R1 APP_CMD Leading command of ACMD<n> command.

CMD58 None R3 READ_OCR Read OCR.

Registros. Para que el Host pueda obtener información sobre la tarjeta (tensión de funcionamiento, capacidad de almacenamiento, velocidad máxima de transferencia, etc.), existen dos registros principales que se pueden leer:

Page 6: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

6

� OCR: Operating Conditions Register.

Ejemplo:

Page 7: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

7

� CSD: Card Specific Data.

Proporciona información sobre la tarjeta, como:

o Tamaño del bloque de escritura/lectura o Capacidad de la tarjeta o Velocidades de lectura/escritura o Consumo de corriente o etc.

Inicialización. Luego de aplicar tensión a la tarjeta, el controlador interno entra en modo SD (no modo SPI). Para pasar a modo SPI, hay que seguir los siguientes pasos para inicializarla1:

� Power Up: Luego de que la alimentación llegue a 2V, esperar 1ms y aplicar (como mínimo) 74 pulsos de SCK, con MOSI=nCS=1. Luego de esto, la tarjeta responderá a un set reducido de comandos (CMD0, ACMD41, etc).

� Soft reset: Enviar CMD0 con nCS=0. La tarjeta detecta que nCS=0 mientras se recibe CMD0, y entra en modo SPI. Como la tarjeta tiene el chequeo de CRC (byte6) activado por default, hay que enviar CMD0 con el CRC apropiado. Cuando se pasa al modo SPI, se desactiva automáticamente el chequeo de CRC. Si la tarjeta recibe correctamente el CMD0, responderá R1 con el bit Idle en 1 (R1 = “Idle” = 0x01). En estado Idle, la tarjeta acepta CMD0, CMD1, ACMD41 y CMD58.

� Inicialización: Si se desea saber el rango válido de alimentación de la tarjeta, enviar CMD58, y leer R3. Todas las tarjetas deben aceptar VDD entre 2.7V y 3.6V, así que muchas veces no es necesario este chequeo. Enviar ahora ACMD41 (CMD55+CMD1). Como las MMC no aceptan CMD55 (devolverá R1 = “Illegal Command” = 0x04), se podrá detectar el tipo de tarjeta conectada (MMC/SD). Para ver las diferencias MMC/SD, consultar la documentación provista. Como respuesta a ACMD41, la SD devuelve R1=“Idle” hasta que termine la inicialización (R1 = 0x00). El host deberá pollear a la tarjeta con ACMD41 hasta que R1 = 0x00. Cuando finalice la inicialización, la velocidad de clock de la interfaz podrá ser aumentada al máximo (frecuentemente 25MHz; consultar los bits apropiados de CSD para más detalles).

Si la tarjeta es MMC, no reconocerá el comando CMD55. La inicialización deberá continuar con CMD1 en lugar de ACMD41. Todo lo demás es (casi) idéntico. La velocidad de transferencia máxima es, en gral. 20MHz.

Si la tarjeta es SDHC, hay que continuar con la secuencia de inicialización. No vamos a ver este caso.

1 Se presupone que el host está configurado con la polaridad, fase y velocidad correcta de CLK (100KHz

a 400KHz para la inicialización). En HC12, CPHA=CPOL=0.

Page 8: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

8

� Ya está!. El host debería enviar CMD9 para obtener información específica de la tarjeta, leyendo CSD: velocidad máxima de transferencia, capacidad, etc.

Page 9: Documentacion sd

Funcionamiento de la tarjeta SD. Versión 0.0.1

GEDA 2005 2005

9

Lectura/escritura de 1 bloque: Lectura

Escritura