Estoy tratando de leer una tarjeta microSD a través de una ranura SD sin marca y una FPGA Basys3. La tarjeta microSD, Kingston microSD HC 8GB Clase 4, se usa a través de un adaptador de tarjeta SD, también Kingston.
Tengo problemas para superar el CMD8
del proceso de inicialización. Después de enviar CMD0
, respondió con 0x01
, lo cual es normal. Después de CMD0
envié el comando CMD8
; respondió con 0x000000021F
. No pude encontrar nada relacionado con este código en ninguna documentación.
Para probar, probé con un SanDisk Ultra SDHC 32GB Class 10 con el mismo código. Se inicializó con éxito.
Otras cosas que he intentado:
-
Enviando relojes de emergencia antes y después del comando con
CS
ALTO . -
Siempre / No siempre enviando
SCLK
.
Por favor ayuda.
Formas de onda
El primero muestra todo el proceso de inicialización. SD_CD
es Card Detect (Active Low) y SD_WP
es Write Protect (Active Low). SD_CLK
se ejecuta a 390 kHz, 256 veces más lento que _cpuClock
. Tenga en cuenta que los SD_MISO
, SD_CD
, SD_WP
y _cpuClock
se simulan manualmente (es decir, no recibe ninguna señal del módulo SD). Una vez detectada la tarjeta, se espera 1 milisegundo, seguido de 74 SD_CLK
's.
LasegundaimagenesunzoomdeCMD0
ysurespuesta.
LaterceraimagenesunacercamientodeCMD8
ysurespuesta.
LaimagenfinalesunacercamientodeCMD55
ysurespuesta.
Actualización1(Antesde@AnnoymousAnswer)Melasarregléparaponerenmismanosunpardecartasmás.Despuésdelaprueba,parecequesoloSanDiskClass10SDHC(tantoSDcomomicroSD)devuelveunestadofinalizadodeinicialización.ElKingstonClass4SDHCSDdevuelveuntiempodeesperadespuésdeCMD0
,mientrasqueelKingstonClass4SDHCmicroSDdevuelveun0x000000021F
.Cambiareladaptadornohizoningunadiferenciaentodosloscasos.Enlaimagendeabajo,losexitososestánenverdeylosnoexitososestánenrojo.
Actualización 2 (Respuesta a @Annoymous Answer) Después de cambiar MOSI
de posedge
a negedge
, la tarjeta SD de la Clase 4 de Kingston parece haberse inicializado (lo que anteriormente se había agotado). Sin embargo, la tarjeta microSD Clase 4 de Kingston aún responde con 0x000000021F
.