3
« en: Martes 12 de Junio de 2007, 16:20 »
Hola!!!! quiero hacer una aporte a toda la comunidad electronica... y de paso poder complementar con otra informacion para lograr que este circuito llegue a la plenitud de su desarrollo. el mismo consta de un microcontrolador PIC16F877A con un oscilador de 20Mhz (luego voy a explicar porque el de 20)... un par de resistencias para "ajustar" los niveles de tension que manejan las tarjetas SD,MicroSD y MMC (2.7 a 3.3 v) a los niveles de la lógica TTL de la arquitectura del PIC, las diversas memorias que existen en el mercado, desde el punto de vista técnico, pueden trabajar mediante dos protocolos serie distintos: el protocolo MultiMediaCard propiamente dicho, y el protocolo SPI. El primero de los protocolos es el más potente ya que permite más operaciones que el segundo, pero por otro lado, el segundo es más fácil de implementar si se dispone de una interfaz SPI (en este caso mediante el modulo MSSP interno del pic) y es suficiente para la mayoría de aplicaciones. la tarjeta se comunica mediante Comandos del operador o Controlador, respondiendo en cada caso cada una de las peticiones del mismo. Yo por el momento logré paso a paso lo siguiente:
(1) seleccionar el modulo MSSP del pic para que funcione de modo maestro,... se utilizan para configurarlo solo 2 registros principales el SSPSTAT y el SSPCON1.
(2) mediante el 2 registro se selecciona el clock del modulo SPI, son 4 posibilidades distintas de frecuencias,... 1- Fosc/64 \\\ 2-Fosc/16 \\\ 3-Fosc/4 \\\ 4- Fosc=timer2/2
(3) en este caso tenemos que utilizar indefectiblemente un cristal de 20Mhz para que al seleccionar el divisor de frecuencia de clock a 64 (opcion1 item anterior) logremos obtener una frecuencia de clock de aproximadamente 312Khz... (frecuencia necesaria para inicializar la memoria)...
(4) luego debemos setear el tipo de polaridad del clock, momento en quese va a muestrear la entrada y ... haciendo CKP=1 CKE=0 SDI(SMP)=0 ...(son bits de los registros nombrados anteriormente)
(5) finalmente ya hemos inicializado el modulo del micro activandolo poniendo a "1" el bit SSPEN
ahora sigue la secuencia de pasos inalterables:
los son pasos muy precisos y específicos... cada comando entrega una respuesta de parte de la tarjeta.
a continuacion se detalla la cadena de cada comando a enviar y que se debe esperar de parte de la tarjeta.
CMD0--- cadena a enviar: 0x40,0x00,0x00,0x00,0x00,0x95 esperar respuesta: 0x01 (significa tarjeta en modo idle).
CMD41--- cadena a enviar: 0x41,0x00,0x00,0x00,0x00, 0xXX. Como la tarjeta ya esta en modo SPI el CRC (0xXX) puede tomar cualquier valor. se aconseja cargarle 0xFF. esperar respuesta 0x00 (significa tarjeta lista!!!! )
CMD55--- ESTE COMANDO NO ES UTILIZA PARA TARJETAS KINGSTON... SI TU TARJETA NO ES DE ESTA MARCA DEBERÁS ENVIARLE ESTE COMANDO. cadena a enviar: 0x77,0x00,0x00,0x00,0x00, 0xXX Y ESPERAR UN 0X00 DE RESPUESTA.
CMD58--- este comando es muy importante ya que se le "pregunta" a la tarjeta si está posibilitada a funcionar con una tension de alimentacion de 3.3v. cadena a enviar 0x7A,0x00,0x00,0x00,0x00, 0xXX. esperar respuesta 0x00 (significa que todo va OK!!!!)
luego de haber terminado la inicializacion, la tarjeta ya estla lista para realizar operaciones de lecto-escritura... pero lamentablemente acá se me recomplicó la cuestión.... hace una semana que estoy intentando escribirle algo y se vé que algun moco me estoy mandando o saltié algun paso,...porque no me responde nada cuando peticiono la escritura mediante el comando 24... nosé la verdad... voy a seguir intentando,.... y si hay progreso voy a seguir publicando más info...
si alguien está interesado en este proyecto no duden en intentar... por cualquier duda de hard o soft comunicate conmigo
vamos!!!! vamos!!!! pongansé las pilas e investiguen en este tema!!!!!! que está muy GROSSOOOO!!!
(tengo mucha informacion al respecto como para compartir sin problema)