[SDIO] Resumen de análisis del protocolo SD2.0 (dos) - Identificación de la tarjeta SD y proceso de transmisión de datos

Artículos relacionados

"[SDIO] Índice de artículos relacionados con SDIO, tarjeta SD, sistema de archivos FatFs"

1. Modo de funcionamiento de la tarjeta SD

Sistema de tarjeta SD(Incluyendo el host y la tarjeta SD) define dos modos de operación: el modo de identificación de la tarjeta y el modo de transferencia de datos . Después de reiniciar el sistema, el host está en modo de reconocimiento de tarjeta, buscando dispositivos SDIO disponibles en el bus; al mismo tiempo, la tarjeta SD también está en modo de reconocimiento de tarjeta hasta que sea reconocida por el host, es decir, cuando el La tarjeta SD recibe el comando SEND_RCA (CMD3) , la tarjeta SD ingresará al modo de transmisión de datos y el host también ingresará al modo de transmisión de datos después de que se identifiquen todas las tarjetas en el bus . En cada modo de funcionamiento, la tarjeta SD tiene varios estados. Como se muestra en la figura siguiente, el estado de la tarjeta se puede cambiar a través del control de comando.

Modo de operación Estado de la tarjeta SD
Modo inactivo (inactivo) Estado inactivo
Modo de identificación de tarjeta Estado inactivo
Estado listo
Estado de identificación
Modo de transferencia de datos Estado de reserva
Estado de transferencia
Estado de envío de datos
Estado de recepción de datos
Estado de programación
Estado de desconexión

2. Modo de reconocimiento de tarjeta SD

Cuando está en el modo de reconocimiento de tarjetas, el anfitrión restablece todas las tarjetas en el modo de reconocimiento de tarjetas, verifica el rango de voltaje operativo, reconoce las tarjetas y pregunta qué han emitido Relative Card Address(RCA). Esta operación se realiza por separado en la línea de comando CMD de cada tarjeta. En el modo de reconocimiento de tarjeta, toda la comunicación de datos usa solo la línea de comando CMD.

En la tarjeta SDProceso de reconocimientoEn, la frecuencia de reloj SD funciona en el rango de 100 KHz ~ 400 KHz .

2.1 Restablecimiento de la tarjeta SD

El comando GO_IDLE_STATE (CMD0) es un comando de reinicio del software, no importa en qué estado se encuentre la tarjeta actual, establecerá cada tarjeta en el estado inactivo . Las tarjetas en estado Inactivo no se ven afectadas por este comando. Una vez que se enciende el host, todas las tarjetas están en estado inactivo , incluidas las tarjetas que estaban previamente en estado inactivo .

CMD0Después de encender o , las líneas de datos CMD de todas las tarjetas están en modo de entrada, esperando recibir el siguiente comando. Estas tarjetas se inicializan a una dirección relativa predeterminada de la tarjeta SD ( RCA=0x0000), y configuran el registro de nivel de controlador de la tarjeta SD ( DSR) de manera predeterminada a la velocidad más baja y la capacidad de manejo más alta.

2.2 Confirmación de las condiciones de funcionamiento de la tarjeta SD

Cuando el host y la tarjeta SD comienzan a comunicarse, es posible que el host no conozca el voltaje que admite la tarjeta SD, y es posible que la tarjeta SD no sepa si admite el voltaje que se proporciona actualmente. El host envía un comando de reinicio ( CMD0) y asume que su voltaje puede ser compatible con la tarjeta SD. Para verificar el voltaje, los siguientes comandos nuevos ( ) se definen en el documento "Especificación de capa física versión 2.00"CMD8 .

SEND_IF_COND( CMD8) Se utiliza para verificar las condiciones de funcionamiento de la interfaz de la tarjeta SD. La tarjeta SD al analizar la CMD8efectividad del parámetro de condición de operación detectada, el host analiza CMD8la respuesta para verificar la validez de las condiciones de operación. La tensión suministrada se especifica CMD8mediante el campo del parámetro VHS del comando. La tarjeta SD usa el voltaje especificado en VHS como el voltaje actual proporcionado. porCRCconComprobar patrón('10101010b') para verificar la validez de la comunicación entre el host y la tarjeta SD.

  • Si la tarjeta SD admite el funcionamiento con el voltaje proporcionado, el voltaje proporcionado y el patrón de verificación ('10101010b') se incluirán en los parámetros del comando de respuesta .
  • Si la tarjeta SD no admite el funcionamiento con el voltaje proporcionado, volverá sin respuesta y permanecerá en estado inactivo . Para inicializar la tarjeta de memoria SD de gran capacidad, debe ACMD41enviarse antes que la primera CMD8(consulte la Figura 4-1 a continuación). La recepción CMD8puede ser reconocida por la tarjeta SD, y el host debe admitir la "Especificación de capa física versión 2.00" y la tarjeta SD para admitir esta nueva función.

SD_SEND_OP_COND( ACMD41) Está diseñado para proporcionar un mecanismo para que el host identifique y rechace tarjetas que no coincidan con el rango de V DD proporcionado por el host . Si la tarjeta SD no puede transmitir datos dentro del rango especificado, debe abandonar la operación del bus y entrar en el estado Inactivo . El registro OCR define el nivel de voltaje relevante.

