• En este espacio, encontrarás una amplia gama de contenido relacionado con los campos de la ingeniería electrónica, telecomunicaciones, programación y temas afines.
  • Si eres un estudiante, encontrarás una gran cantidad de recursos educativos para fortalecer tus conocimientos y habilidades.
  • Sigueme en mi redes sociales. ¡Únete a nuestra comunidad de entusiastas de la ingeniería y la tecnología! Estamos emocionados de compartir nuestro conocimiento y experiencia contigo..

miércoles, 11 de octubre de 2023

RESISTENCIAS PULL-UP Y PULL-DOWN

Al observar cualquier circuito electrónico digital, encontrará principalmente resistencias en dos tipos de configuraciones: pull-up y pull-down en ellos. Este tipo de configuración se utilizan para polarizar correctamente las entradas de las puertas digitales y evitar que floten aleatoriamente cuando no hay ninguna condición de entrada. Para cualquier microcontrolador en un sistema integrado como Arduino, las resistencias pull-up y pull-down se utilizan tanto en las señales de entrada y de salida para la comunicación con otros dispositivos de hardware externos, principalmente en las Entradas y Salidas de Propósito General (GPIO). La implementación de resistencias pull-up y pull-down en el circuito le permitirá alcanzar estados "altos" o "bajos". Si no lo implementa y no hay nada conectado a sus pines GPIO, su programa leerá un estado de impedancia "flotante".  

Figura 1. Configuraciones de resistencias Pull-Up y Pull-Down
 

RESISTENCIAS PULL-UP

Se utiliza una resistencia pull-up para establecer un control adicional sobre los componentes críticos y al mismo tiempo garantizar que el voltaje esté bien definido incluso cuando el interruptor está abierto. Se utiliza para garantizar que la entrada de voltaje se tire a un nivel lógico alto en ausencia de una señal de entrada.  No es un tipo especial de resistencia. Son resistencias simples de valor fijo conectadas entre el suministro de voltaje y el pin apropiado que define el voltaje de entrada o salida en ausencia de una señal de conducción. Cuando el interruptor está abierto, el voltaje de la entrada de la puerta aumenta al nivel del voltaje de entrada. Cuando el interruptor está cerrado, el voltaje de entrada en la puerta va directamente a un nivel bajo (generalmente GND). Debe usar una resistencia pull-up cuando tiene un estado de impedancia predeterminado bajo y desea llevar la señal a "alto".

En la figura 1, se usa una resistencia pull-up con un valor fijo para conectar el suministro de voltaje y un pin particular en el circuito lógico digital. La resistencia pull-up está emparejada con un interruptor para garantizar que el voltaje entre Tierra y VCC se controle activamente cuando el interruptor está abierto. Al mismo tiempo, no afectará al estado del circuito. Si no utilizamos una resistencia pull-up, se producirá un cortocircuito. Esto se debe a que el pin no puede cortocircuitarse directamente a tierra o VCC, ya que esto eventualmente dañará el circuito. Siguiendo el principio de la ley de Ohm, si hay una resistencia pull-up, una pequeña cantidad de corriente fluirá desde la fuente a las resistencias y al interruptor antes de llegar al pin o a la tierra del circuito.

RESISTENCIAS Pull down

Por otro lado, una resistencia pull down se utiliza para garantizar que las entradas a los sistemas lógicos se establezcan en los niveles lógicos esperados siempre que los dispositivos externos estén desconectados o sean de alta impedancia. Garantiza que el pin del circuito integrado esté en un nivel lógico bajo definido incluso cuando no hay conexiones activas con otros dispositivos. La resistencia de pull down mantiene la señal lógica cerca de cero voltios (0V) cuando no hay ningún otro dispositivo activo conectado. Baja el voltaje de entrada a tierra para evitar un estado indefinido en la entrada. El valor de esta resistencia debería ser mayor que la impedancia del circuito lógico. De lo contrario, el voltaje de entrada en el pin tendrá un valor bajo lógico constante sin importar la posición del interruptor. Cuando el interruptor está cerrado, el voltaje de entrada en la puerta pasa a un voltaje alto (generalmente el valor de fuente de alimentación). 

 

VALORES DE RESISTENCIA IDEALES PARA RESISTENCIAS PULL-UP Y PULL-DOWN

El valor de la resistencia controla cuánta corriente desea que fluya desde VCC a través del botón y luego a tierra. Una corriente alta fluirá a través de la resistencia pull-up si el valor de resistencia es demasiado bajo. 

