Conexión de la interfaz I2C de un IC de 9 V a Arduino de 3,3 V DUE

Necesito conectar un TDA7312 a la interfaz I2C de Arduino DUE a través de SDA/SCL.

TDA7312 funciona con 9V, Arduino DUE es 3.3v. ¿Es posible conectarlo de forma segura, sin quemarlo? ¿O qué debo usar (quizás el cambio de nivel?), ¿Cuál es la forma correcta de hacerlo?

Vi algunos esquemas para 5V <-> 3.3V, pero nada para voltajes más altos.

Respuestas (4)

Las dos entradas I2C 'BUS'/salidas de drenaje abierto tienen V I H de 3 V mínimo, por lo que deberían funcionar bien directamente desde una salida lógica de 3,3 V (I2C pullup a 3,3 V). Esas deberían ser las únicas conexiones entre los dos dispositivos (aparte de tierra).

ingrese la descripción de la imagen aquí

Gracias, eso lo aclara. Pondré resistencias pullup a 3.3v y eso es suficiente para no quemarlo.
Creo que en el diseño de referencia, el Due tiene 1,5k pull-ups a bordo en las líneas TWDx/TWCKx. (¿El valor bajo es presumiblemente para la velocidad?) En cualquier caso, no tener pull-ups no dañará nada, solo el i2c no funcionará.

Recuerde que el bus I2C se especifica como colector abierto, consulte el enlace de wikipedia para obtener más información . Esto significa que no hay un controlador de lado alto real interno en ningún dispositivo I2C. Su tablero debe llevar las líneas del bus a cualquier voltaje que sea compatible con sus dispositivos a través de resistencias, cada dispositivo puede configurar las líneas a alta impedancia (para leer el valor de la línea o escribir un '1') o tierra la línea (para escribir un '0'). El mínimo V I H aparentemente es de 3 V para el TDA7312, lo que significa que cualquier voltaje superior a 3,0 V debe leerse como un '1'. Dado que 3,3 V > 3,0 V, y su Duo puede tolerar entradas de 3,3 V, una resistencia pull-up a la línea de alimentación de 3,3 V debería hacer que el bus sea compatible con ambos dispositivos sin necesidad de ninguna conversión de nivel lógico.

Desde el sitio web de NXP:

AN10441 - Técnicas de cambio de nivel en el diseño de bus I2C .

Usé el circuito para conectar un Arduino de 5 V a un Wii Nunchuck de 3,3 V. Trabajado como un encanto.

¡Bienvenido a EE.SE, Seawolf! El enlace que publicaste es excelente, pero desafortunadamente, las publicaciones de solo enlaces como la tuya no ocupan un lugar muy alto en los sitios de StackExchange . ¿Le importaría dar más detalles sobre la solución que utilizó para conectar los dispositivos? Tal vez solo extraer uno o dos párrafos relevantes sería suficiente. ¡¡Gracias!!

El cambiador de nivel bidireccional como el que se muestra en el esquema de Sparkfun debería funcionar para su aplicación, porque el alto voltaje está limitado por la clasificación de voltaje máximo del MOSFET.