¿Cómo conectar un W25Q64 3.3 SPI Flash a un Arduino Mega de 5V?

Necesito memoria para leer, para mi proyecto. Primero tenía la intención de usar una tarjeta SD, pero ahora descubrí que una Flash SPI W25Q64/128 es más práctica, ya que no necesito escribir datos.

Sin embargo, este Flash W25QXX funciona con SPI de 3.3V y el Arduino Mega tiene un SPI de 5V.

Buscando, encuentro muchas soluciones, pero dos que funcionan son bastante diferentes:

  • Usar un divisor de voltaje, que tiene la ventaja de un circuito simple, pero tiene problemas de que pasa menos corriente. Sin embargo, de acuerdo con este enlace , al final, alguien lo arregló fácilmente usando valores de resistencia mucho más pequeños.
  • Usar un circuito de búfer, que tiene la ventaja de ser probablemente más seguro, pero significa que se agregarán algunos circuitos integrados bastante grandes. En este enlace se menciona un circuito ; créditos a Steve Marple.

Pregunta: ¿Por qué debo (o no debo) usar este SPI Flash con 5V usando voltajes divisores de resistencia pequeños?

(Parece que si solo quiero agregar solo este Flash SPI de 3.3V en el bus SPI, puedo usar el divisor de voltaje usando resistencias pequeñas).

ACTUALIZAR

Después de la respuesta de Marcus Müller, encontré la siguiente página que brinda muchos antecedentes (su solución es, de hecho, la que tiene más ventajas): how-to-interface-a-5v-output-to-a-3-3v-input

Respuestas (1)

Suponiendo que no planea usar el chip en nada más que SPI estándar (no Dual- o QSPI), ¡entonces todos los pines de señal son unidireccionales!

Eso significa que en la dirección Arduino->Flash, un divisor de voltaje que divide 5V a 3.3V es suficiente (coloque cerca del extremo receptor, por lo general). Esto se aplica al reloj y al pin de datos de salida maestra, entrada de esclavo (MOSI) (llamado "Entrada de datos" en la hoja de datos de la memoria flash).

En la dirección opuesta (MISO / Salida de datos), es poco lo que puede hacer para garantizar una transmisión confiable, excepto el búfer. Un búfer no tiene que ser grande; de ​​hecho, un paquete de doble NPN funcionaría totalmente con dos resistencias, y eso requeriría milímetros cuadrados de un solo dígito en SMD.

Es posible que simplemente desee invertir 33 ct en algo como un 74LVC1T45 . Esa cosa tiene un tamaño de 1,7 × 1 mm², incluso en su variante más grande; Dudo que sea un factor limitante para su circuito.

Gracias por esta información. Ese chip de búfer parece estar bien; Por cierto, cuando me refería a circuitos integrados grandes, me refería más a un circuito integrado DIP de 16 pines. Espero que este sea soldable por mí (sin experiencia en soldadura SMD hasta ahora). Por cierto, también descubrí que reducir la velocidad SPI podría ayudar mucho, y la velocidad que necesito es de aproximadamente 31 kbps (muy lenta).
dado que su código arduino es lo que define el reloj SPI, sí, esa es una opción fácil. La robustez siempre aumenta con la velocidad reducida, pero realmente no se beneficiará mucho al reducir la velocidad de reloj de, digamos, 100 kHz a 31 kHz: funciona de manera confiable o no.
Pensé que la razón principal del búfer es evitar problemas de tiempo y puedo imaginar que los problemas de tiempo son menos problemáticos con velocidades más lentas. De todos modos, ordenaré el flash y ordenaré esos búferes de todos modos, ya que en el futuro podría necesitarlos para otros proyectos de todos modos.
Ah, y no tengas miedo de los circuitos integrados SOT-26-6 empaquetados como este . Los pines todavía están separados aproximadamente un milímetro entre sí, lo que se puede hacer sin manos demasiado firmes ni alambre magnético (suelde los pines de las tapas de desacoplamiento directamente al IC)
@MichelKeijzers el trabajo del búfer es poner la señal de un rango de 0-3.3V a un rango de 0-5V. Si la salida ALTA del Flash IC es de 3 V, eso está demasiado cerca del límite de decisión ALTO de la lógica de 5 V del arduino. Agregue una pequeña caída de voltaje en la línea entre el emisor y el transmisor, y un poco de ruido, y de repente obtendrá cambios de bits aleatorios.
@MarcusMiller Intentaré soldarlo ... por cierto, eventualmente voy a (dejar) producir una PCB, pero para la configuración de la placa de pruebas, la soldaré directamente (o usaré un adaptador de placa de pruebas SOT, no estoy seguro de si encajará) Ese caso).
Y gracias por la explicación, supongo que siempre necesito el búfer (ya que agregaré muchos otros circuitos alrededor de esto, puertos MIDI, 7-12V RS485 para DMX, etc.
:) ¡Frío! Ah, y en una PCB, estos son súper fáciles de soldar: fije el primer pin, fije el pin en el extremo opuesto del IC, suelde el resto. No es difícil evitar los puentes de soldadura entre pines que tienen un paso de 1 mm, especialmente si su PCB tiene una máscara de soldadura entre ellos.
¿Qué es "33ct"?
Realmente no necesita un búfer en MISO a velocidades de reloj razonables, a menos que algo esté cargando excesivamente la salida del chip flash. En el peor de los casos, el VIH de un ATmega de 5v es 3v0 y un dispositivo CMOS debería conducir básicamente al riel 3v3.