Introducción básica al protocolo CAN FD. Conociendo al hermano mayor de CAN.

Hoy toca hablar de un protocolo de comunicación que poco a poco va ganando terreno, sobretodo en el mundo de la automoción pero también a nivel industrial. Este protocolo es CAN FD (Controller Area Network with Flexible Data Rate). CAN FD se podría decir que es una evolución (o extensión) mejorada de CAN (Controller Area Network) y como bien indica su nombre, los dispositivos pueden cambiar dinámicamente el frame rate ajustando el tamaño de los mensajes. CAN FD está definido por la norma ISO 11898-1.

Desde sus inicios en la década de los 80 el protocolo CAN se fue haciendo más popular y prácticamente cualquier máquina que esté en movimiento lo utiliza hoy en día. Su uso se extendió en el sector automovilístico, pero a nivel industrial también se utiliza en robótica y en otros sectores como el naval y el aeronáutico. Pero a medida que pasaba el tiempo los dispositivos electrónicos se volvían mas complejos y aparecían sistemas más avanzados que obligarían a adaptar este protocolo a sus necesidades.

En 2011 Bosch inició el desarrollo de CAN FD en estrecha colaboración con los fabricantes de automóviles y otros expertos y lanzado finalmente en 2012. Este nuevo protocolo mejorado supera las limitaciones actuales de CAN, como por ejemplo que puede transmitir mas rápido de 1Mb/s y la cadena de datos puede tener una longitud de hasta 64 bytes (antes la limitación era de 8bytes).

A grandes rasgos las mejoras son las siguientes:

  • Cableado: Las longitudes de los cableados y su instalación siempre son importantes. Un claro ejemplo sería el recientemente lanzamiento fallido del satélite español llamado Ingenio que se perdió por culpa de unos cables mal ensamblados. Los cableados pueden causar caídas de voltaje, retrasar señales y disminuir la cantidad de corriente, ya que la resistencia es proporcional a la longitud del cable. En el sistema CAN clásico disponer de cables mas largos se traduce en una disminución del ancho de banda. En CAN FD la longitud del cable no es un problema, ya que el ancho de banda siempre será constante y en determinados casos mejorable.
  • Ancho de banda: El CAN clásico solo permite transferir 8 bytes de datos por nodo. Pero hoy en día esto ya no es suficiente y se necesita mucho mas. En CAN FD se ha aumentado a 64 bytes de datos por trama.
  • Velocidad de transferencia de datos: Esta ha aumentado considerablemente con CAN FD. En CAN clásico si un nodo recibe dos señales de datos, el protocolo elige los bits más dominantes para pasar e ignorar los demás. CAN FD admite velocidades duales: velocidad nominal limitada a 1Mbit/s y la velocidad dependiente de la topología de red i/o transceptores. Se pueden alcanzar hasta 8Mbit/s.
  • Confiabilidad: Es un factor clave para los sistemas de control industrial y automatización. Una forma de garantizarlo es emplear sistemas CRC (Cyclic Redundancy Check). En CAN FD se ha actualizado reduciendo el riesgo de errores no detectados.
  • Formato del mensaje: El principal cambio es la capacidad de enviar los datos de control (arbitraje y ACK) con una tasa de bits diferente (normalmente 500Kb/s) y los datos reales de información con otra.

Un tema importante también es el de la compatibilidad entre protocolos. El CAN clásico no es compatible con CAN FD, pero CAN FD si que es compatible con CAN pudiendo utilizar dispositivos de CAN 2.0 y CAN FD en una misma red por ejemplo, bajo ciertas condiciones. En un sistema que mezcle dispositivos con CAN clásico y CAN FD, los controladores CAN FD pueden cambiar a la comunicación CAN clásica para evitar problemas en el envío de las tramas. Y también los nodos CAN clásicos se pueden apagar cuando no se necesiten para permitir un cambio temporal a la comunicación CAN FD. En un sistema formado al cien por cien de nodos CAN FD se puede mezclar sin problemas tramas de datos CAN clásico con tramas CAN FD.

Comparación de la estructura del mensaje entre CAN 2.0 y CAN FD

