Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.





Lecto-grabador de tarjetas MMC, SD, MicroSD con PIC16F877A


       



serchy

Registrado: 03 Ene 2008
Mensajes: 8
Ubicación: Tucuman, Argentina
citar
Hola hawpic, muchas gracias por tus consejos.
Despues de probar una serie de pasos, el CMD8 me tira error en CRC.. no se a que se deberá quizá mi tarjeta es version 1.1 y no 2.0 como supones. Me gustaría mucho que me pases tu codigo para darle una mirada, y de paso probar si funciona en mi circuito... como para descartar problemas de hardware Very Happy desde ya muchas gracias!
Después de esto, voy a hacer una super guia paso a paso para que nadie mas tenga inconvenientes con una tarjeta de memoria... Saludos a la comunidad.

Poxa

Registrado: 14 Mar 2008
Mensajes: 2
Ubicación: Yucatn, Mexico
citar
Hola , que tal
Leyendo este foro he encontrado que muchos han tenido problemas con la inicializacion de una targeta SD, bueno pues yo no soy la escepcion. Hace unas semanas estoy intentando inicializar una targeta SD de la marca kingston de 512 Mb, unicamente he logrado que se ponga en Idle_State, estoy trabajando con un microcontrolador Pic 16F877 con un Cristal de 4Mhz. Estoy utilizando la comunicacion en SPI modo Master con un divisor de frecuencia de 16 lo cual me da una frecuencia de 250khz lo cual entra dentro del rango permitido por las targetas SD, segun he leido en las especificaciones.
Las secuencias de comandos que he enviado es la siguiente:
CMD0 seguido de CMD1 y la tarjeta me responde b00000101
tambien he enviado la secuencia CMD0 seguido de CMD55 y ACMD41, la respuesta es la misma
otra secuencia ha sido CMD0 seguido de ACMD41 y en este caso no responde.
No se cual sea el problema en si, no se si, segun lo que he leido en el foro posiblemente sea un error en la frecuencia a la cual trabajo.
Si alguno a tenido un problema similar y lo a solucionado, espero pueda ayudarme

Este foro me ha ayudado bastante, muchas gracias a los colaboradores
Saludos desde Yucatan

serchy

Registrado: 03 Ene 2008
Mensajes: 8
Ubicación: Tucuman, Argentina
citar
Hola Poxa.
Yo una vez tuve un problema similar...
mando CMD0 y me responde 00000001 o 00000101 no recuerdo bien, y luego cuando mando
mando CMD1 y me responde 00000101
probando muchas veces distintas configuraciones obtenia el mismo resultado...
resolví el problema, cambiando de memoria, a una Kingston de 2GB y funciono correctamente.
la primera era una tarjeta marca "DANE-ELEC", q x lo visto no soporta este tipo de inicializacion... o algo asi... quiza es el mismo inconveniente que vos tienes, intenta probar con otra tarjeta.

Este seria el funcionamiento correcto
mando CMD0 y me responde 00000001
mando CMD1 y me responde 00000001
mando CMD1 y me responde 00000000

En cuanto a la escritura, no he probado mucho aún, pues estoy en época de examenes en mi facu, pero prometo que cuando logre hacer funcionar todo escribo una super guia Razz

Poxa

Registrado: 14 Mar 2008
Mensajes: 2
Ubicación: Yucatn, Mexico
citar
Muchas gracias Serchy, seguire intentando, tambien eh pensado en esa posibilidad, probare con una kingston de 2GB a ver que tal me va.
Yo tampoco he probado con la escritura, pues no he pasado de la inicializacion.
Pero apenas salga igual lo hare saber para que otros puedan resolver sus probemas, ha que pesadas son esas SDs

Saludos.
Gracias.

monly

Registrado: 06 May 2008
Mensajes: 6
citar
Hola, es la primera vez que escribo pero llevo bastante tiempo visitando el foro.

Os pido ayuda haber si me podeis echar un cable.

Estoy como la mayoria de vosotros haciedo un proyecto con un pic y una tarjeta sd.

Estoy usando un 16f876 y la parte del spi me funciona sin problemas porque la he probado con un rtc ds 1305 y puedo leer y escribir la hora por el hiperterminal sin problemas.

Estoy programando en ensamblador, el pic esta a 5 voltios y la tarjeta la conecto con un regulador de tension a 3.3 v, las lineas que van del pic a la sd estan con resistencias de 2k2 y 1k8 para que no haya problemas con las tensiones y la linea de salida de la tarjeta DO va directa al pic porque se supone que un 3.3 sera un alto para el pic con una resistencia de pull-up a 3.3.

