¿Cuál es la velocidad de respuesta para I2C?

10

Estoy configurando I 2 C en un PIC18 usando las funciones integradas del compilador C18 como se describe en la sección 2.4 de la documentación :

void OpenI2C2( unsigned char sync_mode,
    unsigned char slew );

No estoy seguro de qué debería hacer slew. Puedo elegir entre dos opciones, definidas en i2c.h:

  • SLEW_OFF: Velocidad de respuesta deshabilitada para el modo de 100 kHz
  • SLEW_ON: Velocidad de respuesta habilitada para el modo de 400 kHz

En la hoja de datos del registro 15-1, página 257, las dos opciones se explican con un poco más de detalle:

  • 1 = Control de velocidad de respuesta deshabilitado para el modo de velocidad estándar (100 kHz y 1 MHz)
  • 0 = Control de velocidad de respuesta habilitado para modo de alta velocidad (400 kHz)

Sin embargo, no lo entiendo, tengo un par de preguntas:

  1. ¿Qué es la velocidad de respuesta?

  2. Para mí, las dos opciones no tienen sentido: ¿qué pasaría si quisiera deshabilitar la velocidad de respuesta para 400 kHz y habilitarla para 100 kHz? ¿Por qué es esto?

  3. ¿Cuándo debo elegir SLEW_OFFy cuándo SLEW_ON?


fuente

Respuestas:

8

La velocidad de respuesta es la rapidez con que la señal cambia de baja a alta, o viceversa. Al limitar esta transición abrupta, puede reducir el timbre de los reflejos de la señal y limitar la diafonía entre las líneas de señal.

Sin embargo, la forma en que funciona es que a 100 kHz, las velocidades de señal son tan lentas que la velocidad de respuesta realmente no importa; a 400 kHz puede solucionar un circuito problemático limitándolo; pero luego, cuando llega a 1MHz, realmente necesita toda la velocidad de transición que puede obtener, por lo que solo tiene que hacer una buena coincidencia de señal y enrutar sus líneas con más cuidado.

El bit en cuestión no hace más que habilitar o deshabilitar la función. El resto es simplemente un consejo. Las velocidades están entre paréntesis, ya que es solo una sugerencia.

gbarry
fuente
¡Gracias! Parece ser una buena opción: ¿por qué no usaría el control de velocidad de rotación?
2
@CamilStaps: según tengo entendido, parece que podría haber leído mal la respuesta. Tener transiciones bruscas (SLEW_ON) produce ruido EMI y timbres adicionales. Tener transiciones lentas (SLEW_OFF) reduce EMI pero reduce la frecuencia máxima utilizable del enlace. Es una compensación.
Tim
@gbarry: Ah, entonces, con el control de velocidad de respuesta desactivado, la señal está tan cerca de las ondas cuadradas como lo puede hacer el uC. Con el control de la velocidad de rotación en la onda, las transiciones alta / baja son más inclinadas (= menos verticales) de lo que serían de otra manera.
angelatlarge
1
Eso es correcto, aunque no estoy seguro de cuán dramático es en el PIC (debería verificarlo). Nota histórica: La especificación RS232 tenía una limitación de velocidad de respuesta, por lo que alguien salió con un chip controlador que tenía buenas señales de salida en pendiente. Y luego todos comenzamos a usar velocidades de bps cada vez más rápidas, por lo que no pudimos usar ese chip ...
gbarry
1
Tres años después, y tuve la misma pregunta, pero en realidad la medí. Para referencia futura, en un PIC16F1454 con 4.7k pull-ups y un solo esclavo en el bus, el tiempo de caída es de 2.9 ns sin límite de velocidad de rotación (posiblemente limitado por mi sonda de 150 MHz) y 151 ns con limitación de velocidad de rotación. No afecta el tiempo de subida.
tubería