Para las resistencias pull-up , se debe usar una resistencia que sea al menos 10 veces más pequeña que el valor de la impedancia del pin de entrada del circuito lógico (información del datasheet del circuito integrado). Para dispositivos lógicos que funcionan a 5 V, el valor típico de la resistencia pull-up debe estar entre 1 y 5 kΩ. Por otro lado, para aplicaciones de interruptores y sensores resistivos, el valor típico de la resistencia pull-up debe estar entre 1 y 10 kΩ.

Para las resistencias Pull down , siempre debe tener una resistencia mayor que la impedancia del circuito lógico. De lo contrario, reducirá demasiado el voltaje y el voltaje de entrada en el pin permanecerá en un valor bajo lógico constante, independientemente de si el interruptor está encendido o apagado. 


 

sábado, 1 de julio de 2023

50+ Desafios de Python para principiantes Parte 4

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

50+ Desafios de Python para principiantes Parte 2

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 

Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

50+ Desafios de Python para principiantes Parte 3

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

viernes, 30 de junio de 2023

50+ Desafios de Python para principiantes Parte 1

En este artículo encontrarás desafíos de diferentes niveles de dificultad, desde problemas básicos para principiantes hasta desafíos avanzados para los programadores más experimentados. Cada desafío está cuidadosamente diseñado para poner a prueba tu conocimiento de Python y tu capacidad para pensar de manera lógica y encontrar soluciones elegantes.

Los siguientes desafíos se resuelven mediante comandos básicos de programación en Python, estos se hace con fines didácticos, ya que en algunos caso la solución del desafió puede ser solucionada con funciones existentes. 

 

Lo mejor que puede hacer es ejecutar cada código e intentar comprender cómo funciona todo junto. No tenga miedo de desarmarlo y agregar nuevas funciones. Así es como aprendes.

jueves, 29 de junio de 2023

100+ fragmentos (Snippets) de JavaScript para principiantes

En este artículo, exploraremos algunos ejemplos de fragmentos de código en JavaScript para ayudarte a comprender mejor este lenguaje de programación tan popular. JavaScript es un lenguaje versátil y poderoso que se utiliza ampliamente en el desarrollo web, permitiendo crear interactividad y dinamismo en las páginas. 

 


viernes, 19 de mayo de 2023

¿Qué es un sistema operativo en tiempo real (RTOS)?

Un sistema operativo en tiempo real (RTOS) es un sistema operativo (SO) (a menudo un SO liviano) que ejecuta aplicaciones de subprocesos múltiples y puede cumplir con los tareas en tiempo real. La mayoría de los RTOS incluyen un programador, administración de recursos y controladores de dispositivos. Cuando se habla de "tareas", no necesariamente quiere decir de forma rápida. En cambio, cumplir con las tareas indica un nivel de determinismo, lo que significa que podemos determinar cuándo se ejecutarán ciertas tareas antes del tiempo de ejecución.

Sistema operativo de propósito general versus sistema operativo en tiempo real

A menudo, cuando pensamos en "sistemas operativos", pensamos en cosas como Windows, macOS y Linux. Estos son ejemplos de sistemas operativos de propósito general (GPOS). La mayoría de las veces, estos sistemas operativos están diseñados para la interacción del usuario y proporcionan algún tipo de interfaz, ya sea una interfaz de línea de comandos (CLI) o una interfaz gráfica de usuario (GUI). También están diseñados para ejecutar múltiples aplicaciones, a menudo con subprocesos múltiples, y ofrecen otros beneficios como la administración de recursos/archivos y controladores de dispositivos.


 

miércoles, 17 de mayo de 2023

30 bibliotecas de Python necesarias para el aprendizaje automático

En este artículo, verás las 30 bibliotecas principales de Python para Machine Learning. Python es uno de los lenguajes de programación más populares y ha reemplazado a muchos lenguajes en la industria. Hay varias razones para su popularidad y una de ellas es que Python tiene una gran colección de bibliotecas.

En este artículo, verás las 30 bibliotecas principales de Python para Machine Learning. Python es uno de los lenguajes de programación más populares y ha reemplazado a muchos lenguajes en la industria. Hay varias razones para su popularidad y una de ellas es que Python tiene una gran colección de bibliotecas.




 

viernes, 24 de febrero de 2023

LoRaWAN

