Entiendo que en I2C, las líneas SCL y SDA usan resistencias pull-up y los controladores de pin son dispositivos NPN de colector abierto que pueden conducir los pines a tierra. Esto le da a I2C la ventaja de que el mismo bus ahora se puede compartir con múltiples esclavos, e incluso si dos o más esclavos intentan accidentalmente conducir el bus al mismo tiempo, no causarán ningún daño al sistema.
Pero esto también se puede hacer utilizando controladores de drenaje abiertos PNP y resistencias pull-down en las líneas SDA y SCL. Con esto también se pueden lograr cosas como el estiramiento del reloj y el arbitraje multimaestro.
¿La implementación actual del protocolo I2C ofrece algún beneficio sobre la implementación alternativa sugerida anteriormente?
Respuestas:
Eléctricamente tiene sentido porque la conexión a tierra es la única conexión común a todos los dispositivos en un bus IIC. Eso es una restricción mucho menor que forzar la alimentación a ser la conexión común a todos los dispositivos IIC, como se requeriría si las líneas se condujeran hacia arriba y flotaran hacia abajo a través de pulldown.
Tenga en cuenta que no todos los dispositivos IIC necesitan alimentación desde la misma red o el mismo voltaje. Esto no sería cierto si ambas líneas de bus tuvieran que ser conducidas al voltaje de energía común único.
fuente
En los viejos tiempos, los conductores TTL eran mucho mejores para bajar una señal que para subirla. Por lo tanto, protocolos como I2C, pero también líneas de interrupción, reinicio y otros, se implementaron utilizando un pull-up con pull-down distribuido.
fuente
Es más fácil usar tierra como referencia común entre subsistemas que pueden tener voltajes de suministro variables. Si usa transistores PNP para subir a una tensión de alimentación, todos los subsistemas tendrían que estar conectados a la misma fuente.
fuente
Aquí abundan las buenas respuestas, pero también hay otra razón.
Si el estado de reposo del autobús está en tierra, no hay forma de saber si el autobús está conectado o simplemente colgando en el espacio.
Es normal que el pull-up esté ubicado en el dispositivo maestro. Los esclavos generalmente no tienen 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 al bus, puede detectar que la línea está muy alta (suponiendo que no se esté usando) y saber que el bus está realmente allí y en silencio. Ese no sería el caso con un autobús sesgado a tierra.
fuente
Si entiendo la pregunta correctamente, un aspecto es:
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 utilizan la variante " pull-up y NPN " utilizan un MOSFET de mejora de n canales . Debido a que la fuente de este MOSFET está conectada a tierra, el voltaje de la fuente de la puerta (que controla el flujo de corriente) es igual al voltaje 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 MOSFET de mejora de canal p
En un NMOS o CMOS IC, los MOSFET de canal p con características comparables (resistencia, etc.) requieren más espacio que los MOSFETS de canal n.
En microelectrónica, el espacio es dinero, por lo que los MOSFET de canal p se evitan si es posible.
Uso de un MOSFET de mejora de n canales
Esto requeriría que la salida del circuito lógico que impulsa el transistor tenga un voltaje "BAJO" del voltaje de suministro (por ejemplo, + 5 V) y un voltaje "ALTO" por encima del voltaje de suministro (por ejemplo, + 10 V cuando se suministra el resto del circuito con + 5V).
La razón: el voltaje de la fuente a tierra será Vdd cuando el MOSFET esté conduciendo. El voltaje de la fuente de la puerta debe ser positivo, por lo que el voltaje entre la puerta y la tierra debe ser incluso mayor.
Necesitaría dos fuentes de voltaje, y un circuito que desplace la salida del circuito lógico de 0 ... + 5V a + 5V ... + 10V ...
Uso de un MOSFET de agotamiento de n canales
Lamentablemente, no puedo contarte mucho sobre esta solución. Sin embargo, encontré alguna página usando Google que decía 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 preferible a los MOSFET de agotamiento. (Pero no puedo decirte por qué).
EDITAR Usando MOSFET de agotamiento de n canales, probablemente necesitará un voltaje negativo (por ejemplo, -5V), por lo que también necesitará dos voltajes de alimentación ...
fuente
También hay un beneficio adicional más por tener líneas de datos de conexión a tierra y pull-up comunes (sobre tener VCC y pull-down comunes):
Incluso si la intención original era conectar dispositivos en la misma PCB en un lapso de pocas pulgadas solamente, fue lo suficientemente exitoso, por lo que ahora no es raro tener las largas líneas de par de pies y "dispositivos" de conexión que podrían ser computadoras o algo similar complejidad, con algunos dispositivos que tienen sus propias fuentes de alimentación (de diferente calidad, digamos que conectas algo enchufado a la 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, luego solo comunicación I2C. Por lo general, cuando conecta dispositivos entre sí, lo conecta, a
common ground
veces como parte de otras funciones, a veces solo porque está montado en una carcasa de metal y los dispositivos también están conectados a tierra con la carcasa (o con un refrigerador común o algo así) o puede haber ser cable blindado con blindaje a tierra en el interior, que también conecta los terrenos.Si también conecta directamente las líneas de alimentación (VCC) de dichos dispositivos, obtendrá problemas cuando esas líneas tengan un voltaje diferente de forma natural (claro, puede decir 5V aquí y allá, pero dependiendo de la construcción y las tolerancias de las fuentes de alimentación) también podría ser de 4.9V o 5.2V o incluso cambiar, si funciona con batería y algunas veces hace funcionar algunos motores, lo que hace que la energía caiga y aumente con el tiempo).
En tal caso, existe efectivamente un cortocircuito entre esas fuentes de energía de parte de un voltio y, dependiendo de las fuentes (y la resistencia de las formas), podrían fluir corrientes relativamente altas, lo que daría como resultado no solo desperdicio de energía y aumento de calor, sino incluso daños ( o acortar la vida) de algunas de esas fuentes. Lo cual no es bueno.
Tener una conexión a tierra y pull-ups comunes evita estos problemas: la tierra es tierra y las resistencias pullup solo permiten una corriente cruzada realmente pequeña, incluso si el VCC difiere mucho de los dispositivos.
fuente
No tiene que enviar tanta potencia a través del chip, si se levanta.
Debido a que el chip no maneja nada, solo está creando un corto para llevar el bus a 0, y haciendo una apertura para llevarlo a 1.
Si se tira hacia abajo, tendrías que enviar energía a través del chip para conducir el bus a 1. Si el bus es un corto accidental, podría ser una gran cantidad de energía que manejas a través de ese chip para intentar empujarlo. hasta 1.
Descargo de responsabilidad: soy un EE bastante pésimo en este momento.
fuente