Lecto-grabador de tarjetas MMC, SD, MicroSD con PIC16F877A
|
Poxa
|
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
|
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 |
||||||||||||
|
|
|||||||||||||
|
Poxa
|
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
|
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
|
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
|
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
|
monly, la verdad q lo q dices, me suena bastante raro...
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
|
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
|
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! |
||||||||||||
|
|
|||||||||||||
|
| Temas de interés | |
|---|---|
| enviar mensajes de texto sin usar el teclado del celular. | |
| Enviar video en vivo por internet | |
| Enviar comandos por RS232 en visual basic | |
| Enviar comunicacion via RS232 a servidor | |
| 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 || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
Generada en = 0.14969 segundos, Consultas = 13
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
Generada en = 0.14969 segundos, Consultas = 13

