Catto / Mapa de Temas · Técnicas Digitales II 4to nivel
Técnicas Digitales II · 120 h · Contenido 5 de 6

Comunicaciones y protocolos seriales

Una trama CAN lleva a lo sumo 8 bytes de datos y 47 bits de control. Por eso, aun a 1 Mbit/s, el bus de un auto no transporta más de unos 72 kB/s de datos útiles.

UART SPI I²C CAN Codificación de línea

01Por qué casi todo es serie

Durante décadas los datos viajaron en paralelo: ocho, dieciséis o treinta y dos líneas a la vez. A alta velocidad eso deja de funcionar: los bits de un mismo dato llegan con diferencias de tiempo por las distintas longitudes de las pistas, y cada línea que conmuta agrega ruido a las vecinas. Una sola línea diferencial, bien adaptada, llega hoy a decenas de gigabits por segundo. Por eso USB, SATA, PCI Express y Ethernet reemplazaron a sus antecesores paralelos, y en la placa, dos o tres cables de un bus serie reemplazan a un bus de datos completo.

La diferencia fundamental es cómo sabe el receptor cuándo leer cada bit. En un enlace sincrónico viaja un reloj aparte; en uno asincrónico, los dos extremos acuerdan la velocidad y se sincronizan con un bit de arranque; en los enlaces rápidos, el reloj va embebido en los datos y el receptor lo recupera. Los circuitos se presentan en la tecnicatura, en comunicación serie y buses serie.

02Dentro de la placa: UART, SPI e I²C

UARTSPII²C
LíneasTX y RXSCLK, MOSI, MISO y una selección por esclavoSDA y SCL, de drenaje abierto con resistencias de pull-up
RelojAsincrónico, velocidad acordadaSincrónico, lo genera el maestroSincrónico, lo genera el maestro
Velocidad típica9600 a 1 Mbit/s1 a 50 MHz100 kHz, 400 kHz o 1 MHz
DispositivosDosUno por línea de selecciónHasta 127, por dirección de 7 bits
SobrecargaArranque y parada por byteNingunaDirección y un bit de reconocimiento por byte

La UART tolera una diferencia de velocidad limitada entre los dos extremos: el receptor muestrea en el centro de cada bit contando desde el flanco de arranque, y al décimo bit el error acumulado no puede superar medio bit. En la práctica, la suma de los errores de los dos relojes debe quedar por debajo de alrededor del 4 %, lo que descarta a veces el oscilador RC interno.

En I²C, las líneas se ponen en bajo activamente y suben por las resistencias de pull-up. El tiempo de subida, que la norma limita, fija el valor máximo de la resistencia:

\[ R_{p,max} = \frac{t_r}{0{,}8473\; C_b} \] \( t_r \) es el tiempo de subida entre el 30 % y el 70 % y \( C_b \) la capacidad total del bus. A 400 kHz (\( t_r \le 300 \) ns) con 200 pF de bus, la resistencia no puede superar 1,8 kΩ. Con más dispositivos o cables más largos, hay que bajar la velocidad.

03Buses de campo: CAN y RS-485

Fuera de la placa, entre equipos, los buses usan señales diferenciales: dos cables trenzados que llevan la señal y su opuesta, de modo que el ruido que afecta a los dos por igual se cancela en el receptor. RS-485 define solo la capa eléctrica, para hasta 32 cargas unitarias sobre 1200 m. CAN, diseñado para los autos, agrega un protocolo completo:

  • Arbitraje no destructivo. El bit 0 es dominante: si dos nodos transmiten a la vez, el que envía un 1 y lee un 0 se retira sin perder nada. Gana el identificador más bajo, que es el de mayor prioridad.
  • Relleno de bits. Después de cinco bits iguales se inserta uno opuesto, para que haya flancos suficientes para resincronizar los relojes. El largo de la trama depende de los datos.
  • Detección de errores. CRC de 15 bits, reconocimiento de todos los receptores y contadores que desconectan a un nodo defectuoso.
Laboratorio · el costo de una trama

Se envían \( n \) bytes por el protocolo elegido. El gráfico muestra los primeros bits de la trama, con sus campos (el primer dato es 0x4B), y abajo, cuánto de la trama son datos útiles. En CAN, el identificador es 0x123 y se calcula el relleno real de bits con el CRC.

04Alta velocidad

Por encima de unos cientos de megabits por segundo, cada enlace es una línea de transmisión diferencial de impedancia controlada, típicamente 90 o 100 Ω, terminada en el receptor. LVDS usa una excursión de apenas 350 mV, que conmuta rápido y consume poco. El reloj no viaja aparte: se codifica en los datos para garantizar transiciones, y el receptor lo recupera con un PLL.

EnlaceVelocidad por líneaCodificaciónEficiencia
USB 2.0 alta velocidad480 Mbit/sNRZI con relleno de bitsDepende de los datos: en el peor caso, un bit extra cada seis
PCI Express 2.0 y USB 3.05 Gbit/s8b/10b80 %
PCI Express 3.08 Gbit/s128b/130b98,5 %
Ethernet 10GBASE-R10,3 Gbit/s64b/66b97 %

La calidad de un enlace rápido se evalúa con el diagrama de ojo: se superponen en el osciloscopio todos los bits sincronizados con el reloj recuperado. Un ojo abierto significa que el receptor distingue bien los ceros de los unos; el ruido, el jitter y las reflexiones lo cierran.

05Dónde aparece en la electrónica

AplicaciónBus típico
Sensor de temperatura o acelerómetro en una placaI²C o SPI
Pantalla o memoria flash externaSPI, o QSPI con cuatro líneas de datos
Consola de depuración de un microcontroladorUART
Automóvil, maquinaria agrícolaCAN y CAN FD
Automatización industrialRS-485 con Modbus, o Ethernet industrial
Placa de video, disco de estado sólidoPCI Express

06En el laboratorio

Actividad 1 · Decodificar tramas

Con un analizador lógico, capturar una transacción I²C con un sensor y una SPI con una memoria. Identificar dirección, reconocimientos y datos, y medir la velocidad real del reloj.

Actividad 2 · Tiempo de subida en I²C

Medir el tiempo de subida de SDA con pull-ups de 10 kΩ, 4,7 kΩ y 1 kΩ, y verificar cuál cumple la norma a 400 kHz.

Actividad 3 · Dos nodos CAN

Armar un bus CAN con dos microcontroladores y sus transceptores, con terminaciones de 120 Ω. Enviar tramas con identificadores distintos al mismo tiempo y observar el arbitraje.

07Errores frecuentes

  • Olvidar las pull-up de I²C, o poner demasiadas. Cada módulo trae las suyas y en paralelo bajan tanto la resistencia que los dispositivos no pueden poner la línea en bajo.
  • Confundir el modo de SPI. La polaridad y la fase del reloj tienen que coincidir en maestro y esclavo; si no, los datos llegan corridos un bit.
  • No terminar un bus CAN o RS-485. Sin las resistencias de los extremos, las reflexiones corrompen los bits.
  • Calcular el tiempo de una trama CAN sin el relleno. En el peor caso agrega 24 bits a una trama de 111: casi un 22 %.

08Autoevaluación

¿Cuánto tarda en enviarse un byte por UART 8N1 a 115 200 bit/s?

10 bits: 86,8 µs.

¿Cuántos bits ocupa en I²C escribir 2 bytes a un dispositivo?

Arranque, 9 bits de dirección y 9 por byte y parada: \( 9 \cdot 3 + 2 = 29 \).

Dos nodos CAN transmiten a la vez los identificadores 0x120 y 0x123. ¿Cuál gana?

0x120, el menor: en el primer bit en que difieren envía un 0 dominante.

¿Qué eficiencia tiene la codificación 8b/10b?

80 %: cada 8 bits de datos se transmiten 10.

09Para ampliar

  • NXP Semiconductors. UM10204: I²C-bus Specification and User Manual. Rev. 7, 2021. La norma del bus I²C, con los tiempos, las velocidades y el cálculo de las resistencias de pull-up.
  • Wilfried Voss. A Comprehensible Guide to Controller Area Network. 2.ª ed., Copperhill, 2005. CAN explicado desde la capa física hasta el manejo de errores.
  • Howard Johnson y Martin Graham. High-Speed Signal Propagation: Advanced Black Magic. Prentice Hall, 2003. Los enlaces serie rápidos como problema de líneas de transmisión, pérdidas y ecualización.
Desarrollo del contenido «Comunicaciones y protocolos seriales» de Técnicas Digitales II (cuarto nivel), según el diseño curricular de Ingeniería Electrónica, Plan 2023 — Ordenanza N° 1849 del Consejo Superior de la UTN. Volver al Mapa de Temas · catto.ar