Primero quiero considerar I2C vs SPI en términos generales.
I2C requiere resistencias pull-up para crear el estado inactivo de 3.3V o 5V. Cuando cualquier dispositivo (ya sea reloj o datos) tira de esa línea a un nivel bajo, colocará efectivamente la resistencia de levantamiento entre VCC y GND. Dependiendo del valor del pull-up, verás un sorteo actual mucho mayor que el de los uA.
Por ejemplo, El bus de 3.3 V con 3.3k de pull-ups es un consumo de corriente de 1 mA.
Sin embargo, no es tan simple: el reloj no será bajo en el 100% del tiempo. Tal vez el 10% en un autobús bastante ocupado. En ese caso, la corriente RMS es amplitude * sqrt (duty) [fórmula RMS para un tren de pulsos] - > 1 mA * sqrt (0.1) = 0.316 mA.
También hay que tener en cuenta que hay 2 líneas I2C.
Y lo peor de todo; si es posible que esté utilizando una "implementación de software I2C diferida"; Cuidado con las colisiones de autobuses. P.ej. un esclavo I2C que quiere usar el estiramiento del reloj, mientras que el maestro I2C usa GPIO de empuje y arrastre para conducir el bus.
SPI es mucho más simple porque a menudo no hay pull-ups. El único consumo de energía que tiene es el consumo dinámico de los transistores de conmutación y las líneas de E / S.
Si usa SPI con pull-ups, también verá un (leve) aumento en el consumo de energía. Sin embargo, también tenga en cuenta que un SPI tiene diferentes modos SPI y puede estar inactivo en un nivel lógico bajo. En ese caso, el pull-up consumirá continuamente más corriente.
En su caso, ya que no tenemos un esquema sobre exactamente qué pin SDO está bajando, tal vez esté bajando el pin I2C SDA con los pull-ups aún en su lugar.