Operando un módulo de tarjeta SD con solo dos pines

3

Mi módulo de tarjeta SD estándar usa cuatro pines: SDCS, MOSI, SCK y MISO. Sin embargo, solo puedo dedicar dos pines de mi ATtiny85 para operarlo. ¿Hay alguna manera de hacer esto sin usar más circuitos integrados, como por ejemplo un segundo microcontrolador más grande?

Ten en cuenta que:

  • Solo necesito escribirle.
  • Puedo hacer tantas pruebas como sea necesario al inicio, pero luego tiene que trabajar solo con solo dos pines.
  • Puedo agregar uno o dos componentes electrónicos discretos, siempre que sean pocos y pequeños.
  • Los otros pines son tomados por un módulo GPS, que usa una serie (RX-TX) y un cristal.
pregunta AvidScifiReader

4 respuestas

5

Escenario 1:

Aún debe leer la tabla de asignación de archivos de la tarjeta SD a menos que:

utiliza su propio formato de tarjeta RAW SD

Entonces no necesitas el pin MISO. Entonces, en lugar de cuatro pines para la tarjeta SD, necesitas tres. Es posible establecer un fusible en ATtiny85 que lo hará

gire el pin de restablecimiento a un pin de E / S normal.

Ahora tiene tres pines que puede usar para hablar con la tarjeta SD. No podrá utilizar un programador de ICSP después de hacer eso.

Escenario 2:

Comparta los pines de la tarjeta SD con GPS.

Conecte el pin RX con SCK. Cuando hable con la tarjeta SD, el GPS recibirá basura y la ignorará. Cuando hable con el GPS, mantenga el pin CS alto y la tarjeta SD lo ignorará. Conecte el pin TX a través de una resistencia de 10k al pin MOSI. Cuando hable con la tarjeta SD, use el pin MOSI como salida. La comunicación no se interrumpirá con el GPS, porque está detrás de la resistencia. Cuando necesite escuchar el GPS, mantenga el pin MOSI como entrada y CS alto. La tarjeta SD ignorará las cosas provenientes del GPS en ese pin.

Escenario 3:

Una combinación de lo anterior

Escenario 4:

Solo usa ATtiny84; Es casi lo mismo que ATtiny85 con más pines y la misma huella en un paquete QFN, si te importa el tamaño.

    
respondido por el Cano64
3

Es probable que esto no funcione con una interfaz SPI reducida. Es posible que pueda utilizar un chip de puente I2C a SPI, pero las piezas no son baratas y probablemente sean "grandes" para su diseño.

    
respondido por el spearson
3

Método simple:

Este tipo de bus SPI puede compartir pines con otros dispositivos SPI. MISO, MOSI y SCK se comparten, y cada componente necesitará su propia línea CS. ¿Tiene otros dispositivos SPI en su diseño que puedan compartir el bus de la tarjeta SD?

Otro método:

En algunos dispositivos SPI, la línea CS se puede atar a un nivel bajo para que el bus esté siempre habilitado. Sin embargo, la mayoría requiere un borde inferior en la línea CS para marcar el inicio de la transferencia de datos, y un borde superior para señalar el final de un comando.

  • Si puedes vincular el CS bajo, entonces eso omite un pin.

  • Si solo está escribiendo, puede omitir la línea MISO. Pero ¿estás realmente solo escribiendo? Generalmente, hay operaciones de lectura como parte de la sobrecarga, aunque solo sea para verificar que la tarjeta SD esté disponible / asentado / etc.

  • El SCK y MOSI siempre son necesarios.

Puede que funcione :) Pero si tu dispositivo necesita la conmutación de CS, no veo una forma sencilla de tener lo que quieres.

    
respondido por el bitsmack
3

Deshazte del cristal. El oscilador interno es bastante preciso para muestrear una señal serial de 9600 baudios del GPS, y usted está dominando el reloj en la interfaz SPI, por lo que la temporización tampoco es crítica allí. Si está buscando una marca de tiempo de reloj de pared precisa para el registro, es difícil superar una señal de GPS. Sí, puedes usarlo para corregir la deriva. Sin embargo, incluso sin eso, los osciladores internos suelen ser "lo suficientemente buenos", a menos que esté haciendo un piloto automático de precisión o algo así.

    
respondido por el Karl Bielefeldt

Lea otras preguntas en las etiquetas