El protocolo CAN utiliza una versión modificada de Carrier Sense Multiple Access/Collision Avoidance (CSMA/CA) utilizada en Ethernet. Si dos mensajes se envían al mismo tiempo, en lugar de retroceder y volver a intentarlo mas adelante (como es el caso de Ethernet), el circuito físico de CAN (PHY) determina cual de los dos tiene más prioridad sobre el otro y el que tiene menos prioridad se retrasa.

La estructura del mensaje es la siguiente:

  • SOF (Start of frame): Inicio del mensaje (1 bit).
  • MID (Message identifier): Identificador del mensaje. Cuanto más bajo es el valor, más alta es la prioridad del mensaje. La longitud es de 11 o 29 bits (versión estándar o extendida).
  • Campo de control que contiene una EDL (Extended Data Length) para diferenciar entre una transmisión CAN 2.0 y CAN FD y una DLC (Data Length Code) para especificar el número de bytes de datos a seguir, que serán de 0 a 8 para CAN 2.0 y 0-8, 12, 16, 20, 24, 32, 48 o 64 para CAN FD. Para CAN FD también contiene un BRS (Bit Rate Switch).
Valor de DLCLongitud de la sección de datos
0…80…8
912
1016
1120
1224
1332
1448
1564
Codificación del DLC

  • Campo de datos. De 0 a 8 para CAN 2.0 y de 0 a 64 para CAN FD.
  • Cyclic Redundancy Check (CRC). Código que certifica que los datos han sido transmitidos de forma correcta.
  • Campo ACK (Acknowledge): Es un campo vacío que será llenado por cada nodo que reciba la trama. No quiere decir que haya sido recibido por el nodo deseado, sino que indica que al menos un nodo en la red lo recibió.
  • EOF (End Of Frame): Fin del mensaje (1 bit)

Y ahora la gran pregunta es, ¿si se aumenta la cantidad de bytes del mensaje, esto no puede llegar a sobrecargar y/o bloquear el bus? La respuesta es no, y el encargado para que esto no suceda es la variabilidad de la velocidad del bit rate. Por ejemplo, si se envía un mensaje de 64 bytes de datos a velocidad normal esto si que podría llegar a bloquear el bus, con una perdida de rendimiento en tiempo real. Y de aquí que se pueda enviar la carga útil a una velocidad diferente (5Mb/s frente a 1Mb/s). Esta velocidad más alta se aplica a la sección de datos (que va desde el comienzo del bit BRS hasta el último bit de CRC).

Ya para finalizar nombraré algunos dispositivos que encontramos en el mercado (y que algunos analizaremos más adelante).

MCP2518FD (Microchip)

Se trata de un controlador CAN FD externo (compatible con CAN 2.0) y económico. La comunicación con el microcontrolador es por SPI. Si queremos dotar nuestro sistema con un canal CAN FD, pero el microcontrolador no dispone de ello, esta seria una buena opción. También es válido si lo que se quiere es aumentar el número de canales CAN FD que disponemos.

Familia PIC18-Q84 (Microchip)

Nueva extensión para la familia de controladores de 8 bits de Microchip, donde se ha incluido un puerto CAN FD. Está equipada con periféricos independientes del núcleo que permiten que se transmita y reciba datos a través del puerto CAN FD. Más adelante escribiré un artículo con más detalles sobre este microcontrolador.

Familia LPC546XX (NXP)

Microcontrolador basado en procesador ARM Cortex-M4. Dispone de dos canales CAN FD.

Familia S32K1 (NXP)

Se trata de microcontroladores para automoción en que algunas referencias tienen hasta 3 canales CAN FD.

Familia S32K3 (NXP)

En esta familia aún se encuentra en pre-producción, pero podremos encontrar hasta 8 canales CAN FD.

Familia STM32L5 (ST)

Familia de microcontroladores óptima para aplicaciones que necesiten de dispositivos con un consumo muy bajo, como pueden ser aplicaciones IoT, médicas, industriales y de consumo. Dispone de un canal CAN FD.

Familia STM32H7 (ST)

Familia de microcontroladores de alto rendimiento con núcleo ARM Cortex M7. Dispone de 3 canales CAN FD.

TCAN4550-Q1 (Texas Instruments)

Potente controlador externo CAN FD que admite velocidades de datos hasta 8Mb/s. Se comunica con los microcontroladores a través de un puerto SPI.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad