cambio de nivel I2C

11

Actualmente estoy diseñando un circuito que puede registrar datos de un sensor y guardar los datos registrados en una EEPROM. Mis dos dispositivos (EEPROM y para propósitos de prueba un RTC) están conectados a través de un bus I2C a un PIC16F887 µC. Sin embargo, el rango operativo de voltaje de dos dispositivos no es el mismo (5v para EEPROM, 3.3 para RTC) y mi batería es una batería de 9V.

Por lo tanto, diseñé un circuito electrónico con un cambiador de nivel compuesto de MOSFET para el cableado SDA / SDL. Además de eso, agregué dos reguladores de voltaje LM317 para alimentar los dispositivos (9V- > 3.3V y 9V- > 5V). Como no soy un experto en diseñar tales cosas, apreciaría que pudieras echar un vistazo a lo que hice y decirme si hice algo horriblemente mal.

    
pregunta Al_th

2 respuestas

3

A pesar de otros comentarios, la solución en sí está bien. Aunque veo algunos problemas menores.

  1. Las resistencias pull-up de 10k en el bus no son lo suficientemente rígidas, especialmente si desea utilizar velocidades de bus más altas.

  2. Necesita capacitores de desacoplamiento de entrada y salida en sus reguladores lineales y circuitos integrados digitales. 100nF es un buen comienzo para los circuitos integrados digitales, y para los reguladores lineales, 100nF en las entradas y 1μF en las salidas.

respondido por el Adam Lawrence
-4

Sí, has hecho cosas en tu esquema que están terriblemente mal. Para nivelar adecuadamente los niveles de voltaje, consulte La dirección del esclavo I2C no se reconoce (a veces) El MAX3373E IC se utiliza para el cambio de nivel. Tenga en cuenta que, las resistencias pull-up se muestran en el SDA & Líneas de SCK. Sin embargo, cuando se usa MAX3373E, no se requieren resistencias de extracción ya que la MAX3373E tiene incorporadas en ambos lados de las líneas de E / S. También hay otros circuitos integrados disponibles para el cambio de nivel. Puedes ir a Digi Key o Mouser y buscar.

    
respondido por el Suirnder

Lea otras preguntas en las etiquetas