¿Cómo funciona este convertidor de nivel lógico en el HUZZAH de Adafruit?

0

Estoy ocupado con un proyecto en el que conecto una MCU de 5V (Amtel ATMega328) a una 3V (ESP8266) a través del puerto serie. Obviamente necesito algunos niveles lógicos convertidos. Miré los esquemas de varios de código abierto en el mercado para comprender cómo otras personas abordaron este problema. En una nota al margen, construí un circuito divisor de voltaje solo para comenzar con algo básico (solo quiero estar seguro de que entiendo el concepto).

Así que revisé el convertidor de nivel lógico de FreeTronics que usa un BSS138LT3G para la conversión de nivel lógico. Esto tiene algún sentido, ya que parece que este diseño está utilizando un transistor con una baja caída para convertir entre los niveles de voltaje. Puede encontrar el esquema para convertidor de nivel lógico de freetronics aquí .

Luego miré el Adafruit HUZZAH schematic la placa espera encontrar uno de los siguientes componentes: un regulador de voltaje o un transistor MOSFET o divisor de voltaje de algún tipo. Bueno, encontré el regulador de voltaje SPX3819 en la placa, pero luego me di cuenta de que los pines de serie no usaban esto en absoluto ...

Cuando estudié el esquema, descubrí que un diodo 1N4148 estaba conectado al pin FTDI RX (recibir). Nunca me di cuenta de que podrías usar un diodo de esta manera (estoy aprendiendo). Entonces, dado que este es un diodo de alta velocidad, obviamente causa una caída de voltaje de 5V a alrededor de 3V debido a la conmutación de alta velocidad, casi como lo haría una función PWM (la conjetura educada podría estar equivocada). Parecía simple y elegante, pero luego noté que no hacían lo mismo en el pin FTDI TX (transmisión).

Entonces, en este punto estoy confundido, ¿por qué convertiría una entrada de 5 V al pin RX a 3,3 V y luego no lo convertiría en el pin saliente? Seguramente un puerto serie no puede acomodar ambos voltajes a menos que esté especificado para manejarlo. Enviar 5V y recibir 3V se sintió mal.

Ahora estoy especulando en este punto pero, según tengo entendido, las transmisiones de datos en serie son esencialmente bits que se transmiten. Un 5V está encendido y 0V está apagado. Sin embargo no creo que sea realista. ¿Cómo puedo tener siempre 5V y 0V con componentes que se calientan, variación de resistencia y todos los demás factores en la electrónica? Sospecho que este diseño funciona porque 3V está por encima de la marca de 2.5V y la MCU de AMTEL reacciona a este nivel de voltaje como si estuviera transmitiendo el bit ON / 1 / YES.

Ahora, si mi teoría es válida, ¿existen riesgos al realizar comunicaciones en serie entre un chip AMTEL y un chip ESP a través de un serial de esta manera?

O tal vez solo estoy enojado y me falta algo muy obvio.

    
pregunta Namphibian

2 respuestas

2

Cada vez que el dispositivo de 5V transmite, tira del bus hacia abajo y el diodo conduce a 0.5 ~ 7V, cuando libera o tira del bus hasta 5V, el diodo bloquea la corriente y un resistor en el 3.3V. el dispositivo debe empujar el bus en el lado de 3.3V hacia atrás a 3.3V.

Cuando el dispositivo de 3.3V transmite, el "ALTO" (alrededor de 3.3 V o un poco menos) supuestamente se encuentra dentro de las especificaciones de ATMega328 para VinHIGH (3.0V a 5V) y el "LOW" está dentro del umbral de VinLOW (1.5V a 0V).

p.s .: los riesgos que puedo ver son tener problemas con el bus si ESP VoutHIGH no es lo suficientemente alto, si el diodo no es lo suficientemente rápido o si la resistencia no es lo suficientemente fuerte como para empujar el bus a la velocidad que necesita. Aunque no creo que ninguno de estos se arriesgue a quemar los puertos ...

    
respondido por el Wesley Lee
0

Para agregar a la respuesta de Wesley, la resistencia en el lado de 3.3V del diodo es una resistencia de recuperación interna en el pin RX del ESP8266. Este pin está conectado al pin RXD en el módulo de distribución ESP12 que Adafruit usa en el Huzzah.

También, ViL para el ESP8266 es 0.25Vcc, o 0.825V para Vcc = 3.3V. Por lo tanto, un voltaje de 0.5 ~ 0.7V en el lado de 3.3V del diodo todavía cuenta como una entrada BAJA.

    
respondido por el Zach Morris

Lea otras preguntas en las etiquetas