Niveles lógicos entre dispositivos 5 (V) y 3.3 (V)

5

Estoy usando un microcontrolador de 5V para comunicarme con un módulo Bluetooth que funciona a 3.3V.

He regulado la salida del riel del microcontrolador de 5V al riel de 3.3V para el módulo Bluetooth.

Ya que estoy usando un UART, necesito usar un pin TX para ir al RX. El problema que encontré aquí es que los pines del módulo Bluetooth no son tolerables a 5V. Así que decidí usar un divisor de voltaje para obtener 3.3V en la salida.

Ahora, tengo el UART TX trabajando en el lado del microcontrolador. Al conectarme al RX del Bluetooth, veo un 1 lógico en la salida.

Después de un poco de depuración, descubrí que, de hecho, el nivel lógico está cambiando entre 2.3V para la lógica 1 y 1.79V para la lógica 0 (pero esto no se registra como un 0). Supongo que 1.79V. Mirando los esquemas del módulo Bluetooth, encontré que el pin RX parece estar en estado triple entre 2 resistencias a VCC y GND. Necesito un 0V o menos que una cierta tolerancia para la lógica 0.

¿Qué puedo usar para obtener el nivel lógico adecuado en la salida para una comunicación serial adecuada?

    
pregunta Edwin

2 respuestas

6

Los caballos de batalla del cambio de nivel que uso son el TXB010X y el TXS010X de Texas Instruments. Aquí, la X puede ser 2, 4 u 8 y representa el número de puertos provistos. Ambos son bidireccionales, detectan automáticamente la entrada de quién y la salida de quién (y pueden mezclarse) y no necesitan componentes externos más que un par de tapas de desacoplamiento. El TXB es el 'estándar' y el TXS es una versión de drenaje abierto (para GPIO y SPI, use el TXB; para I2C, use el TXS).

Son un poco caros, pero nunca encontré una buena alternativa; NXP tiene una familia equivalente, pero requiere un par de resistencias por línea, lo que complica considerablemente el diseño.

    
respondido por el fceconel
1

Necesita un desplazador de nivel lógico

    
respondido por el Kvegaoro

Lea otras preguntas en las etiquetas