ESP8266 3.3V y ADAFRUIT TRINKET 5V Comunicación I2C

Intento aprender I2C con este diagrama como ejercicio. Quiero leer mis eventos ESP8266 IO de mi baratija adafruit de 5V.

Maestro I2C ESP8266ex

Operating Voltage 2.5 V ~ 3.6 V
Operating Current Average value: 80 mA

BARATIJA ESCLAVA I2C 5V

On-board 3.3V or 5.0V power regulator with 150mA output capability and ultra-low dropout. 
Up to 16V input, reverse-polarity protection, thermal and current-limit protection.

Leí en i2c-bus.org nivel de voltaje

Dado que I2C es un concepto de drenaje abierto, el nivel de VCC como tal no es crítico para la operación siempre que todos los componentes en el bus puedan aceptar el voltaje en los pines IO y puedan detectar los niveles lógicos.

Parece que no es el caso aquí, el ESP8266 solo acepta 3.6V máx. y la baratija usa 5V, luego busco una solución: guía de conexión del convertidor de nivel lógico bidireccional Con mi Raspberry como fuente de alimentación de 3.3V para LV y el pin Trinket 5V OUT como fuente de alimentación de 5V para HV.

Este tutorial usa el canal N BSS138 pero no tengo este MOSTFET solo el canal N 5ln01sp

Este es mi esquema por el momento:ingrese la descripción de la imagen aquí

¿Puedo usar la instancia MOSFET 5ln01sp del BSS138? (Supongo que si después de haber consultado la ficha técnica de cada uno pero no estoy seguro por mi bajo nivel de conocimientos.)

Como principiante, ¿mi esquema podría funcionar sin inconvenientes? ¿Olvidé algo?

Gracias por tu ayuda y tu tiempo.

Respuestas (2)

Respuesta corta:
definitivamente se ve bien


Respuesta larga:

Aquí está el diseño de referencia o la solución para el caso similar de NXP:
https://www.nxp.com/docs/en/application-note/AN10441.pdf

ingrese la descripción de la imagen aquí


Una opción era buscar los pines I2C tolerantes a alto voltaje. Normalmente, en la mayoría de los MCU puedes encontrar esa información. Los pines I2C serán tolerantes a un voltaje más alto que el VDD del sistema. Ejemplo: MCU STM32F405:

ingrese la descripción de la imagen aquíEn su caso, no pude encontrar la información relacionada en la hoja de datos .


Mirando en la hoja de datos de la parte 5LN01SP:

ingrese la descripción de la imagen aquí

  • El voltaje de umbral máximo de la puerta es de 1,3 V (tenemos un buen búfer de 3,3 V - 1,3 V = 2V)

  • La caída de tensión directa del diodo del cuerpo es de 0,85 V típica (1,2 V máximo), aún así tenemos un búfer garantizado de 2,1 V (3,3 V - 1,2 V).

  • La resistencia en serie apenas importa si este es el único dispositivo en el bus I2C.

  • a 100 Hz o incluso unas decenas de KHz de frecuencia de reloj, no espero ningún problema como tal.

muchas gracias por toda esta informacion.

No necesita los cambiadores de nivel con el ESP8266; hay dos formas diferentes de hacerlo directamente (SDA conectado a SDA, SCL conectado a SCL):

  1. conecte las resistencias pull-up I2C a 3,3 V desde el ESP8266. Esto funciona porque el bus I2C es de drenaje abierto, por lo que la oscilación de la señal será de 0 V a 3,3 V. El Vih (umbral alto de entrada) del ATTiny85 es 0,6 x VCC, por lo que Vih es 3,0 V y funcionará (apenas). Usaría alrededor de 2K a 4.7K resistencias pull-up en el bus I2C para acelerar el tiempo de subida. Solo tendrá 0,3 V de margen por encima del umbral de Vih, por lo que puede obtener resultados erráticos debido a las fluctuaciones en la energía de la sección WiFi.

  2. Conecte las resistencias pull-up a 5V. Los pines de E/S del ESP8266 son tolerantes a 5 V, EXCEPTO LOS PINES CONECTADOS AL FLASH. El CEO de Espressif dijo que las E/S ESP8266 son tolerantes a 5V en 2016, pero los chips Flash en los módulos NO son tolerantes a 5V. Ejecuté señales de 5V en un GPIO ESP8266 y lo manejó bien.

Aquí está la publicación del CEO de Espressif que indica que el ESP8266 tiene pines tolerantes a 5V: https://www.facebook.com/groups/1499045113679103/permalink/1731855033731442/

No sé si el Ras Pi tiene pines tolerantes a 5V, así que solo intentaría la primera solución para conectar directamente un dispositivo I2C de 5V al Pi.