Las redes de área amplia de baja potencia (LPWAN) definen una categoría de tecnologías de comunicación inalámbrica. Estas tecnologías suelen ofrecer un rango de enlace de uno o más kilómetros, mientras que un solo elemento de infraestructura (a menudo llamado puerta de enlace) es capaz de soportar cientos de miles de dispositivos como sensores y actuadores. Por lo tanto, las tecnologías LPWAN permiten aplicaciones de Internet de las cosas (IoT), como ciudades inteligentes, por medio de una infraestructura de bajo costo y baja complejidad.

 Entre las tecnologías LPWAN, LoRaWAN (y su modulación relacionada, LoRa), es quizás la tecnología que ha atraído la atención debido a la disponibilidad pública de sus especificaciones, la disponibilidad de hardware certificado y el hecho de que la comunicación LoRaWAN se puede habilitar sin necesidad de establecer una relación con un operador. Los dispositivos LoRaWAN, como sensores o actuadores, generalmente funcionan con baterías, lo cual le da ventajas a la  hora de su implementación en lugares donde no hay disponibilidad de red eléctrica, como por ejemplo zonas de cultivo de alimentos.

LoRaWAN es una tecnología de comunicación inalámbrica diseñada para lograr un largo alcance con un bajo consumo de energía, basada en un sistema de radio de un solo salto. Este enfoque permite superar algunos problemas importantes relacionados con la complejidad de la implementación y los protocolos de enrutamiento de baja energía. Por otro lado, LoRaWAN presenta limitaciones de comunicación, lo que puede limitar la idoneidad de esta tecnología para aplicaciones IoT presentes y futuras.

Figura 1. Sistema LoRaWAN 

viernes, 3 de febrero de 2023

Problema 4.8 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.8. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.8. Debido a la distribución de carga designada como B en la figura 4.23

a) Halle E en el punto (0, 0, 3) si $ \rho _s = 5 mC/m^2.$
b) Halle E en el punto (0, 0, 3) si $ \rho _s = 5 sen (\theta) mC/m^2. $

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

Problema 4.7 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.7. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.7. Halle E en (5, 0, 0) debida a la distribución de carga designada como A en la figura 4.23

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

Problema 4.6 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.6. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.6. Calcule la carga total debida a las distribuciones de carga designadas como A, B y C en la figura 4.23.

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

Problema 4.5 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.5. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.5. Determine la carga total
    a) Sobre la línea $ 0 < x <5m $ si $ \rho _l =12 x^2 $ mC/m.
    b) Sobre el cilindro $ \rho=3, 0 < z <4 m $ si $ \rho _s = \rho z^2 nC/m^2 $
    c) Dentro de la esfera r = 4 m si $ \rho _v= \frac{10}{sen (\theta)} C/m^3 $

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.5 Electromagnetimo

Problema 4.4 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.4. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.4. Las cargas +Qy +30 están separadas por una distancia de 2 m. Una tercera carga está ubicada de tal forma que el sistema electrostático se halla en equilibrio. Determine la ubicación y el valor de la tercera carga en términos de Q.

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

Problema 4.3 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.3. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.3. Las cargas puntuales Quy Q₂ se localizan en (4, 0, -3) y (2, 0, 1), respectivamente. Si Q₂ = 4 nC, halle Q, de manera que:

a) La E en (5,0, 6) carezca de componente z.
b) La fuerza sobre una carga de prueba en (5,0, 6) carezca de componente x.

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

Problema 4.2 - Elementos de Electromagnetismo - Sadiku, M. Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.2. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.2. Cinco cargas puntuales idénticas de 15 μC se localizan en el centro y vértices de un cuadra- do definido por -1 < x,y < 1, z=0.

a) Halle la fuerza sobre la carga puntual de 10 μC en (0,0,2).
b) Calcule la intensidad de campo eléctrico en (0,0,2).

Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

Problema 4.1 - Elementos de Electromagnetismo - Sadiku, M - Ejercicio Resuelto [PASO A PASO]

Solución de ejercicios de electromagnetismo. Problema 4.1. Capitulo 4. Campos Electrostáticos. Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición Problema Elementos de Electromagnetismo, Matthew Sadiku. Tercera Edición

4.1. Las cargas puntuales Q₁ = 5 μC y Q₂ = -4 μC se sitúan en (3, 2, 1) y (-4, 0, 6), respectivamente. Determine la fuerza sobre Q1. Dale clic a la imagen o a este → ENLACE para ver la solución

