¿Por qué I2C está diseñado para funcionar con resistencias de pull-up y no con pull-down?

18

Entiendo que en las líneas I2C, SCL y SDA use resistencias de pull-up y los controladores de pines son dispositivos NPN de colector abierto que pueden conducir los pines a tierra. Esto le da a I2C la ventaja de que ahora se puede compartir el mismo bus con varios esclavos, e incluso si dos o más esclavos intentan conducir el autobús al mismo tiempo, no causará ningún daño al sistema.

Pero esto también se puede hacer usando controladores de drenaje abierto PNP y resistencias desplegables en las líneas SDA y SCL. También se pueden lograr cosas como el estiramiento de reloj y el arbitraje de múltiples maestros con esto.

¿La implementación actual del protocolo I2C ofrece algún beneficio sobre la implementación alternativa sugerida anteriormente?

    
pregunta Ashutosh

7 respuestas

27

Eléctricamente tiene sentido porque tierra es la única conexión común a todos los dispositivos en un bus IIC. Esa es una restricción mucho menor que obligar a la energía a ser la conexión común a todos los dispositivos IIC, como se requeriría si las líneas fueran elevadas y flotaran bajas a través de los despliegues.

Tenga en cuenta que no es necesario que todos los dispositivos IIC reciban alimentación de la misma red o del mismo voltaje. Esto no sería cierto si ambas líneas de bus tuvieran que dirigirse a la única tensión de alimentación común.

    
respondido por el Olin Lathrop
24

En los viejos tiempos, los controladores TTL eran mucho mejores para bajar una señal y luego jalarla. Por lo tanto, los protocolos como I2C, pero también las líneas de interrupción, reinicio, etc., se implementaron utilizando un pull-up con un menú desplegable distribuido.

    
respondido por el Oldfart
14

Es más fácil utilizar el suelo como una referencia común entre los subsistemas que pueden tener voltajes de suministro variables. Si utiliza transistores PNP para elevar el voltaje a una fuente de alimentación, todos los subsistemas deberían estar conectados a la misma fuente.

    
respondido por el Dave Tweed
8

Las buenas respuestas abundan aquí, pero también hay otra razón.

Si el estado inactivo del bus está en el suelo, no hay forma de saber si el bus está conectado o simplemente está colgado en el espacio.

Es normal que el pull-up esté ubicado en el dispositivo maestro. Los esclavos por lo general no tienen un pull-up. Esto se debe a que la corriente desplegable que se requeriría para afirmar un nivel bajo aumentaría con la cantidad de dispositivos conectados al bus.

Un esclavo, cuando está enchufado en el bus, puede detectar que la línea está estirada (suponiendo que no se está utilizando) y saber que el bus está realmente ahí y en silencio. Ese no sería el caso con un bus con toma de tierra.

    
respondido por el Trevor_G
5

Si entiendo la pregunta correctamente, un aspecto es:

  • ¿Por qué usas resistencias pull-up y transistores NPN en lugar de resistencias pull-down y transistores PNP?

En primer lugar, debe tener en cuenta que no utiliza transistores bipolares (NPN, PNP) sino MOSFET (que existen en cuatro variantes diferentes).

Los dispositivos que usan la variante " pull-up y NPN " usan un mejora de canal n MOSFET. Debido a que la fuente de este MOSFET está conectada a tierra, la tensión de la fuente de la puerta (que controla el flujo de corriente) es igual a la tensión entre la puerta y la tierra. Por lo tanto, el MOSFET se puede controlar usando un voltaje entre 0 y Vdd.