Nota: Es ACMD41un comando específico de la aplicación, por lo que APP_CMD (CMD55) siempre debe enviarse antes de ACMD41. El RCA utilizado para CMD55 en idle_state será el valor predeterminado de la tarjeta SD (RCA = 0x0000).

Inserte la descripción de la imagen aquí
Al establecerlo en 0 en ACMD41el parámetro del comando ,OCRAnfitriónPuede consultar cada tarjeta y determinarRango de voltaje común, Y luego envíe la tarjeta de fuera de rango al estado Inactivo . ACMD41Recién enviada como una consulta, la tarjeta SD no comenzará a inicializarse. Después de eso, el host puede seleccionar un voltaje de trabajo y, en este caso, volver a enviar ACMD41 para enviar la tarjeta incompatible al estado Inactivo . Durante el proceso de inicialización, el host no puede cambiar el rango de voltaje operativo.

2.3 Proceso de inicialización y reconocimiento de la tarjeta SD

Una vez activado el bus, el host inicia el proceso de inicialización e identificación de la tarjeta SD (consulte la Figura 4-2 a continuación). Desde el proceso de inicialización SD_SEND_OP_COND() ACMD41comienza estableciendo las condiciones de funcionamiento, y OCR( Operation Conditions Register) en HCS( Host Capacity Support) bits.

El bit HCS (Host Capacity Support) se establece en:

  • 1: indica que el host admite tarjetas de memoria SD de gran capacidad .
  • 0: indica que el host no admite tarjetas de memoria SD de gran capacidad .

Utilice la función CMD8ampliada ACMD41del comando; el ACMD41parámetro HCS se enviará cuando se envíe el comando , y el ACMD41correspondienterespuestaA R3 (el registro OCR) , que comprende: rango de voltaje V DD , el estado de capacidad de la tarjeta SD de CCS (la capacidad de la tarjeta de estado) . Si la tarjeta SD no tiene un CMD8 correspondiente, la tarjeta SD ignorará el parámetro HCS del ACMD41. Sin embargo, si la tarjeta no devuelve una respuesta a CMD8, el host debe establecer HCS en 0 . Las tarjetas SD de capacidad estándar ignorarán HCS . Si HCS se establece en 0 , la tarjeta SD de gran capacidad nunca volverá al estado listo (mantenga el bit de ocupado en 0). La tarjeta SD utiliza el bit de ocupado en OCR para informar al host si la inicialización de ACMD41 se ha completado.

El bit de ocupado en OCR se establece en:

  • 0: indica que la tarjeta SD aún se encuentra en el estado de inicialización .
  • 1: indica que se ha completado la inicialización de la tarjeta SD.

El host envía repetidamente ACMD41 hasta que el bit de ocupado se establece en 1 .tarjeta SDSolo verifique las condiciones operativas y los bits HCS en el OCR en el primer ACMD41 . Al repetir ACMD41, el host no emitirá otros comandos excepto CMD0.

Cuando la tarjeta responde a CMD8, la respuesta de ACMD41 contiene información de campo CCS. Cuando la tarjeta SD vuelve a Lista (el bit de ocupado se establece en 1), CCS entra en vigor.

CCS (Estado de capacidad de la tarjeta) está configurado en:

  • 0: indica que la tarjeta es una tarjeta de memoria SD de capacidad estándar
  • 1: indica que la tarjeta es una tarjeta de memoria SD de alta capacidad

El host realiza la misma secuencia de inicialización para todas las tarjetas nuevas del sistema y las tarjetas incompatibles se enviarán al estado Inactivo . Luego, el host envía un comando ALL_SEND_CID(CMD2) a cada tarjeta para obtener su número de identificación de tarjeta único (CID). La tarjeta no reconocida (es decir, la tarjeta en estado listo) envía su número CID como respuesta (en la línea CMD). Una vez que la tarjeta envía el CID, entra en estado de reconocimiento. Luego, el host envía CMD3 (SEND_RELATIVE_ADDR) para solicitar a la tarjeta que emita una nueva dirección de tarjeta relativa (RCA), que es más corta que el CID y se utilizará para direccionar la tarjeta en futuros modos de transmisión de datos. Una vez que se recibe el RCA, el estado de la tarjeta SD cambiará al estado de espera . En este momento, si el anfitrión desea asignar otro número RCA, puede solicitar a la tarjeta que emita un nuevo número enviando otro comando CMD3 a la tarjeta. El último RCA lanzado es el número RCA real de la tarjeta SD.

Inserte la descripción de la imagen aquí

3. Modo de transferencia de datos de la tarjeta SD

Antes del final del modo de reconocimiento de la tarjeta SD , el anfitrión debe mantener la frecuencia f OD (400kHz) , porque durante el modo de reconocimiento de la tarjeta SD , algunas tarjetas SD pueden tener restricciones de frecuencia operativa. En el modo de transferencia de datos , el anfitrión puede operar la tarjeta en el rango de frecuencia f PP (25MHz) . El host envía SEND_CSD(CMD9) para obtener datos relacionados con la tarjeta SD (registro CSD), como la longitud del bloque, la capacidad de almacenamiento de la tarjeta, etc.

El comando de transmisión SET_DSR(CMD4) configura el registro de etapa del conductor de todas las tarjetas de identificación . Se programa de acuerdo con el diseño (longitud) del bus de la aplicación , el número de tarjetas en el bus y la frecuencia de transmisión de datos.Registro DSR. La frecuencia de reloj también se cambia de f OD af PP . SET_DSREl comando es una opción (no necesaria) para la tarjeta SD y el host .

CMD7 solía seleccionar una tarjeta SD y colocarla en el estado de transmisión , al mismo tiempo, solo puede haber una tarjeta en el estado de transmisión . Si la tarjeta previamente seleccionada está en estado de transmisión , su conexión con el host se liberará y volverá al estado Stand-by . Cuando se envía CMD7 con la dirección de tarjeta relativa reservada "0x0000", todas las tarjetas se devuelven al estado de espera .

Nota: El host reserva RCA = 0x0000 para la selección de salida.

Inserte la descripción de la imagen aquí
Esto se puede utilizar antes de que se reconozca la nueva tarjeta, sin reiniciar otras tarjetas registradas. Una vez que la tarjeta SD en este estado tiene un RCA, no responderá a los comandos de identificación (por ejemplo: ACMD41, CMD2).

Nota: Si la tarjeta SD confirmada obtiene un RCA que no coincide con CMD7, se anulará la selección de la tarjeta.

A continuación se resume la relación entre varios modos de transmisión de datos:

  • Todos los comandos de lectura de datos pueden cancelarse en cualquier momento mediante el comando de parada (CMD12). La transferencia de datos finalizará y la tarjeta SD volverá al estado Transferir . Los comandos de lectura incluyen: lectura de bloques (CMD17), lectura de bloques múltiples (CMD18), protección de envío de escritura (CMD30), envío de scr (ACMD51) y comandos generales para el modo de lectura (CMD56).
  • Todos los comandos de escritura de datos se pueden cancelar en cualquier momento mediante el comando de parada (CMD12). Antes de que CMD7 cancele la selección de la tarjeta, debería dejar de escribir comandos. Los comandos de escritura incluyen: bloque de escritura (CMD24 y CMD25), programa CSD (CMD27), comando de bloqueo / desbloqueo (CMD42) y comando normal en modo de escritura (CMD56).
  • Una vez que se completa la transferencia de datos, la tarjeta SD saldrá del estado de escritura de datos y pasará al estado de Programación (Transmitido con éxito) O Estado de transferencia (Transmisión fallida)。
  • Si se detiene una operación de escritura de bloque y la longitud del bloque y el CRC del último bloque son válidos, se programarán los datos.
  • La tarjeta SD puede proporcionar almacenamiento en búfer para escrituras en bloque. Esto significa que mientras se programa el bloque anterior, el siguiente bloque se puede enviar a la tarjeta SD. Si todos los búferes de escritura están llenos, siempre que la tarjeta SD esté en el estado de Programación (consulte el diagrama de estado de la tarjeta SD en la Figura 4-3), la línea DAT0 permanecerá baja (OCUPADO) .
  • No hay opciones de almacenamiento en búfer para escritura CSD, protección contra escritura y borrado. Esto significa que cuando la tarjeta SD está ocupada procesando cualquiera de estos comandos, no se aceptarán otros comandos de transmisión de datos. Mientras la tarjeta esté ocupada y en el estado de Programación , la línea DAT0 permanecerá baja .
  • Cuando la tarjeta está en programación, el comando de configuración de parámetros no está permitido. Los comandos de configuración de parámetros incluyen: establecer la longitud del bloque (CMD16), borrar el inicio del bloque (CMD32) y borrar el final del bloque (CMD33).
  • Cuando la tarjeta está programando, no se le permite leer comandos.
  • Mover otra tarjeta del estado de espera al estado de transferencia (usando CMD7) no terminará las operaciones de borrado y programa. La tarjeta cambiará al estado de desconexión y se liberará la línea DAT.
  • En el estado Desconectar , puede usar CMD7 para volver a seleccionar la tarjeta. En este caso, la tarjeta pasará al estado de Programación y reactivará la indicación de ocupado.
  • Restablecer la tarjeta SD (usando CMD0 o CMD15) terminará cualquier operación de programación pendiente o en curso. Esto puede destruir el contenido de datos de la tarjeta. Es responsabilidad del anfitrión evitar que esto suceda.
  • CMD34-37, CMD50, CMD57 están reservados para la expansión del sistema de comando SD. Las transiciones de estado de estos comandos se definen en cada especificación del sistema de comandos.

4. Referencias

La información a la que hace referencia SDIO es la siguiente: La
Inserte la descripción de la imagen aquí
dirección de descarga es la siguiente:
https://download.csdn.net/download/ZHONGCAI0901/14975835

Supongo que te gusta

Origin blog.csdn.net/ZHONGCAI0901/article/details/113485583
Recomendado
Clasificación