2. Fundamentos de la red CAN
#Qué es CAN
CAN (Controller Area Network, red de área de controladores) es una red de comunicación creada en los años 1980 para conectar los módulos electrónicos de un vehículo con pocos cables. En lugar de un cable por señal, todos los módulos comparten un único par de cables, el bus, e intercambian mensajes cortos por él. La norma que define la red es la ISO 11898.
Tres ideas explican casi todo sobre CAN:
- Todos escuchan todo. Cuando un módulo transmite, todos los demás reciben el mensaje. Cada uno decide si ese mensaje le interesa o no.
- El mensaje tiene nombre, no destinatario. Cada mensaje lleva un identificador (ID) que dice qué contiene, por ejemplo "RPM y temperatura del motor". No existe dirección de destino.
- No hay jefe. Cualquier módulo puede comenzar a transmitir cuando el bus está libre. Si dos comienzan juntos, la propia red decide quién continúa, sin perder tiempo y sin corromper el mensaje (vea Arbitraje, más adelante).
En la práctica, la VCU usa CAN para conversar con los dispositivos FuelTech (sonda, módulo de ignición, drivers de inyección, paneles), con equipos de otras marcas y con los módulos originales del vehículo.
#Capa física: los cables
El bus CAN de alta velocidad usa dos cables, CAN_H (CAN alto) y CAN_L (CAN bajo), trenzados entre sí. La información está en la diferencia de tensión entre ellos, no en la tensión de cada uno respecto a tierra. Por eso la red tolera bien el ruido eléctrico del motor: una interferencia que entra en los dos cables al mismo tiempo no cambia la diferencia.

Los dos estados posibles son:
- Recesivo (bit 1): los dos cables quedan en unos 2,5 V. Nadie está forzando el bus.
- Dominante (bit 0): CAN_H sube a unos 3,5 V y CAN_L baja a unos 1,5 V, una diferencia de unos 2 V.
Si un módulo transmite dominante y otro recesivo en el mismo instante, el bus queda dominante. Esta regla simple es la base del arbitraje y de la confirmación de recepción.
#Topología y terminación
El bus es una línea, con un comienzo y un fin. Cada módulo se conecta a ella por una derivación corta. En los dos extremos de la línea, y solo en ellos, va una resistencia de 120 Ω entre CAN_H y CAN_L, llamada terminador (resistencia de terminación). Absorbe la señal que llega al final del cable y evita que vuelva reflejada y se mezcle con los bits siguientes.

Reglas prácticas de instalación:
- Use par trenzado (aproximadamente 1 vuelta cada 2 a 3 cm). El cable blindado ayuda en instalaciones con mucho ruido; conecte a tierra la malla en un solo extremo.
- Monte en línea. Evite la conexión en estrella, con varios ramales largos saliendo del mismo punto.
- Mantenga las derivaciones cortas, preferentemente hasta 30 cm.
- Exactamente dos terminadores por bus. Muchos módulos ya traen el terminador interno; otros, como la VCU, permiten activar o desactivar el terminador por software.
La longitud total de la red limita la velocidad, porque la señal necesita ir y volver dentro de un bit. Los valores siguientes son referencias usuales de cable para CAN de alta velocidad:
| Velocidad de transmisión | Longitud máxima de referencia |
|---|---|
| 1 Mbit/s | 40 m |
| 500 kbit/s | 100 m |
| 250 kbit/s | 250 m |
| 125 kbit/s | 500 m |
En un vehículo de competición las distancias son cortas y cualquiera de estas velocidades suele funcionar. Lo que suele fallar es la terminación incorrecta, el empalme mal hecho y la derivación larga.
#La trama CAN
Cada mensaje viaja dentro de una trama (frame). La trama tiene campos fijos antes y después de los datos: sirven para identificar el mensaje, indicar cuántos bytes tiene y verificar si llegó sin error.

| Campo | Qué hace |
|---|---|
| SOF | Start of Frame, inicio de la trama. Un bit dominante que sincroniza todos los módulos. |
| Identificador (ID) | El nombre del mensaje y, al mismo tiempo, su prioridad. Tiene 11 bits en la trama estándar (0x000 a 0x7FF) o 29 bits en la extendida (hasta 0x1FFFFFFF). |
| RTR, IDE, SRR | Bits de control: indican si el ID es estándar o extendido y si la trama es de datos o una solicitud remota (rara hoy). |
| DLC | Data Length Code, código de longitud de datos: cantidad de bytes de datos, de 0 a 8 en el CAN clásico. |
| Datos | De 0 a 8 bytes. Aquí están las señales (RPM, temperatura, presión...). |
| CRC | Código de verificación calculado sobre la trama. Quien recibe lo recalcula y compara. |
| ACK | Confirmación. Cualquier módulo que recibió la trama sin error fuerza este bit a dominante. |
| EOF | End of Frame, fin de la trama. |
Los ID suelen escribirse en hexadecimal, con el prefijo 0x. El ID 0x640, por ejemplo, es 1600 en decimal. Los archivos DBC escriben el ID en decimal; las pantallas y los analizadores suelen usar hexadecimal.
#Arbitraje: quién habla primero
Cuando el bus queda libre, cualquier módulo puede comenzar a transmitir. Si dos comienzan al mismo tiempo, cada uno sigue enviando su ID bit a bit y, al mismo tiempo, leyendo el bus. Como el bit dominante (0) gana al recesivo (1), el módulo que envía 1 y lee 0 percibe que perdió, deja de transmitir y pasa a escuchar. El ganador ni siquiera nota la disputa: su trama sigue intacta.

La consecuencia práctica es que un ID menor tiene mayor prioridad. Los mensajes críticos, como RPM y torque, suelen tener ID bajos. Un módulo que transmite un ID muy bajo con mucha frecuencia puede retrasar a todos los demás.
#Velocidad de transmisión y punto de muestreo
Todos los módulos de un bus necesitan usar la misma velocidad de transmisión (baud rate; en la pantalla Puertas CAN, Tasa de Baud, en kbps, lo mismo que kbit/s). Las velocidades más comunes en vehículos son 500 kbit/s y 250 kbit/s; los equipos de competición y la red FTCAN de FuelTech usan 1 Mbit/s. Un módulo con velocidad distinta no entiende nada y, peor, genera errores que afectan a los demás.

Cada bit se divide en pequeños cuantos de tiempo. El punto de muestreo es el instante, dentro de cada bit, en que el controlador lee si el bus está en 0 o en 1. Se expresa como porcentaje de la duración del bit y normalmente queda entre 75% y 87,5%. Los módulos con puntos de muestreo muy diferentes pueden incluso funcionar en el banco de pruebas y fallar con cable largo o con ruido.
#Detección de errores
CAN es una red muy robusta porque todos los módulos vigilan todas las tramas. Los principales mecanismos son:
- CRC: quien recibe recalcula el código de verificación; si no coincide, la trama se descarta.
- Confirmación (ACK): quien transmite espera que por lo menos otro módulo confirme la recepción. Según la norma, un módulo solo en el bus nunca recibe confirmación y queda repitiendo la trama (la reacción de la VCU está en el capítulo 7).
- Relleno de bits (bit stuffing): después de cinco bits iguales seguidos, el transmisor inserta un bit invertido. Seis bits iguales seguidos indican error.
- Verificación de formato y monitoreo de bit: los campos fijos con valor incorrecto, o un bit que no sale como fue transmitido, también son error.
Al detectar un error, el módulo destruye la trama con una señal de error y el transmisor lo intenta de nuevo. Cada módulo mantiene contadores de error. Con pocos errores trabaja normalmente; con errores de más pasa a un modo restringido y, en el límite, se desconecta del bus para no afectar a los demás. Este estado se llama bus-off. La velocidad de transmisión distinta, la terminación incorrecta y CAN_H y CAN_L invertidos son las causas más comunes de un módulo en bus-off.