Habría tres posibilidades para implementar la variante " desplegable y PNP ":

  • Uso de un p-channel MOSFET de mejora

    En un MOSFET de canal p IC NMOS o CMOS con características comparables (resistencia, etc.) se necesita más espacio que los MOSFET de canal n.

    En microelectrónica, el espacio es dinero, por lo que se evitan los MOSFET de canal p, si es posible.

  • Uso de una mejora de canal n MOSFET

    Esto requeriría que la salida del circuito lógico que controla el transistor tenga una tensión "BAJA" de la tensión de alimentación (por ejemplo, + 5V) y una tensión "ALTA" por encima de la tensión de alimentación (por ejemplo, + 10V cuando el resto de El circuito se suministra con + 5V).

    La razón: la tensión de la fuente a tierra será Vdd cuando el MOSFET está conduciendo. La tensión de la fuente de la compuerta debe ser positiva, por lo que la tensión entre la compuerta y la tierra debe ser incluso mayor.

    Necesitaría dos suministros de voltaje, y un circuito que cambia la salida del circuito lógico de 0 ... + 5V a + 5V ... + 10V ...

  • Utilizando un agotamiento de canal n MOSFET

    Lamentablemente, no puedo decirte mucho sobre esta solución. Sin embargo, encontré una página en Google que dice que los MOSFET de agotamiento son más difíciles de producir que los MOSFET de mejora y se evitan por esta razón.

    Sé por la electrónica de potencia (no microelectrónica) que la variante de "dos fuentes de alimentación" descrita anteriormente es incluso preferida sobre los MOSFET de agotamiento. (Pero no puedo decirte por qué).

    EDIT Si utiliza MOSFET de agotamiento de canal n, probablemente necesite un voltaje negativo (por ejemplo, -5 V), por lo que también necesitará dos voltajes de alimentación ...

respondido por el Martin Rosenau
0

También hay un beneficio adicional más para tener líneas de datos comunes y de pull-up (más que tener VCC y pull-down comunes):

Incluso si la intención original era conectar dispositivos en la misma PCB en un lapso de solo unas pulgadas, fue lo suficientemente exitoso, por lo que ahora no es raro tener las líneas largas en par de feets y conectar "dispositivos" que podrían ser computadoras o algo de igual complejidad, con algunos dispositivos que tienen sus propias fuentes de energía (de diferente calidad, digamos que conectas algo a una toma de pared con algo alimentado por batería). Es mejor, si la conexión funciona "al menos bien" incluso en condiciones no ideales y fuera de especificaciones.

Y muchos de estos dispositivos conectados pueden estar conectados de alguna manera también por otros medios, y luego solo por la comunicación I2C. Por lo general, cuando se conectan dispositivos juntos, se conecta con common ground , a veces como parte de otras funciones, a veces simplemente porque está montado en una caja metálica y los dispositivos también están conectados a tierra con la caja (o con un refrigerador común o algo así) o puede haber un cable blindado con blindaje puesto a tierra en el interior, que también conecta los terrenos.

Si también conecta directamente las líneas de energía (VCC) de tales dispositivos, tendrá problemas cuando esas líneas estén en un voltaje diferente de forma natural (claro, puede decir 5V aquí y allá, pero dependiendo de la construcción y las tolerancias de las partes de Las fuentes de alimentación también podrían ser 4.9V o 5.2V o incluso cambiarse, si funciona con batería y algunas veces funciona con algunos motores, lo que hace que la potencia disminuya y aumente con el tiempo).

En tal caso, existe un cortocircuito efectivo entre las fuentes de energía de una parte a voltio y, dependiendo de las fuentes (y la resistencia de las vías), podrían fluir corrientes relativamente altas que no solo generen pérdidas de energía y calor, sino incluso en dañar (o acortar la vida) de algunas de esas fuentes. Lo que no es bueno.

La conexión a tierra común y los pull-ups evitan tales problemas: la tierra es tierra y las resistencias pullup permiten solo una corriente cruzada muy pequeña, incluso si el VCC es muy diferente de los dispositivos.

    
respondido por el gilhad
-1

No es necesario que envíes tanta energía a través del chip, si se arranca.

Debido a que el chip no conduce nada, solo está creando un corto para llevar el bus a 0, y abrirlo para ponerlo en 1.

Si fue desplegable, tendrías que enviar energía a través del chip para conducir el bus a 1. Si el autobús es un cortocircuito accidental, podría ser una gran cantidad de energía que manejes a través de ese chip para probar para empujarlo hasta 1.

Descargo de responsabilidad: Soy un EE bastante malo en este momento.

    
respondido por el richard wicks

Lea otras preguntas en las etiquetas

Comentarios Recientes

Generalmente, no hay ninguna razón por la cual I2C no deba aceptar resistencias pull-up. Y no hay resistencias desplegables. Dado que no hay material que pueda resistir el empuje incluso en otras partes bastante pequeñas (es decir, componentes que no son sensibles) (vea el inserto anterior), especialmente no es un conector 510 sin ningún diseño pull-up. El conector que elegí es Si-Ni, y la razón es que su resistencia después de unos 10 m ohmios es alta, por lo que colocar un módulo con resistencias más bajas... Lees verder