Estoy tratando de conectar un dispositivo 3.3VI 2 C a un Arduino de 5V.
No tengo ningún problema con la línea SCL. Puedo usar un divisor de voltaje simple pero tengo un problema con la línea SDA ya que es bidireccional.
No estoy del todo seguro de cómo manejar esto. Sin embargo, he agregado un par de diodos, con un divisor de voltaje en el lado de entrada esclavo y nada más en la entrada maestra.
¿Hay alguna otra solución?
Respuestas:
Un buen documento sobre el tema es la palanca de cambio de nivel bidireccional para el bus I2C y otros sistemas que utiliza un solo mosfet como palanca de cambio de nivel bidireccional.
fuente
Para ampliar la respuesta de sivu, este es un uso común para los llamados "conmutadores de bus", que son básicamente MOSFET controlados por lógica. El uso de MOSFET discretos tiene algunos inconvenientes (la capacitancia parásita / acoplamiento capacitivo es uno) y puede ser complicado elegir un buen MOSFET. Los interruptores de bus están optimizados para su uso en circuitos lógicos de alta velocidad.
Varios fabricantes los fabrican, incluidos Fairchild, TI, IDT y Pericom. Echa un vistazo a la NC7SZ384 .
Vea las siguientes notas de aplicación, entre otras:
fuente
Muchos Arduino tienen soporte integrado para funcionar a 3.3 V. En realidad, todos pueden funcionar a 3.3 V y el esquema del chip FTDI explica cómo hacerlo en un ejemplo. Paul, quien fabricó el Teensy USB Arduino , me sugirió que pudiera unir el cable USB y suministrar un voltaje de 3.3 V en lugar de la línea V CC del cable. Podrías probar esto. Pero también hay otras opciones.
Por último, tenemos una discusión que podría interesarle sobre esto aquí en Chiphacker sobre soluciones unidireccionales y bidireccionales para la disminución de voltaje. Este artículo sobre SparkFun mencionado por todbot es útil, al igual que la discusión sobre el artículo bidireccional MOSFET vinculado desde SparkFun. Para resumir el artículo de SparkFun:
fuente
Hay circuitos integrados disponibles específicamente para I2C de cambio de nivel:
No sé qué tipo de restricciones tienes en tu diseño, pero creo que usar un IC dedicado sería más fácil que encontrar tu propia solución.
fuente