¿Cuál es la velocidad de I2C para la comunicación AVR?

5

Estoy haciendo un proyecto en el que tendré muchos controladores esclavos ATtiny y uno maestro (ya sea un Arduino / ATMega o un mbed). Supongo que el ATtiny con su baja velocidad de reloj de 10MHz será mi cuello de botella (con un oscilador incorporado). Necesito establecer qué tan factible es un diseño por la rapidez con que I2C puede ir en una ATT. Entonces, suponiendo que todo sea perfecto, ¿qué tan rápido puede un ATtiny transferir datos por I2C en kilobytes por segundo? Además, ¿de qué tipo de velocidades de reloj estaríamos hablando en Hz?

    
pregunta Earlz

2 respuestas

3

La mayoría de los dispositivos con capacidad I2C en la actualidad pueden manejar los dos datos nominales más bajos, que son 100 kbps y 400 kbps.
ATTiny parece ser capaz de hacer ambas cosas de acuerdo con esta nota de la aplicación .

Entonces, suponiendo que todo sea perfecto, podrá transferir 400,000 / 8 = 50 kilobytes por segundo. Permitir gastos generales como direccionamiento / negociación probablemente estará un poco por debajo de esto. Si desea una cifra exacta (para su aplicación particular) no sería difícil establecer una pequeña prueba utilizando un temporizador para enviar x bytes.

    
respondido por el Oli Glaser
5

Como dijo Oli, 100 kbits / sy 400 kbits / s son velocidades de bus IIC "estándar". Sin embargo, en la práctica, en la mayoría de los casos, la velocidad del bus IIC está limitada por los tiempos de aumento de la señal. Ambas líneas son pasivas y altas, y estas flexiones están limitadas a 3 mA, por lo que los flancos ascendentes tomarán algún tiempo.

Los chips IIC reales solo están obligados a superar 3 mA de la corriente de pullup para obtener una línea por debajo del umbral lógico bajo máximo. Sin embargo, si sabe exactamente qué está conectado al bus y qué capacidad de extracción tiene realmente, puede usar pullups más rígidos y, por lo tanto, correr más rápido. Verifique las capacidades actuales del sumidero de los pines de salida utilizados para conducir el bus IIC en los micros que está usando. Lo más probable es que puedan hundir significativamente más de 3 mA. Con los pullups rígidos y un bus IIC corto en la misma placa, debería poder obtener hasta 1 Mbit / s o más, ya que IIC es en última instancia síncrono.

Experimente con las partes que tiene y mire las formas de onda en un alcance para ver de qué son capaces. Recuerde, esto solo es válido si todos los dispositivos en el bus pueden hacer esto. Si conecta un chip IIC dedicado, como una EEPROM, por ejemplo, debe atenerse a la norma.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas