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

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #30 en: 26 de Noviembre de 2009, 02:03:22 »
No tuve éxito en C18, por ahora me gano!  :mrgreen:

Debug en CCS:

Debug en C18.

Es el mismo código, pero debo estar configurando mal SPI porque no resulta  :5] Adjunto ambos códigos.-

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 #31 en: 26 de Noviembre de 2009, 04:58:33 »
¿Pero es otro código?

¿Entonces no sólo soy yo?  :oops:

No sé si alegrarme o entristecerme

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #32 en: 26 de Noviembre de 2009, 10:08:16 »
¿Pero es otro código?

¿Entonces no sólo soy yo?  :oops:

No sé si alegrarme o entristecerme

Es el mio pasado a C18. En CCS se inicia la SD Card, pero en C18 no, y no veo porque!  :? Haciendo debug en proteus veo la linea de SDO baja cuando debería estar siempre en alto por la configuración  :shock:

Cuando me haga un tiempito lo sigo revisando.


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

Desconectado Drod

  • PIC16
  • ***
  • Mensajes: 136
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #33 en: 26 de Noviembre de 2009, 14:57:22 »
Hola! Soy nuevo con eso de los SD & MMC...

Pueden disponibilizar el schematic???

Gracias!  :)

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #34 en: 26 de Noviembre de 2009, 16:11:51 »
Hola! Soy nuevo con eso de los SD & MMC...

Pueden disponibilizar el schematic???

Gracias!  :)

En el mismo hilo está el esquemático que utiliza Slalen.

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 #35 en: 30 de Noviembre de 2009, 05:46:20 »
Suky estoy probando tu programa en CCS, y tengo varias dudas:

¿Para cambiar el clock a 20MHz sólo tengo que cambiar #use delay(clock=20000000)?
¿No tengo que cambiar ningún valor para el RS232?

¿Para qué son los pines?:
   output_high(PIN_C0);
   output_high(PIN_C1);
   output_high(PIN_C2);

Es que al cambiar los pines del 232, del cs y el valor del clock recibo datos pero no se puede leer nada...

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #36 en: 30 de Noviembre de 2009, 05:50:03 »
Me respondo: No hay que cambiar el valor del clock, tienes una entrada de 20MHz y con el divisor obtienes los 48MHz  :D

Lo que me dice tu programa:
Código: [Seleccionar]
Iniciando SD Card
Se ha iniciado correctamente la memoria!!!

Lectura del CID:

Lectura del CSD:

Se realiza escritura de la memoria en 512:

Se lee el sector de la memoria 0:
Error! No se ha podido leer

Parece que el error lo tengo en la lectura. Voy a comprobar la placa ;-)

Muchas gracias SENSEI!!

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #37 en: 30 de Noviembre de 2009, 06:06:04 »
Más pruebas:
1- Quitar el buffer del SDI (del pic o sea, SDO de la sd) por si está metiendo algún error: no detecta la tarjeta por lo que tiene que tener el buffer  :D
2- Activar el rs232-debbug de tu programa:
Código: [Seleccionar]
Iniciando SD Card

--> Se inicia sincronizacion

--> Se envia CMD0 (Se desactiva SD Card)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1

--> Se envia CMD1 (Se activa SD Card)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:1
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0

--> Se envia CMD16 (Se fija largo del Bloque para escritura/lectura : 512)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0

--> Se envia CMD59 (Desactivación de CRC)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Se ha iniciado correctamente la memoria!!!

Lectura del CID:

--> Se envia CMD10 (Lectura de CID)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE

Manufacturer ID: 1B
OEM/Application ID: SM
Product Name: 00000
Product Revision: 10
Serial Number: B157967E
Manufacturer Date Code: 0094
CRC-7 Checksum: 47

Lectura del CSD:

--> Se envia CMD9 (Lectura de CSD)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE

CSD_STRUCTURE: 00
TAAC: 7F
NSAC: B0
TRAN_SPEED: 32
CCC: 05F5
READ_BL_LEN: 09
READ_BL_PARTIAL: 01
WRITE_BLK_MISALIGN: 00
READ_BLK_MISALIGN: 00
DSR_IMP: 00
C_SIZE: 33
VDD_R_CURR_MIN: 06
VDD_R_CURR_MAX: 06
VDD_W_CURR_MIN: 06
VDD_W_CURR_MAX: 06
C_SIZE_MULT: 06
ERASE_BLK_EN: 01
SECTOR_SIZE: 3F
WP_GRP_SIZE: 7F
WP_GRP_ENABLE: 01
R2W_FACTOR: 05
WRITE_BL_LEN: 09
WRITE_BL_PARTIAL: 00
FILE_FORMAT_GRP: 00
COPY: 00
PERM_WRITE_PROTECT: 00
TMP_WRITE_PROTECT: 00
FILE_FORMAT: 00
CRC: CB

Se realiza escritura de la memoria en 512:

--> Se envia CMD24 (Escritura de bloque)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Se envia Token (0xFE)
Se envia Bloque de datos
Respuesta de recepción del bloque: 0xE5  (***00101)
Escritura Terminada

Se lee el sector de la memoria 0:

--> Se envia CMD17 (Lectura de bloque)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE
Terminada la lectura
Valores Leidos:

EB,FE,90,66,73,69,6D,35,2E,36,30,00,02,20,01,00,02,00,02,00,00,F8,76,00,20,00,02,00,00,00,00,00,
00,B0,0E,00,00,00,29,78,56,34,12,20,20,20,20,20,20,20,20,20,20,20,46,41,54,31,36,20,20,20,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,55,AA,
Se lee el sector de la memoria 512:

