Autor Tema: SD Card - Error en lectura con comando 17  (Leído 8724 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: SD Card - Error en lectura con comando 17
« Respuesta #15 en: 03 de Febrero de 2015, 14:59:52 »
Sí, es muy desafortunado.  :(

Intenté poner pull downs internas en SDI, pero la SD de plano no puede con la carga y ni siquiera inicializa. No encontré en ningún lado cuánto valen las "weak pull-downs".  :(

Estamos viendo si meto capacitores de unos 160nF aprox. en esas líneas para sólo dejar pasar los 1MHz.

Otra opción es colocar schottkys en las líneas para eliminar el overshooting, pero el ruido hacia abajo de los 3V3 es lo que me preocupa. Con el osciloscopio veo mucho ruido pero es por él mismo, siempre la señal del canal 2 se mezcla con la del 1 y viceversa. No puedo diagnosticarlo limpiamente.

A ver qué se nos ocurre.

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re: SD Card - Error en lectura con comando 17
« Respuesta #16 en: 03 de Febrero de 2015, 15:53:07 »
Sí, es muy desafortunado.  :(

Intenté poner pull downs internas en SDI, pero la SD de plano no puede con la carga y ni siquiera inicializa. No encontré en ningún lado cuánto valen las "weak pull-downs".  :(

Estamos viendo si meto capacitores de unos 160nF aprox. en esas líneas para sólo dejar pasar los 1MHz.

Otra opción es colocar schottkys en las líneas para eliminar el overshooting, pero el ruido hacia abajo de los 3V3 es lo que me preocupa. Con el osciloscopio veo mucho ruido pero es por él mismo, siempre la señal del canal 2 se mezcla con la del 1 y viceversa. No puedo diagnosticarlo limpiamente.

A ver qué se nos ocurre.

Que raro está tu caso:

En el circuito que tengo, uso conexiones directas a la SD, solamente uso una resistencia de pull up de 10K en la salida de SDO de la tarjeta SD, ya que esta suele poner la salida en alta impedancia alguna veces, de hecho al ponerse en alta impedancia es lo que permite leer 0xFF en algunos casos...

De ahí en fuera, las conexiones son directas al modulo SPI del PIC, a 3.3V, sin nada mas.

De hecho no recomendaria el uso de capacitores en los pines de las señales, eso de "forzar" a 1 escaso Mhz. la señal de reloj se me hace medio lenta, partiendo de que he cualquier tarjeta se puede leer usando SPI a 16 mhz sin problemas.

Lo que te recomendaria seria poner un capacitor SMD de 1 uf en paralelo con los pines de alimentación de la tarjeta, eso si te ayudaría a eliminar ruido, pero en las lineas de datos no.
« Última modificación: 03 de Febrero de 2015, 15:56:23 por vixctor »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: SD Card - Error en lectura con comando 17
« Respuesta #17 en: 03 de Febrero de 2015, 15:57:06 »
¿Y estás seguro que no será otra errata del micro?

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: SD Card - Error en lectura con comando 17
« Respuesta #18 en: 03 de Febrero de 2015, 16:23:45 »
Justamente eso me temí, que fuera una errata. Revisé la errata más actual y no figura nada.

Por la tarde enviaré un mail a los de soporte técnico. Les explicaré mi triste historia. Que revisen ellos con un código similar y que vean si les pasa lo mismo.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: SD Card - Error en lectura con comando 17
« Respuesta #19 en: 03 de Febrero de 2015, 16:25:11 »
Lo que te recomendaria seria poner un capacitor SMD de 1 uf en paralelo con los pines de alimentación de la tarjeta, eso si te ayudaría a eliminar ruido, pero en las lineas de datos no.

Eso es muy cierto... no he visto si el típico capacitor de desacoplo está presente. Por la tarde lo checo también, es muy probable! Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: SD Card - Error en lectura con comando 17
« Respuesta #20 en: 03 de Febrero de 2015, 22:27:19 »
Hola, el capacitor de desacolplo está presente. Sigo investigando.

Acabo de mandar un ticket a Microchip para preguntar si han visto este error antes. Estoy casi seguro que es ruido en nuestra PCB, pero mejor pregunto por si las dudas.  :mrgreen:
« Última modificación: 03 de Febrero de 2015, 23:04:31 por migsantiago »

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: SD Card - Error en lectura con comando 17
« Respuesta #21 en: 04 de Febrero de 2015, 01:20:41 »
Lo que te recomendaria seria poner un capacitor SMD de 1 uf en paralelo con los pines de alimentación de la tarjeta, eso si te ayudaría a eliminar ruido, pero en las lineas de datos no.

Eso es muy cierto... no he visto si el típico capacitor de desacoplo está presente. Por la tarde lo checo también, es muy probable! Gracias.

En esa parte se ven los capacitores , uno de tantalio 10uF y el de 0.1uF.
Es lo mas cercano que los pude colocar.
Agregare otro de 0.01uF.

Saludos!

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re: SD Card - Error en lectura con comando 17
« Respuesta #22 en: 04 de Febrero de 2015, 01:56:41 »
Están muy lejos los capacitores de los pines de alimentación de la tarjeta, aunque veo que esa linea de alimentación no va a nada más, la distancia si es considerable.

En mi caso tengo el capacitor lo más cerca posible de los pines de conexión literalmente...


Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: SD Card - Error en lectura con comando 17
« Respuesta #23 en: 04 de Febrero de 2015, 02:23:03 »
En nuestro caso no lo pude acercar mas por que los pines van del lado de la insercion de la tarjeta,colocando un cap  intefiere.

Probare tirando unas vias y colocar el capacitor por debajo,pero no me gusta eso del todo.

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re: SD Card - Error en lectura con comando 17
« Respuesta #24 en: 04 de Febrero de 2015, 04:57:14 »
En nuestro caso no lo pude acercar mas por que los pines van del lado de la insercion de la tarjeta,colocando un cap  intefiere.

Probare tirando unas vias y colocar el capacitor por debajo,pero no me gusta eso del todo.

De todos modos no creo que ese sea el problema, tengo un diseño en donde el zocalo de la micro SD esta justo al lado de una fuente boost de 3.3 a 12 V, con todo y su inductor, y no me ha generado problemas de ruido, también ha armado el sistema en protoboard con cables largos y nunca tuve problemas de ruido, ya estoy dudando acerca de si realmente es un problema del pic32 que están usando...

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: SD Card - Error en lectura con comando 17
« Respuesta #25 en: 09 de Febrero de 2015, 21:42:47 »
De todos modos no creo que ese sea el problema, tengo un diseño en donde el zocalo de la micro SD esta justo al lado de una fuente boost de 3.3 a 12 V, con todo y su inductor, y no me ha generado problemas de ruido, también ha armado el sistema en protoboard con cables largos y nunca tuve problemas de ruido, ya estoy dudando acerca de si realmente es un problema del pic32 que están usando...

Hola, la gente de Microchip aún no da respuesta a mi ticket... temo lo peor  :2]

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: SD Card - Error en lectura con comando 17
« Respuesta #26 en: 10 de Febrero de 2015, 23:04:03 »
Hola, creo que encontré la razón y todo este tiempo fue mi culpa  :oops:

Mi rutina de escritura de bytes SPI es como sigue...

Código: [Seleccionar]
uint8_t SD_Card_Write_SPI(uint8_t data)
{
   while(PLIB_SPI_TransmitBufferIsFull(SPI_ID_4));
   PLIB_SPI_BufferWrite(SPI_ID_4, data);
   return PLIB_SPI_BufferRead(SPI_ID_4);
}

Cometí un gigante error... esperaba a que el buffer TX estuviera disponible, pero... jamás esperaba a que el buffer RX estuviera listo. Leía el buffer RX antes de que siquiera el TX hubiera salido completo. Vaya despiste el mío...  :oops:

Voy a hacer pruebas con esta corrección...

Código: [Seleccionar]
uint8_t SD_Card_Write_SPI(uint8_t data)
{
   while(PLIB_SPI_TransmitBufferIsFull(SPI_ID_4));
   PLIB_SPI_BufferWrite(SPI_ID_4, data);
   while(!PLIB_SPI_ReceiverBufferIsFull(SPI_ID_4)); // espera a que se llene con RX despistado! jaja
   return PLIB_SPI_BufferRead(SPI_ID_4);
}

Les cuento cómo me va en un rato :D

Edito: Ya estoy leyendo la SD a 20MHz.  :mrgreen: Aún no arranco los otros SPIs, pero espero que no afecten mucho.
« Última modificación: 11 de Febrero de 2015, 00:38:15 por migsantiago »

Desconectado vixctor

  • PIC16
  • ***
  • Mensajes: 109
Re: SD Card - Error en lectura con comando 17
« Respuesta #27 en: 11 de Febrero de 2015, 01:50:05 »
Orale, super bien!



 

anything