Problema 4.1 Electromagnetimo

miércoles, 11 de enero de 2023

Interfaz serial I2C

 Vamos a estudiar los conceptos básicos de la comunicación I2C.Otra de las formas de comuncación serial usadas en microcontroladores y microprocesadores para conectar diferentes periféricos Da clic para ampliar la información y aprender más.

Historia









C al cuadrado, a menudo llamado I2C, significa el protocolo Inter Integrated Circuit. I2C fue inventado en 1982 por Philips Semiconductor, ahora conocido como NXP, como un protocolo de comunicación de baja velocidad para conectar dispositivos controladores de microprocesador con dispositivos de destino periféricos de menor velocidad. Desde 2006, la implementación del protocolo I2C no requiere una licencia y muchas empresas de dispositivos de semiconductores, han introducido dispositivos compatibles con I2C.

 

Caracteristicas

I2C es un protocolo ampliamente utilizado por muchas razones. Requiere sólo dos líneas para las comunicaciones. Al igual que otros protocolos de comunicación en serie, existe una línea de datos en serie y una línea de reloj en serie (Figura 1).


Figura 1. 

 

I2C puede conectarse a múltiples dispositivos con solo dos líneas. El dispositivo controlador (maestro) puede comunicarse con cualquier dispositivo de destino (esclavo) a través de una dirección I2C enviada a través de la línea de datos en serie. I2C es simple y económico de implementar para los fabricantes de dispositivos.

I2C tiene varios modos de velocidad, comenzando con el modo estándar, que es un protocolo en serie que llega hasta los 100 kilobits por segundo. A esto le sigue el modo rápido, que alcanza un máximo de 400 kilobits por segundo. Ambos protocolos son ampliamente compatibles y pueden ser utilizados por el controlador si la capacitancia del bus y la capacidad del variador permiten una velocidad más rápida. El modo rápido plus permite una comunicación de hasta 1 megabit por segundo. Para lograr esta velocidad, los conductores pueden requerir fuerza adicional (energía) para cumplir con tiempos de subida y bajada más rápidos (Figura 2).


Figura 2.

Estos tres modos son relativamente similares y utilizan una estructura de comunicación que es la misma. Sin embargo, todos tienen diferentes especificaciones de tiempo para cada uno de los modos, y la implementación de hardware de I2C en los dispositivos es diferente para adaptarse a las diferentes velocidades. I2C también tiene otros dos modos para velocidades de datos más altas.

El modo de alta velocidad tiene una velocidad de datos de hasta 3,4 megabits por segundo. En este modo, el dispositivo controlador primero debe usar un código de controlador para permitir la transferencia de datos a alta velocidad. Esto habilita el modo de alta velocidad en el dispositivo de destino. Este modo también puede requerir una resistencia de  pull-up para impulsar las líneas de comunicación a una velocidad de datos más alta. Ultra-rápido es el modo de operación más rápido y transfiere datos hasta 5 megabits por segundo. Este modo es de solo escritura y omite algunas funciones I2C en el protocolo de comunicación.

Una de las razones por las que I2C es un protocolo común es porque solo se utilizan dos líneas para las comunicaciones. La primera línea es SCL, que es un reloj en serie controlado principalmente por el maestro. SCL se utiliza para sincronizar la entrada y salida de datos del dispositivo de destino. La segunda línea es SDA, que es la línea de datos en serie. SDA se utiliza para transmitir datos entre los dispositivos maestros y los dispositivos de destino (esclavos).

En comparación, la Interfaz Periférica Serial, o protocolo SPI, requiere cuatro líneas para la comunicación. Además del reloj en serie, la línea de selección del chip SPI selecciona el dispositivo para la comunicación, y hay dos líneas de datos, una que se usa para la entrada y otra para la salida del dispositivo de destino.

Para I2C, el dispositivo maestro controla el reloj serial SCL, mientras que SDA se usa para enviar datos en ambas direcciones. El SDA es bidireccional, lo que significa que los dispositivos controladores (maestros) y los dispositivos de destino (esclavos) pueden enviar datos en la línea. Por ejemplo, el dispositivo controlador puede enviar datos de configuración al dispositivo de destino y el dispositivo de destino puede enviar datos medidos por un conversor análogo a digital, de regreso al dispositivo controlador. La comunicación es semidúplex donde solo un maestro o un dispositivo esclavo envía datos en el bus a la vez.

