Secuencia de inicio MMC / eMMC

1

He estado tratando de conectar un chip eMMC a un FPGA, que recibe comandos a través de un microcontrolador para iniciar y activar las operaciones de escritura / lectura en determinados sectores.

Estoy teniendo problemas con la secuencia de arranque de la MMC que estoy usando, estoy siguiendo los estándares que encontrará here o aquí si no desea crear una cuenta en JEDEC . El documento es bastante denso y estoy un poco confundido. Esto es lo que hago por ahora:

  1. Inicio: MMC está sincronizado, la línea CMD está bajada
  2. En la acción del usuario, envíe CMD0 0x00 a través de CMD, es un comando de 48 bits de ancho construido de esta manera: cmd <= "01" & CMD0 & STUFF_BITS32 & "1001010" & '1'; (consulte la p145 / 352 del archivo pdf anterior). Este es el comando GO_IDLE_STATE. No se espera respuesta.
  3. En la acción del usuario, envíe CMD1 0x80FF8080. Construido como el comando anterior, excepto que CRC7 es 0010110 . Este es el comando SEND_OP_COND, que debe enviar datos a través de la línea CMD.
  4. En la acción del usuario, envíe CMD2 0x00. Construido como el comando anterior, excepto que CRC7 es 1100001 . Este es el comando ALL_SEND_CID, que debe enviar datos a través de la línea CMD.

El problema es que no obtengo ningún dato. ¿Alguna idea de lo que estoy haciendo mal?

Vea a continuación las capturas de un analizador lógico;

Informaciónadicional:porahora,heconectadounatarjetaTranscendMMCPlusde1GB,siguiendolospinoutsqueheencontrado en línea . Todavía no he conectado las líneas de datos. Estoy calculando el CRC7 con la información proporcionada en p.254 / 352 (8.2.1). El reloj MMC está dividido de mi reloj en chip de 12 MHz 32 veces, por lo que es ~ 375kHz por ahora (planeando acelerarlo después de que la inicialización sea exitosa)

    
pregunta Fluffy

2 respuestas

1

Tengo el mismo problema, aunque el host es ARM MPU. Sin embargo, creo que la línea de CMD debería detenerse de manera predeterminada, como indica la guía de diseño de mi eMMC:

"R CMD_PU : Se debe conectar una resistencia de pull-up de 10K ohmios al CMD señal para evitar que el bus flote ".

    
respondido por el user115384
2

Se supone que CMD 1 tiene el código OCR sin el bit de ocupado como la carga útil de 32 bits. Deberías estar enviando

cmd <="01" & "000001" & x"80FF8080" & "0010110" & '1';

según la sección A.6.1 para chips con una capacidad menor o igual a 2GB y

cmd <="01" & "000001" & x"C0FF8080" & "1011111" & '1';

para chips de más de 2GB.

    
respondido por el ks0ze

Lea otras preguntas en las etiquetas