Cómo interpretar bytes de datos de bus CAN

El bus CAN (Controller Area Network) es una especificación de red para transmitir datos. Usado extensamente en automoción para canalizar información de varias partes del coche a la ECU. El bus CAN transmite datos en tramas (frames). Cada trama sigue un estándar específico. Para interpretar los datos, debes entender cómo se construye la trama. Imagina la trama como una serie de cajas conectadas; cada caja tiene propósito y longitud fija. Se lee de izquierda a derecha.

Lo que necesitarás

  • Trama de datos CAN bus (capturada con analizador/logger)

Instrucciones: lectura de trama estándar (11-bit ID) y extendida (29-bit ID)

  1. Primer bit (SOF - Start of Frame): bit dominante (0). Sincroniza mensajes en el bus.
  2. Campo de Arbitraje (Arbitration Field):
    • Trama estándar: 11 bits de Identificador (ID) + 1 bit RTR (Remote Transmission Request) (0 = data frame, 1 = remote frame).
    • Trama extendida: 11 bits ID base + 1 bit SRR (Substitute Remote Request) (recesivo=1) + 1 bit IDE (Identifier Extension) (recesivo=1) + 18 bits ID extendido + 1 bit RTR extendido.
  3. Campo de Control (Control Field): 6 bits. Incluye DLC (Data Length Code) en los últimos 4 bits: indica cuántos bytes de datos lleva la trama (0-8). Usa tabla de Control Field de softing.com para decodificar.
  4. Campo de Datos (Data Field): 0 a 8 bytes según DLC. Es la carga útil (payload).
  5. CRC (Cyclic Redundancy Check): 16 bits (15 bits CRC + 1 bit delimitador). Detecta errores de transmisión.
  6. Campo ACK (Acknowledge): 2 bits: Slot ACK (recesivo, el receptor lo hace dominante si recibe OK) + Delimitador ACK (recesivo). Permite al transmisor y receptor confirmar comunicación exitosa.
  7. End of Frame (EOF): 7 bits recesivos (1111111). Marca fin de trama. Bit recesivo = 1 lógico; dominante = 0 lógico.

Nota: En CAN FD (Flexible Data-rate), el DLC puede codificar hasta 64 bytes y hay bits adicionales (FDF, BRS, ESI). Usa un analizador CAN (PCAN, Vector, SocketCAN) para captura y decodificación automática.