Sé que hay preguntas similares en el sitio, pero quería plantearlo desde una perspectiva algo diferente.
- Tengo un dispositivo de 5V (Dispositivo A) que puede operar a 3.3V.
- Tengo un dispositivo de 3.3V (Dispositivo B) que no tiene entradas tolerantes de 5V.
- Quiero conectar estos dos dispositivos para comunicarse a través de una interfaz SPI.
- Quiero poder operar el Dispositivo A selectivamente a 5V o 3.3V.
- El dispositivo B tiene alimentación independiente y siempre funciona a 3.3V.
Sé que puedo usar (y he usado con éxito) un búfer (por ejemplo, 74HCT125) alimentado por el mismo voltaje que el Dispositivo A para aumentar las señales del Dispositivo B hasta 5V. Sin embargo, no estoy seguro de cuál es el mejor enfoque para la otra dirección (es decir, reducir las salidas del Dispositivo A a un nivel adecuado para el Dispositivo B).
He leído el Tutorial de Sparkfun sobre el tema. Ofrecen algunas formas de abordar el cambio de nivel "hacia abajo". ¿Cuál es la forma preferida de manejar este aspecto? Desde que estoy usando SPI aquí, el clásico solución MOSFET para I2C parece Me sobra ya que no necesito bidireccionalidad. Me gusta el enfoque de resistencia en línea por su simplicidad, pero no estoy seguro de cómo dimensionar la resistencia. Los pines CLK y MOSI del dispositivo B se especifican con V_IH_min = 0.7 * V_cc = 2.31V, V_IH_max = V_cc + 0.3 = 3.6V y con una corriente de fuga de entrada de max 0.5 uA.
Según mis cálculos, esto significa que debo bajar entre 1.4V y 2.6V en el caso (1) donde el Dispositivo A está operando a 5V y no más de 1V en el caso (2) donde el Dispositivo A está operando a 3.3V . Si asumo que la corriente de fuga de 0.5 uA es responsable de la caída de voltaje, entonces el caso (1) requiere una resistencia entre 1.4 / 0.5e-6 = 2.8 MegOhm y una resistencia de 2.6 / 0.5e-6 = 5.2 MegOhm (!). Y el caso (2) requiere una resistencia no menor a 2 MegOhm. Por lo tanto, el caso (2) está dominado por el caso (1), y debo elegir una resistencia en algún lugar entre el rango calculado, como 3.3 MegOhm, por ejemplo.
Ese valor me parece descomunal (especialmente cuando el tutorial de SF muestra valores como 10 kOhm) ... y eso es solo para la corriente de fuga de entrada max ( no se especifica un mínimo o típico) ¿hay algún error en mi razonamiento o en mis cálculos, o no es esta la forma preferida de conectar los dispositivos (por ejemplo, el método de diodo)?
Si importa, un caso del Dispositivo B en el que estoy pensando es en un 23K256 SRAM , pero estoy tratando de dar cuenta de una variedad de dispositivos.