Autor Tema: microSD por puerto SPI del micro 18f4550  (Leído 47678 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #15 en: 18 de Noviembre de 2009, 11:41:37 »
Le tengo puesto un xtal de 20Mhz  :mrgreen:

No entiendo nada.... he estado comparando la librería que has colgado con el programa y modificando para que sean exactas y nada...

Muchas gracias suky!!

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #16 en: 18 de Noviembre de 2009, 12:19:43 »
Suky, ¿cómo conectas el SDI? ¿Lo conectas directamente al pic o mediante un buffer para igualar tensiones?

yo lo tengo puesto mediante un buffer que son dos puertas nand con las entradas unidas (queda un inversor) en serie. Así niego 2 veces por lo que la señal queda igual. Es que no tenía inversores :oops:

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #17 en: 18 de Noviembre de 2009, 12:27:37 »
Con esta modificación me dice "Card Init Time Out"  :(

Esto es cosa de meigas...

Osea que hace 4095 intentos de inicialización y no lo logra  :?
Suky, ¿cómo conectas el SDI? ¿Lo conectas directamente al pic o mediante un buffer para igualar tensiones?

yo lo tengo puesto mediante un buffer que son dos puertas nand con las entradas unidas (queda un inversor) en serie. Así niego 2 veces por lo que la señal queda igual. Es que no tenía inversores :oops:

Yo uso un 18F4550 y le coloqué un divisor resistivo a CS, SCK y SDI de la memoria, no estarás equivocándote (como yo en una ocasión  :oops:) de colocar el pin DO del PIC con el pin DO de la memoria?

También si puedes cambia de memoria, es un microSD o SD?


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #18 en: 19 de Noviembre de 2009, 04:56:50 »
No, tengo un divisor en el SDI de la memoria al SDO del pic y el buffer que te comenté del SDO de la memoria al SDI del pic.

Tengo puesta una microsd con adaptador a sd, probaré con una mmc y una sd normal a ver que pasa....

Pero tengo puesto esa porque la aplicación de microchip exige un fat32 y es la única tarjeta que tengo con ese formato...

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #19 en: 19 de Noviembre de 2009, 05:12:13 »
Nada :(

Cuelgo el esquema para que le eches un vistazo http://www.4shared.com/file/155159172/77f1b13/sd_online.html

Muchas gracias Suky!!!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #20 en: 19 de Noviembre de 2009, 09:53:21 »
El hardware se ve correcto  :? Vamos a seguir haciendo pruebas, lo que queda es variar la frecuencia de SPI al inicializar a SPI_FOSC_16 y SPI_FOSC_4, probar con las 2 haber si hay respuesta.-

Después sería ideal ver que valor tiene la respuesta al salir de cada bucle:

Código: C
  1. do
  2.    {
  3.         response = SendSDCCmd(GO_IDLE_STATE,0x0);
  4.         timeout--;            
  5.    }while((response.r1._byte&0x01)== 0x00 && timeout != 0);
  6.    //  Mostrar valor de response.r1._byte   <<<<<---<<<<<<
  7.    // see if it failed        
  8.    if(timeout == 0)        
  9.    {
  10.     .....
  11.    do
  12.    {
  13.         response = SendSDCCmd(SEND_OP_COND,0x0);
  14.         timeout--;            
  15.    }while((response.r1._byte&0x01)== 0x01 && timeout != 0);
  16.    //  Mostrar valor de response.r1._byte   <<<<<---<<<<<<
  17.    // see if it failed        
  18.    if(timeout == 0)        
  19.    {
  20.     .......


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #21 en: 19 de Noviembre de 2009, 14:01:09 »
No funciona con el cambio de frecuencia, lo había probado ya...

Los valores son los mismos en los dos casos: F0E552E552E552040EDBCF (SPI_FOSC_64)
52E552E552040EDBCF (SPI_FOSC_4)
f0E552E552R552040EDBCF (SPI_FOSC_16)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #22 en: 19 de Noviembre de 2009, 14:57:12 »
Que es exactamente lo que me muestras?

Para ver como está reaccionando la memoria al enviar un comando habría que ver que responde en este sector:

Código: C
  1. do
  2.         {
  3.             response.r1._byte = ReadMedia();
  4.             timeout--;
  5.         }while((response.r1._byte == 0xFF) && (timeout != 0));

Dentro de la función SendSDCCmd.

Según la teoría después de enviar un comando se debe esperar la respuesta R1 que tiene la forma de 0xxxxxxx, en donde cada bit es indicativo de un error o estado de la memoria.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #23 en: 20 de Noviembre de 2009, 11:29:17 »
Esas respuestas son las de "response.r1._byte" que me ponías en el otro post.

No he podido mirar el código que me has puesto porque he tenido mucho curro hoy  :oops: y hasta el lunes no tengo internet

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #24 en: 23 de Noviembre de 2009, 14:05:45 »
te prometo que mañana te lo pongo!!!!!
hoy tampoco me han dejado :5]

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #25 en: 23 de Noviembre de 2009, 14:08:03 »
Ok! Estaremos a la espera haber si podemos sacar adelante este proyecto  :undecided:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #26 en: 25 de Noviembre de 2009, 13:27:29 »
Lo puede mirar!!!

Pero... no tengo respuesta!!! :huh:

Este es el código que he modificado en SendSDCCMD:
Código: [Seleccionar]
putrsUSART("\nenvío por el SPI");
    WriteSPI(CmdPacket.cmd);                //Send Command
    WriteSPI(CmdPacket.addr3);              //Most Significant Byte
    WriteSPI(CmdPacket.addr2);
    WriteSPI(CmdPacket.addr1);
    WriteSPI(CmdPacket.addr0);              //Least Significant Byte
    WriteSPI(CmdPacket.crc);                //Send CRC
putrsUSART("\nse supone que tengo respuesta:");
WriteUSART(sdmmc_cmdtable[cmd].responsetype);
putrsUSART(sdmmc_cmdtable[cmd].responsetype);
    // see if  we are going to get a response   
    if(sdmmc_cmdtable[cmd].responsetype == R1 || sdmmc_cmdtable[cmd].responsetype == R1b)
    {
        do
        {
            response.r1._byte = ReadMedia();
            timeout--;
WriteUSART(response.r1._byte);
        }while((response.r1._byte == 0xFF) && (timeout != 0));
y no me saca nada :huh:

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #27 en: 25 de Noviembre de 2009, 13:44:50 »
Hola!!
Esta parte eliminala:
Código: [Seleccionar]
putrsUSART("\nse supone que tengo respuesta:");
WriteUSART(sdmmc_cmdtable[cmd].responsetype);
putrsUSART(sdmmc_cmdtable[cmd].responsetype);

Lleva mucho tiempo y se puede perder datos.  ;-)

Ahora en este caso:
Código: [Seleccionar]
WriteUSART(response.r1._byte);
Se debería de recibir alguna respuesta, si es 0x00, es porque no hay ninguna respuesta de la memoria  :( Has esta prueba con más de una memoria para que ver que pasa.

Acuérdate de tener:

Código: [Seleccionar]
for(timeout=0; timeout<10; timeout++)
       WriteSPI(0xFF);

WriteSPI(CmdPacket.cmd);                //Send Command

Para que se sincronice el envío de datos.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #28 en: 25 de Noviembre de 2009, 14:09:36 »
La parte que dices que quiete la he puesto para hacer la prueba.

¿Dónde tengo que tener ese código?

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #29 en: 25 de Noviembre de 2009, 14:13:17 »
El código lo tengo justo antes del envío  :mrgreen:

He probado con una mmc, una sd y la microsd con adaptador y lo mismo :5]


 

anything