Reutilice el cable USB para llevar I2C

Me preguntaba si sería posible conectar un extensor IO (MCP23017-E/SP) a un ATMega32u4-AU a través de un cable USB.

Supuse que si conecta el pin SCL al Data+ del USB y el pin SCA al Data- del USB, conecte a tierra el 4.° pin y encienda el 1.°, debería funcionar.

¿Estoy en lo correcto con esto?

Ejemplo de imagen en el esquema de Kicad:

ingrese la descripción de la imagen aquí

Debería funcionar para cable de corta distancia. La capacitancia del bus se puede abordar reduciendo la velocidad I2C al mínimo si es posible.
@Umar, ¿de qué distancia estamos hablando aquí? Ja ja. Estaba planeando que pasara por un cable de aproximadamente 6 pulgadas a 1 pie.
Eso debería hacer.

Respuestas (2)

No debe haber ningún problema. El Nunchuk original para el sistema de juego Nintendo Wii se conectaba al Wii Remote a través de un cable de 1 a 1,2 m ( 3,5 a 4 pies ) de largo, muy similar a un cable USB (conector de seis pines, pero solo se usaron cuatro). El Nunchuk contenía un joystick de 2 ejes, dos botones y un acelerómetro de 3 ejes ±2g y usaba una interfaz I2C para comunicarse con el control remoto, funcionando a 100 kHz como se documenta aquí y aquí . Sparkfun incluso vende una pequeña placa de conexión para aficionados que construyen sus propias interfaces.

¡Perfecto! ¡Muchas gracias! Lo usaré para ejecutar una matriz de 5x7 para un teclado :) debería ser fácil. Podría complicarse más si hago LED en un lote futuro. ¡Pero muchas gracias! :)

¿Dónde están las resistencias pullup para SDA y SCL?

El problema con I2C es la capacitancia del cable (ya mencionada), la diafonía entre SDA y SCL, las resistencias pullup y las diferencias de voltaje.

¿Ambos funcionan a 5V? Entonces eso está bien. Puede usar resistencias pullup en el Maestro de 2k2 para SDA y SCL.

Es solo un cable corto, por lo que debería ser posible. Puede probar el escáner MultiSpeed ​​I2C . Funciona a 400kHz, luego a 100kHz o es muy seguro de usar.

lo he actualizado Se agregaron resistencias pullups solo para estar seguros. Ya estará funcionando a 5v. Así que no debería haber ningún problema en absoluto.
No hay garantías, pero debería funcionar. Ejecute esa prueba con 400kHz. Como plan de respaldo, se puede usar Wire.setClock para reducir la velocidad a 50 kHz.