Me he leido no se cuantos pdf de como funcionan las tarjetas y de los comandos y no se que me falla.

el proceso que hago es el que explicais aqui, CS en alto le envio 80 ciclos de reloj, pongo cs en bajo envio el cmd0 y espero la respuesta R1 y aqui esta el problema siempre leo FF , da igual que lea 3 bytes que 8 bytes la tarjeta no pasa a estado idle.

He probado con varias tarjetas y nada.

No se si es que el proceso de inicializacion hay que empezarlo en algun momento en concreto,
en la documentacion habla de esperar a que el bus de la tarjeta este a 2,2 voltios porque si no no admite comandos o algo asi,contra mas leo la documentacion mas me lio.

Algun consejo de que puedo hacer.

Un saludo y gracias.

serchy

Registrado: 03 Ene 2008
Mensajes: 8
Ubicación: Tucuman, Argentina
citar
Hola, la inicializacion se hace en cualquier momento, intenta probar con dos transistores a la salida de la tarjeta (de modo de que no invierta la señal proveniente de la misma), para elevar la tension que llega al micro, pues con 3.3v estas casi en el limite de nivel alto admitido por el pic. Suerte desde ARGENTINA!

monly

Registrado: 06 May 2008
Mensajes: 6
citar
Hola Serchy, gracias por contestar.

Ayer hice pruebas con el osciloscopio y lo que me pasa es lo siguiente: sin insertar la tarjeta en el zocalo veo los pulsos de reloj y como se envia el comando, pero con la tarjeta puesta no sale nada por el reloj ni por la linea de datos, se queda como muerto.

Un saludo.

serchy

Registrado: 03 Ene 2008
Mensajes: 8
Ubicación: Tucuman, Argentina
citar
monly, la verdad q lo q dices, me suena bastante raro... Shocked
pués no recibir respuesta de la SD, es posible, pero q de repente no tengas la señal de CK del micro, es raro... probaste que cdo colocas la tarjeta no cae la tension en el micro provocando un BOR posiblemente... el consumo de la tarjeta es pequeño, pero quiza tiene algun problema de cortocircuito interno, o el adaptador que usas puede ponerse en corto cdo colocas la tarjeta, la verdad q no se me ocurren muchas alternativas

monly

Registrado: 06 May 2008
Mensajes: 6
citar
Hola parece que ya inicializa bien, la verdad no se si es por lo que he hecho o es que he tocado algo en la placa de pruebas y ahora hace buen contacto y antes no, por si le interesa a alguien lo que vi es que por la pata 1 de la sd habia tension y segun he leido en la documentacion se puede usar para detectar la insercion de la tarjeta y parece que el conflicto era este, al declarar en el pic la pata cs como salida y ponerla a 1 se ve que se producia un conflicto al tener las dos tension, no se, el caso es que la he declarado al inicio como entrada dandole tiempo a la tarjeta que coja tension y despues la declaro como salida y ya envio los 80 ciclos de reloj y ya no me hace lo de antes.

Ahora el problema que tengo es que para que me conteste que esta lista tengo que resetar el pic nunca lo hace a la primera, y quiero empezar a ver si puedo leer y escribir un sector.

Un saludo.

Formato de las Respuestas de la SD
h22

Registrado: 28 Abr 2008
Mensajes: 3
Ubicación: Tucumán - Argenina
citar
Hola a todos. Estuve leyendo cuidadosamente todos los post, y note que no todos coinciden en cuanto al tamaño de la respuesta R1 que se tiene que esperar por parte de la SD en el proceso de inicializacion y demas.
Algunos dicen que es UN SOLO BYTE; mientras que otros dicen que son TRES BYTES. donde el segundo son los 8 bits del formato R1 y los otros son FFH.
Asi: FF01FFH
Esto dependerá de la marca de la tarjeta?... no creo poque SD es un estandar no?
Por favor quisiera que alguien me saque de esa duda.
Muchas gracias!

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos enviar mensajes de texto sin usar el teclado del celular.
No hay mensajes nuevos Enviar video en vivo por internet
No hay mensajes nuevos Enviar comandos por RS232 en visual basic
No hay mensajes nuevos Enviar comunicacion via RS232 a servidor
No hay mensajes nuevos Contador de pulsos unido al microcontrolador DLP-245PB

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfases y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||