--> Se envia CMD17 (Lectura de bloque)
Repeticiones para respuesta de CmdXX: 2; Respuesta recibida:0
Toquen recibido: 0xFE
Terminada la lectura
Valores Leidos:

4C,69,62,72,65,72,69,61,20,63,6F,6E,74,72,6F,6C,20,4D,65,6D,6F,72,69,61,20,53,44,20,62,79,20,53,
75,6B,79,2E,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,4D,82,30,43,BC,40,A1,10,05,E9,5A,CA,45,
07,06,00,4D,28,EA,85,54,0E,00,20,80,EA,10,0D,90,81,1A,80,03,14,11,8C,E0,A4,49,71,23,08,68,80,58,
8C,A7,0C,A1,54,02,02,41,99,2C,00,48,9C,15,CA,A8,D3,24,94,E6,F7,06,00,D3,20,2D,5F,13,E1,8B,14,72,
05,0C,40,87,10,05,0A,84,1D,50,44,20,D2,08,58,40,01,A2,20,CC,1A,40,44,95,62,A1,C8,5C,D1,A0,24,E0,
3B,50,03,93,A0,81,57,00,04,E1,60,17,50,78,0A,12,01,40,30,40,08,86,B1,15,92,91,03,48,9B,10,82,0E,
21,A4,18,AD,56,0E,09,24,91,3A,0C,54,CB,2C,83,00,2C,E8,42,6C,04,F0,C0,11,84,0A,28,35,CA,40,84,24,
19,AC,A8,B8,0D,0C,C0,CB,21,85,04,39,49,10,24,C8,4E,04,B0,C1,4A,05,20,2C,71,60,00,EC,69,1E,10,4A,
81,00,45,45,28,94,5A,70,86,00,98,DD,05,82,04,BB,46,22,20,54,4B,24,43,10,0F,0E,31,7E,84,09,E0,6C,
00,68,02,B3,00,40,04,A3,82,8E,93,1C,2C,0B,19,03,80,E0,98,20,56,C0,2C,31,54,08,40,01,42,FE,20,64,
08,81,22,92,43,30,C0,23,01,2C,00,11,08,25,88,72,42,AE,1D,42,44,19,10,28,10,49,24,00,00,00,00,00,

Si entiendes algo espero que me lo expliques  :D :D

Veo que los CMD de inicialización los responde bien pero para escribir en ella nada.

- Probar con todas las tarjetas y el resultado es el mismo.

Lo que alegra es que se inicializa la tarjeta  :-/ :-/

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #38 en: 30 de Noviembre de 2009, 10:41:48 »
 :-/ :-/ Claramente se ve que inicia la tarjeta  :-/

Enviando CMD0 vemos que la memoria de deshabilita rápidamente (respuesta 0x01), luego al enviar CMD1 es necesario el envío de 3 veces el comando, para pasar a activarla (respuesta 0x00).

Y funciona todo! Fíjate que al leer el primer sector estas leyendo el campo de la FAT, esto se ve claramente por los tres primeros bytes: EB,FE,90

Ahora dices que la escritura no funciona, pero yo veo que si! Fíjate en la lectura de la dirección 512 dice Liberia ... pero en Hex.  ;-)

Sabemos que funciona, ahora hay que solucionarlo en C18 y ya estamos  :-/


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 #39 en: 30 de Noviembre de 2009, 11:53:38 »
Todo un avance!!! :-/ :-/ :-/

Ahora queda lo difícil :5]

Cómo me has alegrado el día  :mrgreen: :mrgreen:

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #40 en: 30 de Noviembre de 2009, 13:58:19 »
Todo un avance!!! :-/ :-/ :-/

Ahora queda lo difícil :5]

Cómo me has alegrado el día  :mrgreen: :mrgreen:

jejeje!! En C18 hay que revisar la parte de configuración del SPI, los fuses los revise bien y no encontré que pueda estar afectando  :?
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 #41 en: 30 de Noviembre de 2009, 17:21:27 »
ya tengo internet en casa XD

yo he revisado el modo del spi y tiene estos:
CKP: Clock Polarity Select bit
1 = Idle state for clock is a high level
CKE: SPI Clock Select bit
0 = Transmit occurs on transition from Idle to active clock state

#define   SMPMID        0x00           // Input data sample at middle of data out

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #42 en: 30 de Noviembre de 2009, 23:21:42 »
ya tengo internet en casa XD

yo he revisado el modo del spi y tiene estos:
CKP: Clock Polarity Select bit
1 = Idle state for clock is a high level
CKE: SPI Clock Select bit
0 = Transmit occurs on transition from Idle to active clock state

#define   SMPMID        0x00           // Input data sample at middle of data out

Claro, se debe configurar en modo 3 (1_1), osea que clock y data estén en high en modo inactivo. Lo que vi en C18 que eso no pasa, sino que después de enviar el primer Byte las lineas bajan, haber si mañana me hago un tiempito y reviso el código para detectar el problema  :?

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: microSD por puerto SPI del micro 18f4550
« Respuesta #43 en: 01 de Diciembre de 2009, 01:26:43 »
Solo a modo de información  :mrgreen: Probaste la SD, MMC y la microSD y te mostró lo mismo? Para saber que tan aplicable es el código, porque yo tuve la posibilidad de probarlo solo en un SD Card.


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 #44 en: 01 de Diciembre de 2009, 04:59:42 »
funciona con todas, con la que mejor va es con la MMC


 

anything