Figura 3.

Un dispositivo controlador I2C inicia y detiene la comunicación, lo que elimina el problema potencial de la contención del bus. Además, la comunicación con el dispositivo de destino se envía a través de una dirección única en el bus. Esto permite tanto múltiples maestros como múltiples dispositivos esclavos en el bus I2C (Figura 3). Las líneas SDA y SCL tienen una conexión de drenaje abierto a todos los dispositivos en el bus. Esto requiere una resistencia pull-up conectada a un suministro de voltaje común (VDD).

Las conexiones de drenaje abierto se usan en líneas SDA y SCL y se conectan a un transistor NMOS. En la figura 4, se muestra un dispositivo I2C conectado a una línea SDA o SCL con una resistencia pull-up a VDD. Esta conexión de drenaje abierto controla la línea de comunicación I2C y la baja o la libera cuando está alta. Para configurar el nivel de voltaje de la línea SDA o SCL, el NMOS se activa o desactiva. Cuando el NMOS está encendido, el dispositivo extrae corriente a través de la resistencia a tierra. La velocidad de la transición está determinada por la velocidad de conmutación del transistor NMOS y la capacitancia del bus en SDA o SCL.

Figura 4.

 Cuando el transistor NMOS está apagado (Figura 5), el dispositivo deja de extraer corriente y la resistencia pull-up atrae la línea SDA o SCL a VDD. Esto hace que la línea este un nivel lógico alto. A través del control de esta conexión de drenaje abierto, tanto SDA como SCL se pueden configurar alto o bajo, lo que permite la comunicación I2C.

Figura 5.

Debido a la capacitancia en la línea de comunicación I2C, la línea SDA o SCL se descarga con una constante de tiempo RC exponencial según el tamaño de la resistencia pull-up y la capacitancia en el bus I2C. Por lo general, las resistencias pull-up se configuran entre 1 kiloohmio y 10 kiloohmios. La velocidad del bus puede ayudar a determinar el tamaño de la resistencia. Con valores resistivos más altos, el bus I2C puede volver los cambios entre niveles lógicos más lentos y limitar la velocidad del bus.

La capacitancia en las líneas de buses también tiene un impacto en la comunicación. Una capacitancia más alta limita la velocidad de la comunicación I2C, la cantidad de dispositivos y la distancia física entre los dispositivos en el bus. Una resistencia pull-up más pequeña tiene un tiempo de subida más rápido pero requiere más potencia para la comunicación. Una resistencia pull-up más grande tiene un tiempo de subida más lento, lo que lleva a una comunicación más lenta, pero requiere menos energía.

Uno de los beneficios de I2C usando un colector abierto es que la contención del bus no lo pondrá en un estado destructivo. Con una salida de drenaje abierto, se pueden conectar muchos dispositivos juntos. Para cualquier salida en esa conexión, si cualquiera de las salidas baja la línea, la línea estará baja. Este tipo de conexión se denomina OR cableado. La salida es el OR lógico de todas las salidas cuando se unen.

Si las salidas fueran del tipo push-pull, no podrían unirse sin la posibilidad de un estado destructivo. Una salida push-pull tiene transistores NMOS y PMOS complementarios que elevan o bajan la salida. Unidos, si una salida es alta y la otra salida es baja, esta contención del bus tendría un estado indeterminado, posiblemente estableciéndose en el punto medio de suministro.

Además, un dispositivo tiene corriente conductora NMOS y otro dispositivo tiene corriente conductora PMOS. Esto generaría corriente de VDD a tierra a través de una ruta de muy baja impedancia, conduciendo tanta corriente como permitieran los transistores. Esto podría ser una cantidad significativa de corriente que podría dañar los dispositivos.

La comunicación I2C se inicia desde el dispositivo controlador con una condición de inicio I2C (Figura 6). Si el bus está abierto, un controlador I2C puede reclamar el bus para comunicación enviando una condición de inicio I2C. Para hacer esto, el dispositivo controlador primero baja el SDA (nivel lógico cero) y luego baja el SCL. Esta secuencia indica que el dispositivo controlador reclama el bus I2C para la comunicación, lo que obliga a otros dispositivos controladores en el bus a detener cualquier intento de comunicación.

Figura 6.

Cuando el dispositivo controlador ha completado su comunicación, libera el SCL alto y luego libera el SDA alto. Esto indica una condición de parada I2C. Esto libera el bus para permitir que otros controladores se comuniquen o para permitir que el mismo controlador se comunique con otro dispositivo.

