¿SPI consume más energía que I2C?

0

¿Alguien sabe si el SPI normalmente consume más corriente que I2C? La razón por la que pregunto es que estoy jugando con el acelerómetro LIS3DH y lo conduzco con un Arduino. Cuando se usa I2C, el consumo actual es de aproximadamente 30 uA (300 uV en una derivación 10R). Esto se logra con SDO conectado a VDD en lugar de GND. Sin embargo, cuando se usa SPI, el consumo actual es de unos 300 uA (3 mV en una derivación 10R).

Como I2C no usa SDO, podría estar conectado a VDD para reducir el consumo de corriente. No se puede hacer lo mismo cuando se usa SPI ya que se usa SDO, ¿correcto? Me pregunto si el SDO de alguna manera drena la corriente.

Cualquier ayuda será apreciada.

Gracias

    
pregunta Kar

1 respuesta

3

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.

    
respondido por el Hans

Lea otras preguntas en las etiquetas