Conexión M.3 de la tarjeta SD de 3.3V con salida a ATmega328P

2

Estoy intentando escribir datos en una tarjeta SD desde un microcontrolador ATmega328P sin suerte. He reducido la fuente del problema a la salida MISO de mi tarjeta SD panel de distribución , que no parece para poder tirar todo el camino hasta 3.3V. Esto es fácil de ver en un osciloscopio:

Enlaimagendearriba,latarjetaSDestáintentandoresponderalmaestrocon0xFF.Sinembargo,solopuedealcanzarhasta500mV.Acontinuaciónsemuestralaseñaldelreloj,queutilicéparacomprobarqueelosciloscopioestabafuncionando.

Mi pregunta es: ¿Cuál podría ser la fuente de este problema? Siento que la respuesta es mirarme directamente a la cara. Tal vez debería tomarme un descanso y volver con un par de ojos nuevos.

Hardware:

  • Tarjeta SD de 16 GB - TS16GSDHC10E
  • Sparkfun Breakout Board (www.sparkfun.com/products/11403)
  • ATmega328P en Arduino

Más información:

  • La tarjeta SD funciona con un pin de suministro de 3.3V en Arduino.
  • Las señales MOSI / SS / SCK de 0-5V se reducen a 0-3.3V por medio de un divisor resistivo (560Ω sobre 1.1kΩ, creo).
  • Algunas fuentes recomendaron una resistencia de pull-up grande (~ 50k) en MISO. Esto no parece hacer nada, excepto agregar un desplazamiento de 3.3 VCC a MISO. Por extraño que parezca, la eliminación de la resistencia no eliminó el desplazamiento de CC.
pregunta Ryan

2 respuestas

1

¿Estás seguro de que todos tus motivos están conectados? La traza del alcance parece que algo está flotando.

Lo estás haciendo mal con el divisor resistivo. Los divisores se ven afectados por la carga, y eso es probablemente lo que está sucediendo aquí.

Desafortunadamente, la MCU en el Arduino no admite salidas de drenaje abiertas en el modo SPI. Usted podría implementar SPI con una salida de drenaje abierto y luego simplemente jalar las líneas MOSI y SCLK hasta 3.3V. Alternativamente, use un IC de cambio de nivel dedicado o si es solo un proyecto de pasatiempo, una resistencia en serie probablemente estará bien. En realidad, también podrías usar un diodo Zener.

En resumen, su posible divisor es probablemente el problema.

    
respondido por el user
0

ConseguíesteesquemaconellectordetarjetasSDcompradoatravésdeeBay.Porfavor,nodivisorderesistenciadiferenteparavariassalidasMCU(entradasdelectordetarjetaSD).Mipreferenciaesusaralgún"cambiador de nivel" como 74HC4050 cuyo pin de suministro (Vdd) tiene que estar conectado a + 3.3V (no + 5V!).

    
respondido por el prasimix

Lea otras preguntas en las etiquetas