I2C utiliza una secuencia de 1 y 0 para su comunicación en serie. SDA se usa para los bits de datos, mientras que SCL es el reloj en serie que cronometra la secuencia de bits. Se envía un 1 lógico cuando el SDA libera la línea, lo que permite que la resistencia pull-up lleve la línea a un nivel alto. Se envía un 0 lógico cuando SDA tira hacia abajo la línea (nivel lógico bajo), estableciendo un nivel bajo cerca de GND. Los 1 y 0 se reciben cuando se SCL oscila.


Para considerar un bit válido (Figura 7), el valor de SDA no debe cambiar entre un flanco ascendente y un flanco descendente de SCL para ese bit. Si SDA cambia entre los flancos ascendente y descendente del SCL, esto puede interpretarse como una condición de inicio o parada en el bus I2C.


 Figura 7.

 El protocolo I2C se divide en marcos. La comunicación comienza desde el dispositivo controlador con un marco de dirección. El marco de dirección es seguido por uno o más marcos de datos que consisten en 1 byte. Cada cuadro también tiene un bit de reconocimiento para garantizar que el dispositivo objetivo o el dispositivo controlador hayan recibido comunicación (Figura 8).

Figura 8.

Al comienzo de la trama de dirección, el dispositivo controlador envía la petición para iniciar una comunicación. Primero, el dispositivo controlador baja SDA y luego baja SCL para comenzar. Esto permite que el dispositivo controlador reclame el bus sin disputa de los otros dispositivos controladores en el bus. Cada dispositivo de destino I2C tiene una dirección I2C asociada. Cuando el dispositivo controlador quiere comunicarse con un dispositivo en particular, usa su dirección de dispositivo para enviar o recibir datos en los siguientes marcos I2C.

La dirección I2C consta de 7 bits y todos los dispositivos en el bus I2C deben tener una dirección única (Figura 9). Una dirección de 7 bits normalmente implicaría 2 elevado a la siete, o 128 direcciones únicas. Sin embargo, hay varias direcciones I2C reservadas, lo que limita la cantidad de dispositivos posibles. La dirección se envía con SDA como datos y SCL como reloj serial. Con esta información, debería poder leer la comunicación I2C del dispositivo y comprender lo que se envía y recibe desde el dispositivo controlador y el dispositivo de destino.

Figura 9.

 

Dentro del marco de dirección se encuentra el bit de lectura-escritura (Figura 10). Si este bit es un 1, entonces el controlador quiere leer datos del dispositivo esclavo. Si este bit es un 0, entonces el controlador solicita escribir datos en el dispositivo de destino (esclavo).

Figura 10.

Después de cualquier byte de comunicación entre el dispositivo controlador y el dispositivo de destino, se usa un bit más para verificar que la comunicación fue exitosa. Al final de la comunicación del byte de dirección, el dispositivo de destino baja el SDA durante el pulso SCL para indicar que entendió que el controlador lo estaba contactando Figura 11. Esto se conoce como ACKT, o acuse de recibo para el objetivo. Si este bit es alto, entonces ningún dispositivo de destino entendió que estaba siendo contactado y la comunicación no tuvo éxito. Si el bit es alto, esto se conoce como NACK y no hubo bit reconocido.

 

Figura 11

El marco de dirección va seguido de uno o más marcos de datos (Figura 12). Estos marcos se envían un byte a la vez. Después de que se transfiere el byte de datos, hay otro ACKT, o reconocimiento del objetivo (Figura 13). Si el byte de datos es una escritura en el dispositivo, entonces el dispositivo de destino baja el SDA para reconocer la transferencia. Si el byte de datos es una lectura del dispositivo, el controlador baja el SDA para un ACKC, o reconocimiento del controlador, para acusar recibo de los datos.

Figura 12

 

Figura 13

 

Una vez completada la comunicación, el controlador emite una condición de parada I2C. Primero se lanza SCL y luego se lanza SDA. Este es el controlador que indica que la comunicación se completó y se liberó el bus I2C. Esta es la configuración básica para cualquier comunicación I2C entre el dispositivo controlador y el dispositivo de destino. La comunicación puede estar compuesta por más de 1 byte de datos, y puede requerir una escritura y una lectura del dispositivo para leer cualquier registro de dispositivo dado.