Algunos dispositivos esclavos I2C utilizan una configuración de hardware, lo que implica tener dispositivos esclavos que no están listos inmediatamente para un ciclo que mantiene SCK bajo hasta que lo están, y tener dispositivos maestros que liberan SCK esperan hasta que la línea realmente se levante antes de procesar el siguiente ciclo. Dichos dispositivos no coexistirán bien con un bus SPI.
Si el dispositivo I2C no acepta 00 o FF como un byte de direccionamiento, se puede evitar cualquier posibilidad de interferencia configurando el bus SPI para que el estado de los datos solo cambie cuando el reloj sea alto, o bien asegurándose de que el dispositivo I2C verá como caen los bordes de reloj que caen después de cualquier cambio de datos asociado. Dependiendo de a qué tipo de dispositivo SPI se está conectando, ese puede ser el estado natural de las cosas o puede ser algo incómodo. Si se trata de un SPI que golpea a los bits, generalmente no será difícil garantizar que la secuencia de altos y bajos en SCK / SDA reinicie continuamente el chip I2C sin que sea capaz de decir nada. Si se necesita usar SPI de hardware, pero se puede usar BitBang I2C, el cableado de SCK a otro que no sea el reloj SPI puede permitirle evitar problemas [por ejemplo, si uno conecta SCK a MOSI y SDA a MCK, entonces sería imposible que SCK vea más de dos ciclos consecutivos sin que se produzca un flanco ascendente o descendente en SDA mientras SCK estaba sentado arriba].
Una advertencia importante con este enfoque, sin embargo, es que muchos dispositivos I2C no especifican su comportamiento si las transiciones en SCK o SDA ocurren por encima de una cierta velocidad, y los dispositivos SPI a menudo se ejecutan muy por encima de las velocidades que los dispositivos I2C pueden acomodar. Si es práctico, puede ser bueno que I2C comparta un pin con SPI pero no ambos, o agregue algún hardware para garantizar que I2C no vea señales rápidas en SCL y SDA