¿Cómo saber cuántos sensores puede agregar a un protocolo I2C o SPI?

1

Tengo problemas para descubrir exactamente cómo conectar sensores para realizar un proyecto.

El problema principal es que no puedo encontrar un dispositivo que pueda manejar suficiente sensor analógico, por lo que necesito usar SPI o I2C.

Ahora, he notado que algunos sensores básicamente tienen la limitación de cuántos de ellos pueden conectarse en el mismo protocolo, ya que usan una dirección fija (perdóneme si es una explicación incorrecta, pero eso es lo que entendí). mirando la documentación dispersa en línea).

Ahora, ¿hay una manera fácil de saber qué sensor puede "cambiar" esta dirección de memoria, para que pueda usar muchos de ellos a través de SPI o I2C? Gracias

EDITAR: Como sensor estoy considerando esto; para la tasa de muestreo no estoy seguro de cómo calcularlo; Soy un ingeniero de SW, no un ingeniero de hardware. La aplicación es una recopilación en tiempo real de datos relacionados con la posición y rotación de un objeto con el equipo encendido. La velocidad del objeto medido no es más rápida que cualquier movimiento que un humano pueda generar.

ADXL335 y 345 (este último tiene SPI e I2C, el único analógico anterior) enlace enlace

Acelerómetro PArallax MMA7455 enlace

Acelerómetro Bosch BMA180 enlace

Giroscopio L3G4200D enlace

Giroscopio Invesense MPU6050 enlace

    
pregunta rataplan

4 respuestas

6

I 2 C le permitirá agregar tantas como haya disponibles direcciones únicas para el dispositivo dependiendo de las condiciones de la línea. Si necesita más direcciones que las disponibles, deberá utilizar un concentrador I 2 C o varios buses I 2 .

SPI permite tantos dispositivos como pueda proporcionar líneas nSS, de nuevo según las condiciones de la línea. Un multiplexor como el '138 puede ayudar aquí.

Independientemente de lo que elija, cuantos más dispositivos tenga, más lento tendrá que correr el reloj para permitir suficiente movimiento en el reloj y en las líneas de datos.

    
respondido por el Ignacio Vazquez-Abrams
2

Lo que dices es cierto de IIC, pero no de SPI. Los dispositivos SPI no tienen direcciones. Cada uno de ellos tiene su propia línea de selección de esclavo . La alimentación, la conexión a tierra, el reloj, la entrada y salida de datos son comunes a todos los dispositivos SPI, pero cada uno necesita una línea de selección de esclavos por separado.

En cuanto a IIC, algunos dispositivos tienen un pin o dos para permitirle cambiarlos a una de un conjunto de direcciones alternativas. Sin embargo, incluso con dos pines de selección de dirección, solo puede poner 4 de los mismos dispositivos en el bus IIC sin tener que habilitar / deshabilitar otra.

    
respondido por el Olin Lathrop
2

Tengo la sensación de que está intentando leer varias (o muchas) señales analógicas (de sensores), posiblemente con ADC. Si me equivoco, lo siento.

De todos modos, hay muchos ADC en el mercado que son compatibles con SPI Y pueden tener sus resultados "encadenados" para que: -

  • Una conversión de inicio común hace que todos comiencen la conversión simultánea
  • Un reloj común para todos ellos para registrar los datos y
  • Una línea SPI en su MCU (forme la última en la cadena de ADC

En efecto, inicia la conversión a todos ellos simultáneamente, espere el tiempo apropiado (el período ocupado mientras los ADC están realizando la conversión), luego los sincroniza todos - los primeros 12 bits (si es un convertidor de 12 bits) son de la el último en la cadena, los siguientes 12 bits son desde el segundo último Y usted sigue cronometrando todos los datos del "sensor" recuperados.

Cada ADC tiene un pin SDI que se conecta al SDO del dispositivo anteriormente en la cadena. De esta manera, solo necesita proporcionar un reloj "fuerte" adecuado para todos los dispositivos (o dividir el reloj en varios pines).

LTC2370-16 es un buen ejemplo: -

¡El direccionamiento se convierte en una cosa del pasado!

    
respondido por el Andy aka
1

[Esto comenzó como un comentario, pero me he quedado sin espacio.]

Muchos dispositivos esclavos I2C tienen direcciones parcialmente fijas (en lugar de puramente fijas). Los bits superiores de la dirección de 7 bits se establecen dentro del IC, los bits inferiores de la dirección están conectados a los pines. Puede asignar diferentes direcciones, según cómo conecte estos pines de dirección. Esto se hace para permitir el direccionamiento individual de múltiples dispositivos del mismo tipo en un mismo bus.

Para ver un ejemplo, vaya a LM75 (es un sensor de temperatura).

Sus pines A0, A1, A2 establecen los 3 bits inferiores de la dirección I 2 . Por lo tanto, puede haber hasta 8x LM75 en un bus I 2 C

El número de bits de dirección conectados a los pines varía de un dispositivo esclavo I 2 C a otro.
(No he visto dispositivos con más de 4 pines utilizados para direccionamiento).

Algunos comentarios generales * sobre I 2 C y SPI

* Hay excepciones a cada uno de los puntos a continuación. Ninguna de estas listas es exhaustiva.

I2C es más adecuado para

  • Mayor número de señales más lentas. (Por ejemplo: temperaturas, voltajes de la batería).
  • Comunicación cuando el tiempo no es crítico. (Lectura pausada de una EEPROM externa en el encendido).
  • entornos con poco EMI

SPI es más adecuado para

  • menor número de señales rápidas (audio A / D y D / A, comunicaciones por radio)
  • entornos con EMI moderada (más industrial)

P.S.

Dicho esto, es un poco difícil dar a nuestro O.P. un consejo sólido sin saber más sobre las señales y sensores del O.P.

    
respondido por el Nick Alexeev

Lea otras preguntas en las etiquetas