Problemas al comprender el cálculo de recuperación de I2C

0

He estado tratando de leer acerca de las funciones de recuperación de I2C, por lo que puedo seleccionar una resistencia de extracción adecuada para un EEPROM (24LC02B-I / P) que quiero usar como ROM en serie para controlar algunas pantallas de 7 segmentos.

A pesar de los consejos en este video 'AddOhms' todavía tengo curiosidad acerca de cómo calculamos realmente un pullup y un rango de pullulcado, pero este documento de TI me desconcierta totalmente en la sección 2. A continuación hay algunos detalles específicos. preguntas:

  1. ¿Por qué Rp (min) toma una salida de bajo voltaje de Vcc?

  2. Habla de capacitancia del bus: la única referencia que puedo encontrar en la hoja de datos de la EEPROM es la capacidad de pin (10 picofarads): ¿es esto lo mismo?

  3. ¿Cómo es que T (r) es el tiempo de subida entre Vol y no V = 0, o alguna mediana entre Vol y V = 0? Tenía la impresión de que Vol era un máximo de salida V determinado, pero necesariamente el valor real.
  4. ¿De qué se tratan los cálculos con la salida baja / alta para un pullup fuerte y una entrada baja / alta para un pullup débil?

Disculpe si estas preguntas parecen diversas y amplias, simplemente estoy luchando con el concepto en general y me siento un poco frustrado con él

    
pregunta Scott Anderson

3 respuestas

1

En el protocolo I2C, el dispositivo funciona en colector abierto o en modo de drenaje abierto. Los dispositivos (tanto el microcontrolador como la EEPROM) pueden llevar los pines a cero lógico (cero fuerte, suponiendo que literalmente toman las líneas y lo cortan a tierra).

La lógica solo se logra mediante los pull ups que se proporcionan externamente. Tire de la resistencia está en kilo ohms. (Veremos los valores en un momento). Habrá una capacitancia parásita en el bus debido a la conexión de varios dispositivos I2C, capacitancia de PCB, etc.

Cuando la señal está alta, la corriente tiene que fluir desde VCC a través de la resistencia de recuperación hacia arriba y hacia los pines IC. Por lo tanto, la constante de tiempo RC se activa .. Hace que el aumento de la señal sea descuidado. Ejemplo, si la capacitancia es de 100pF y la de subida es de 10kohms. El tiempo de subida será cinco veces R * C. Aquí, será 5us.

El tiempo de caída no será un problema porque será casi instantáneo. Desde los pines del IC a tierra. No hay resistencias en el camino para retrasar.

Pregunta 2

  

Habla de capacitancia de bus: la única referencia que puedo encontrar en el   hoja de datos de la EEPROM es pin capacidad (10 picofaradios) - es esto   una y la misma?

Sí. Además de la capacitancia de la MCU y también de la capacitancia parásita de la PCB y la capacitancia de la traza de la PCB ... Mantendría un margen de 20pF extra para aquellos que no sean parásitos del dispositivo.

Pregunta 4 Valores mínimos y máximos de recuperación Supongamos que el pull up es fuerte (resistencia de bajo valor). Cuando la MCU emite un nivel bajo, hay una conexión entre el valor de resistencia de recuperación de VCC --- > --- --- > MCU --- > nMOSFET del pin de MCU (que está activado) --- > suelo.

En este caso MCU se hunde más actual. Esto también significa que la MCU comienza a generar voltaje en el pin de salida (salida baja). Este voltaje se debe a una pérdida óhmica a través del nMOSFET del pin MCU. Tendrá una resistencia finita. Por lo tanto, el voltaje de salida de la MCU no será verdadero a cero, sino a unos 100 mV (un ejemplo) que debería estar todavía dentro de su especificación OL de V .

Para caso de pull up débil (valor de resistencia muy alto, digamos 100kohms) Suponga que la corriente de entrada del reloj EEPROM es 10uA. También puede ser más alto.

Cuando la MCU controla el pin del reloj, MCU libera el pin del reloj ... EEPROM ve alto debido a VCC ... Pero, ¿cuál será exactamente el voltaje en la entrada del reloj de la EEPROM?

Veamos si VCC es 3.3 V .. Luego, debido a la corriente de entrada del pin del reloj de 100uA, habrá una caída de 10 uA * 100k a través de la resistencia, que es de 1000mV o 1V .. Por lo tanto, el voltaje en el pin del reloj será solo de 2.3 V .. Por lo tanto, uno tiene que cuidar el alto voltaje de entrada al elegir una resistencia débil de levantamiento.

Más importante aún, si la resistencia es demasiado alta, las posibilidades de fallar en el protocolo requerido aumentarán el tiempo.

    
respondido por el Umar
1

A menos que esté haciendo algo inusual (como correr a una frecuencia extrema o tener un bus extremadamente largo y, por lo tanto, capacitivo), no debería ser un problema. Los valores entre alrededor de 1k y 10k son habituales. Revise las hojas de datos del dispositivo para ver las grabaciones, pruebe lo que recomiendan, eche un vistazo rápido para ver si todo está bien y, si funciona, no se meta con él.

    
respondido por el dmb
1
  1. "El nivel \ $ V_ \ mathrm {OL} \ $ que se puede leer como un nivel lógico bajo válido por los buffers de entrada", por lo que corresponde a la salida del peor caso del dispositivo. Debe seleccionar \ $ V_ \ mathrm {OL} \ mathrm {(max)} < V_ \ mathrm {IL} \ mathrm {(max)} \ $ para que el circuito funcione de manera sólida.

  2. La capacitancia del bus es la capacitancia total en toda la línea I2C. Es la suma de las capacitancias del pin y cualquier capacitancia parásita. Su lectura de la hoja de datos es correcta, y 10 pF es un valor razonable. Todos los pines en una suma de bus en paralelo, por lo que cuantos más ICs tenga, mayor será la capacidad.

  3. Esto se debe a que la salida estará en \ $ V_ \ mathrm {OL} \ $ no 0 V, por lo que tiene sentido ir desde allí.

  4. ¿No vi la referencia a las flexiones débiles? En última instancia, no importa si lo considera de salida o entrada, siempre y cuando llegue a la conclusión requerida.

respondido por el awjlogan

Lea otras preguntas en las etiquetas