No entiendo cómo funcionan estas resistencias en este circuito

4

Al leer un manual sobre el uso de un PICAXE y un dispositivo I2C, vi este diagrama.

No puedo entender cómo se comportaría esto, ya que no haría que la conexión en las líneas fuera constantemente alta debido a la conexión al riel de alimentación, por lo que nunca se agota. Entiendo que son líneas de drenaje abierto y que son necesarias para hacer que las líneas se eleven, pero ¿cómo pueden hacer que se agoten con esa conexión al riel positivo?

    
pregunta Dean

3 respuestas

16

Las resistencias que ves se llaman resistencias "pull up"; literalmente "elevan" la señal al riel de voltaje positivo.

I2C es un bus de comunicación que permite que varios dispositivos hablen sobre él. Dado que solo hay un reloj y una línea de datos, no hay forma de garantizar que dos dispositivos no comiencen a hablar al mismo tiempo, o que un dispositivo identifique erróneamente un mensaje y responda fuera de turno.

Si dos dispositivos intentan controlar la línea de datos y uno quiere que sea '1' y el otro '0' terminas con una condición llamada contención. Internamente, una salida digital normal se construye a partir de dos transistores: uno conecta la línea de señal a + V y el otro a tierra. El dispositivo enciende uno u otro transistor para configurar la señal de salida al nivel apropiado. Cuando dos dispositivos intentan hacer la misma señal, dos voltajes diferentes terminan con + V conectado a tierra a través de dos transistores. Esto se conoce como contención y es algo que se debe evitar porque causa altas corrientes y puede dañar uno o ambos controladores de salida.

Para solucionar este problema, la especificación I2C requiere el uso de controladores de "colector abierto" o "drenaje abierto" (lo mismo). Esto significa que los dispositivos en el bus SOLO pueden conectar la señal a tierra. La única forma en que un dispositivo puede generar un '1' es no llevar la línea a cero. Algo tiene que llevar la línea a la lógica '1' y ese algo es la resistencia de pull-up.

Lo que sucede ahora si dos dispositivos intentan controlar la línea de datos es que uno no está haciendo nada (quiere que la línea sea '1') y el otro dispositivo tiene su transistor de salida encendido, que conecta la señal a tierra. La señal resultante es un '0'; no hay contención porque lo único que intenta hacer que la línea sea un '1' es una resistencia que, por diseño, limita la cantidad de corriente que permite. Las resistencias pull-up generalmente se seleccionan para ofrecer un poco de resistencia a una señal cambiante, pero no demasiado. Para I2C, el valor para un pull up suele ser de 4700-10000 ohmios.

Revise enlace y enlace para obtener más información.

    
respondido por el akohlsmith
1

Esas son resistencias pull-up. Cuando los dispositivos no se están comunicando, las resistencias elevan ambas líneas al máximo. Un dispositivo es capaz de tirar de las líneas bajas. Debe suministrar una corriente que se disipe por las resistencias de levantamiento. Puede pensar en esto como un problema V = IR básico para determinar cuánta corriente se requiere.

El razonamiento de esta configuración es la situación en la que desea que varios dispositivos se comuniquen en una sola línea. Si tenía un dispositivo que tiraba de la línea alta en lugar de las resistencias de extracción, cuando un dispositivo diferente intenta comunicarse, se verá obligado a superar al otro dispositivo para bajar la línea. En esta situación, todavía tienes un problema V = IR, excepto que esta vez tu R es muy pequeña, lo que me hace muy grande.

    
respondido por el Kellenjb
0

Son requeridos por la especificación I2C.

Se pueden conducir a nivel bajo haciendo que el pin de salida sea bajo.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas