Tener muchas dificultades para compartir una tarjeta uSD entre dos dispositivos (Atmel micro que usa el SPI y la cámara). Solíamos hacer esto usando relés y todo funcionaba bien, pero las tarjetas se volvieron más y más rápidas hasta ahora, donde tenemos muchos fallos. Por lo tanto, hemos estado evaluando utilizando multiplexores digitales. Inicialmente probamos el FSSD07 Fairchild Mux, pero tuvimos problemas cuando el uSD se estaba cambiando de 3.3 a 1.8 V, ya que los datos y las líneas del reloj cambian de voltaje, pero no el riel de suministro. Esto arruinó los umbrales de alto y bajo nivel. Luego creamos una pcb para intentar usar el mux TI TS3A27518E. Las cosas fueron definitivamente mejores, pero todavía estamos teniendo problemas con velocidades de bus de más de 50MHz. Todas las líneas SD, aparte de VDD y VSS, pasan a través de este Mux (6 canales). VDD se cambia por separado. Mirando las señales en el osciloscopio, el reloj a veces comienza a verse desagradable a velocidades más altas. Parece que puedo tener dos problemas:
Podría haber alguna capacitancia parásita que provoque la rotación de los bordes de la señal del reloj, que a la velocidad más alta retrasa los tiempos de subida y de caída lo suficiente como para que el reloj cambie de estado antes de alcanzar los niveles lógicos correctos (esto se presenta en el osciloscopio como un reloj de menor amplitud con un desplazamiento de CC). El PCB es de aproximadamente 80 mm x 24 mm, 4 capas (superior, gnd, pwr, inferior) y las pistas son de 0,5 mm siempre que sea posible, de lo contrario, tienen un espesor de 0,3 mm. Las resistencias de la pista de PCB son inferiores a 80 mili-ohmios, por lo que no debería ser un problema. La resistencia de mux es de 300 mili-ohmios y dado que a veces veo una constante de tiempo de 10 nS, que equivaldría a aproximadamente 5 nF de capacitancia parásita. Se supone que la capacitancia del interruptor es de aproximadamente 21pF. Habría pensado que 5nF es demasiado grande para la capacitancia parásita.
En segundo lugar, a veces parece que el reloj está recibiendo alguna interferencia en la reflexión (es cierto que no hice una impedancia específica que coincida con las pistas de mi PCB).
Realmente no estoy muy seguro de si me estoy aproximando a esto de la manera correcta, ya que no sé mucho acerca de los requisitos de SD. Al principio pensé que el desplazamiento de CC en el CLK estaba causando todos los problemas, pero luego hay veces en que veo un desplazamiento de CC y, sin embargo, la cámara escribe en la tarjeta sin ningún problema. Nos gustaría que esto funcionara con una variedad de cámaras que pueden manejar velocidades más altas. Encontramos que las cámaras Nikon tienen la mayoría de los errores, mientras que las cámaras Canon y Fuji parecen ser mucho mejores. Realmente necesitamos estar seguros de que tendremos cero errores de interfaz. ¿Alguna idea sobre lo que puedo hacer para que la SD funcione a velocidades de 100 MHz CLK?
Limitado a la cantidad de fotos que puedo insertar, así que aquí hay una captura de pantalla que muestra las capas de PCB y la mitad importante del esquema.
EstasegundaimagenmuestraenlapartesuperiorderechaelpuntodondefallalacomunicaciónSD(cuandocambiaalavelocidadmásalta).DebajohayfotosdelPCBdondepaséporaltoelinterruptorconresistenciasde10ohmiosyluegotambiénconenlacesdecables.EnlaRHSestálaseñalCLK(Ch3)cuandoestáconectadaalaNikonD5300(fallasdecomunicación).Ch1eselmismoCLKenlaentrada(conectadoaJ5).ApartirdeesomehacepensarquelacámaraestáhundiendolaseñaldelrelojeneluSD.ElvoltajedeCLKesmásgrandequeelladoJ5.
El problema se exacerba cuando usamos un extensor de tarjeta SD entre la cámara y mi PCB. Podríamos solucionar esto al tener la placa en la cámara y luego colocar un cable entre la micro y esta placa, pero eso hace que las cosas sean un poco más complicadas.
Si no puedo encontrar una solución de hardware, ¿es posible escribir desde la micro a las tarjetas SD para obligarlas a operar a una velocidad menor cuando el uSD se conecta a la cámara?
Estoy ansioso por ver qué riqueza de información puedo recuperar :)
¡Muchas gracias!
Paul