Está en la página 1de 3

I2C, SPI y UART: Cómo hacer el layout de estos buses comunes

Tabla de contenido

 Diferencias entre I2C, SPI y UART

 Protocolo I2C

 Protocolo SPI

 Protocolo UART

 Resumen
Si usted construye una placa de desarrollo para su proyecto o utiliza un microcontrolador común, encontrará muchos protocolos para comunicar otros componentes activos. La mayoría de los
controladores llevan incorporados estándares como USB y Ethernet para trabajar con los periféricos de los ordenadores. Aun así, se utilizan protocolos como I2C, SPI, UART y otros para comunicarse
con los microcontroladores o los CI programables. Las diferencias entre los buses I2C, SPI y UART son sencillas y cualquier diseñador que trabaje con un microcontrolador debe saber cómo configurar el
enrutamiento y el diseño para estos protocolos.

Estos protocolos son estándares de señalización de menor velocidad, por lo que, si trabaja con estos protocolos, casi nunca tendrá que preocuparse de cosas como el control de la impedancia o el
comportamiento de la línea de transmisión. Sin embargo, hay que tener en cuenta algunos aspectos importantes del diseño para garantizar que las señales de las líneas de los buses se lean
correctamente en los receptores. También está la cuestión del direccionamiento, pero el producto concreto y su código son capaces de ocuparse de este aspecto. De momento, veamos cómo se pueden
utilizar estos tres protocolos comunes en el diseño de una PCB, así como algunos elementos importantes para mantener la integridad de la señal.

Diferencias entre I2C, SPI y UART


Cualquier microcontrolador que vaya de los 8 a los de 32 bits utilizará al menos uno de estos protocolos, junto con los GPIO, para la programabilidad y el envío de señales a periféricos sencillos. Estos
tres protocolos serie son protocolos de bus. I2C y UART utilizan esquemas de direccionamiento, mientras que SPI funciona sin direccionamiento. Aunque SPI funcione sin direccionamiento, no deja de
ser un protocolo de bus y sigue pudiendo utilizarse para seleccionar los dispositivos de bajada que van a recibir los datos.

Protocolo I2C
El I2C (pronunciado I-cuadrado C, o a veces IIC por las siglas en inglés correspondientes a circuito inter-integrado) utiliza dos líneas (modos estándar, rápido y rápido plus) para controlar otros
dispositivos; una línea es de reloj (SCL), mientras que la otra es de datos (SDA). Cuenta con tres modos, que se resumen en la tabla siguiente. Ten en cuenta que los valores de tiempo de subida/bajada
presuponen la instalación de las típicas resistencias en serie en las entradas y salidas.
*Supone VDD/VCC = 5,5 V. Se reduce linealmente si VDD/VCC es inferior
**Divide estos valores por 2 para la línea de reloj.

Tenga en cuenta que el modo ultrarrápido es el único en el que la comunicación se utiliza únicamente para las operaciones de escritura de bajada. Este modo también es importante, ya que nos ayuda a
ver cuándo será necesario adecuar la impedancia del bus, lo que en la práctica es casi nunca. Si tomamos un límite muy conservador del 10 % en la longitud de la línea crítica, nos encontraremos con
que la longitud crucial en estas líneas es de 0,32 m, es decir, mucho mayor que el tamaño de la mayoría de las placas que utilizarán el modo I2C. Si utilizamos la frecuencia de corte para el tiempo
mínimo de subida/bajada con un límite del 10 % en la longitud crítica, llegamos a un valor mucho mayor de 0,92 m. Debemos tomar 0,32 m, un número más conservador, para el modo ultrarrápido.
Cualquier línea I2C más corta que este valor no se comportará como una línea de transmisión y únicamente tendremos que preocuparnos del esquema de terminación.

Los puntos importantes en la terminación son la selección de las resistencias pull-up y en serie adecuadas. Las resistencias de pull-up y la capacitancia del bus de línea VDD/VCC forman un circuito RC
de descarga y carga que proporciona una señal al receptor cuando el controlador conmuta. Los valores de las resistencias de pull-up (Rp) para las líneas de señal y de reloj deben respetar la siguiente
desigualdad:

I2C pull-up resistor value.

Esquema de distribución de la tecnología de I2C


La capacitancia del bus se determina utilizando las fórmulas estándar para la impedancia del bus VCC, que se calcula utilizando las mismas ecuaciones que utilizaría para una línea de transmisión (ya
sea microstrip o stripline). Así podrá resolver la capacidad del bus utilizando la impedancia y el retardo de propagación de la línea. Las resistencias en serie son opcionales según la norma I2C, aunque
es posible incluirlas para proteger los dispositivos de los picos de tensión y ralentizar los tiempos de subida/bajada. Consulte la página 59 de la norma I2C para determinar el valor correcto de la
resistencia en serie que debe emparejar con el valor de su resistencia de pull-up.

Protocolo SPI
El protocolo SPI es similar al I2C. En este bus se utilizan un total de cuatro líneas y los componentes pueden disponerse de dos modos posibles. Si se utiliza un único dispositivo controlador para activar
un único dispositivo de bajada, se trata simplemente de una topología punto a punto. La activación de varios dispositivos depende del número de salidas de selección de chip que proporcione el
controlador (modo estándar). El segundo modo utiliza la conexión en cadena margarita, en la que una única salida de selección de dispositivo activa sucesivamente cada uno de los dispositivos de la
propia cadena margarita.

A diferencia de I2C, los distintos parámetros de señalización en SPI son altamente configurables. A menos que esté utilizando una interfaz extremadamente rápida, puede aproximar el nivel de la señal a
través de una interconexión como centro de datos (DC), ya que estará por debajo de la longitud crítica para un comportamiento de línea de transmisión. Luego ya podrá utilizar una resistencia en serie
para terminar la salida de baja impedancia del conductor y garantizar la máxima transferencia de potencia. El método de descarga RC con la capacitancia de la traza mostrada anteriormente es capaz de
controlar la corriente de salida y los tiempos de subida y bajada de tu interfaz.

Protocolo UART
El receptor-transmisor asíncrono universal (UART) es similar al I2C. Estas interfaces tienen una velocidad máxima de datos de unos 5 Mbps. También resulta sencillo trabajar con los dispositivos UART,
ya que no se envía ningún reloj entre los dispositivos; todo se realiza de forma asíncrona. Tenga en cuenta que el reloj interno (del sistema) de cada dispositivo UART debe funcionar a un múltiplo de la
velocidad en baudios (es decir, cada bit se muestrea N veces). Para la comunicación entre un único dispositivo controlador y un único dispositivo descendente se utilizan solamente dos hilos.

Tenga en cuenta que el formato de datos, los niveles de señal y la velocidad en baudios de un dispositivo UART son configurables con un circuito controlador externo. Por desgracia, esto también
significa que hay pocas reglas ineludibles para el enrutamiento y el diseño de los dispositivos UART. Siga las directrices estándar de diseño de alta velocidad para determinar cuándo es necesaria la
terminación, observando el comportamiento de la transición a la línea de transmisión (consulte el artículo que he enlazado anteriormente). Un método típico de terminación para reducir el rebasamiento
es una terminación en serie. Tenga en cuenta que la UART puede estar en reposo a niveles altos o bajos y pueden ser necesarias resistencias de pull-up para establecer el nivel de reposo requerido.
Asegúrese de comprobar las especificaciones del componente antes de añadir resistencias de pull-up.

Encontrará más información sobre la diferencia entre la temporización en los buses síncronos y asíncronos en esta presentación de Max Seeley durante la AltiumLive del 2018.
Resumen
Si las reglas de SPI y UART parecen un poco vagas, esto se debe a que tiene más libertad para diseñar su interfaz a nivel de firmware. Una vez que cualquiera de estos estándares se ejecuta a
frecuencias de borde rápidas, son susceptibles de sufrir interferencias, al igual que los estándares de señalización de alta velocidad. Sin embargo, al tener mucha flexibilidad en la especificación,
normalmente puedes diseñar las pistas para que tengan una inductancia menor y reduzcan la interferencia inductiva. Esto le permite tener cierto margen a la hora de enrutar estas señales y hacer que
funcionen muy fácilmente en su próximo sistema digital.

Cuando se diseñan sistemas digitales con estándares de señalización comunes, es posible hacerlo teniendo en cuenta las diferencias entre I2C, SPI y UART gracias a las reglas de diseño de Altium
Designer®. El administrador de pilas de capas y el solucionador de campo 3D integrado de Simberian utilizan la geometría de la placa y la geometría de las pistas para extraer la capacitancia y las
parásitas de los buses en las líneas de señal.

Altium Designer, en combinación con Altium 365, ofrece una integración sin precedentes en la industria electrónica que hasta ahora había quedado relegada al mundo del desarrollo de software, lo que
permite a los diseñadores trabajar desde casa y alcanzar niveles de eficiencia sin precedentes.

Tan solo hemos rascado un poco la superficie de lo que es posible hacer con Altium Designer en Altium 365. Puede consultar la página del producto para obtener una descripción más detallada de sus
características, así como alguno de los seminarios web a la carta.

También podría gustarte