1 votos

¿Cómo saber cuántos sensores se pueden añadir a un protocolo I2C o SPI?

Estoy teniendo problemas para saber exactamente cómo conectar los sensores para hacer 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, me he dado cuenta de que algún sensor tiene básicamente la limitación de cuántos de ellos se pueden conectar en el mismo protocolo, ya que utilizan una dirección fija (perdóname si esto es incorrecto como explicación, pero eso es lo que entendí, mirando la escasa documentación en línea).

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

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

ADXL335 y 345 (este último tiene SPI e I2C, el primero sólo analógico) http://www.analog.com/static/imported-files/data_sheets/ADXL345.pdf http://www.analog.com/static/imported-files/data_sheets/ADXL335.pdf

Acelerómetro PArallax MMA7455 http://www.parallax.com/sites/default/files/downloads/28526-MMA7455-3-Axis-Accelerometer-Documentation-v1.1.pdf

Acelerómetro Bosch BMA180 http://zh.bosch-sensortec.com/content/language4/downloads/BST-BMA180-FL000-03.pdf

Giroscopio L3G4200D http://www.pololu.com/file/0J491/L3G4200D.pdf

Giroscopio Invesense MPU6050 http://invensense.com/mems/gyro/documents/PS-MPU-6000A-00v3.4.pdf

6voto

chrisbunney Puntos 228

I 2 C le permitirá añadir tantas direcciones únicas como haya disponibles para el dispositivo en función de las condiciones de la línea. Si necesita más direcciones que las disponibles, tendrá que utilizar un I 2 C o múltiples I 2 Autobuses C.

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

Independientemente de lo que elijas, cuantos más dispositivos tengas, más lento tendrás que hacer funcionar el reloj para que haya suficiente slew en las líneas de reloj y datos.

2voto

RelaXNow Puntos 1164

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

En cuanto a la CII, algunos dispositivos tienen uno o dos pines que permiten cambiarlos a una de un conjunto de direcciones alternativas. Sin embargo, incluso con dos pines de selección de dirección, sólo puedes poner 4 de los mismos dispositivos en el bus IIC sin hacer alguna otra habilitación/deshabilitación tú mismo.

2voto

ianb Puntos 659

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

De todos modos, hay un montón de ADCs en el mercado que son compatibles con SPI y pueden tener sus salidas "encadenadas" para que: -

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

En efecto, inicias la conversión en todos ellos simultáneamente, esperas el tiempo apropiado (periodo de ocupación mientras los ADCs realizan la conversión), luego los sincronizas todos juntos - los primeros 12 bits (si es un convertidor de 12 bits) son del último de la cadena, los siguientes 12 bits son del penúltimo Y sigues sincronizando unitl todos los datos del "sensor" son recuperados.

Cada ADC tiene un pin SDI que se conecta al SDO del dispositivo anterior en la cadena. De esta manera, sólo es necesario proporcionar un reloj "fuerte" adecuado para todos los dispositivos (o dividir el reloj en múltiples pines).

El LTC2370- 16 es un buen ejemplo: -

enter image description here

¡¡El direccionamiento se convierte en una cosa del pasado!!

1voto

Nick Alexeev Puntos 20994

[Esto empezó 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 fijan dentro del CI, los bits inferiores de la dirección se conectan a los pines. Se pueden asignar diferentes direcciones, dependiendo de cómo se conecten 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, consulte LM75 (es un sensor de temperatura).

block diagram of LM75

Sus pines A0, A1, A2 establecen los 3 bits inferiores de la I 2 Dirección C. Así, puede haber hasta 8x LM75 en una I 2 Autobús C.

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

Algunos comentarios generales* sobre I 2 C y SPI

* Hay excepciones a cada uno de los puntos siguientes. Esta lista tampoco es exhaustiva.

I2C es más adecuado para

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

El SPI es más adecuado para

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

P.D.

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X