Noticias de la compañía

¿Qué es la bus CAN?


¿Qué es la bus CAN?cid=16


1. Introducción a la bus CAN


1.1 ¿Qué es CAN?

La bus CAN, que significa Controller Area Network (Red de Área de Controlador), fue originalmente desarrollada por la empresa alemana Bosch. La motivación inicial detrás de su creación fue resolver los problemas de comunicación entre los numerosos sistemas de control electrónico en los vehículos modernos, reduciendo la creciente cantidad de cables de señal. Como resultado, Bosch diseñó una red de bus única, permitiendo que todos los dispositivos periféricos se conectaran a esta bus.


1.2 Características de la bus CAN

  • Capacidad Multi-Master: La bus CAN opera en un modo multi-maestro, lo que significa que cualquier nodo en la red puede enviar mensajes a otros nodos en cualquier momento, sin estar limitado a una comunicación maestro-esclavo. Esto proporciona una comunicación flexible.

  • Flexibilidad del sistema: Debido al diseño de la bus CAN, los nodos pueden decidir autónomamente cuándo enviar datos, lo que permite que el sistema se adapte de manera flexible a diferentes necesidades y condiciones de comunicación.

  • Alta velocidad y largo alcance: La bus CAN soporta altas velocidades de transmisión de datos y puede transmitir datos de manera confiable a largas distancias, gracias a su eficiente protocolo de comunicación y fuertes capacidades de inmunidad a interferencias.

  • Detección de errores, notificación y recuperación: La bus CAN utiliza mecanismos como la verificación de redundancia cíclica (CRC) para detectar errores durante la transmisión de datos. Cuando se detecta un error, el nodo envía un frame de error para notificar a otros nodos en la red. El sistema puede luego tomar acciones correctivas, como retransmitir los datos, para asegurar la precisión de la transmisión.

  • Aislamiento de fallos: La bus CAN puede aislar nodos defectuosos, evitando que el fallo se propague a toda la red, asegurando así la estabilidad del sistema.

  • Soporta muchos nodos: La bus CAN puede soportar hasta 110 nodos teóricamente, lo que la hace adecuada para comunicaciones de red a gran escala.


2. Estructura física de la bus CAN


2.1 Principio de la bus CAN

El controlador CAN determina el nivel de la bus en función de la diferencia de potencial entre dos cables (CAN_H y CAN_L). El nivel de la bus se divide en dos estados: dominado (lógico 0) y recesivo (lógico 1). El transmisor cambia el nivel de la bus para enviar un mensaje al receptor.

Componentes de hardware de la bus CAN

  • Microcontrolador (por ejemplo, microcontroladores de la serie 51): Responsable del procesamiento de datos y control de la comunicación.

  • Controlador CAN (por ejemplo, SJA1000): Se encarga de implementar el protocolo CAN y generar los frames de datos.

  • Transceptor CAN (por ejemplo, PCA82C250): Convierte las señales digitales del controlador CAN en señales eléctricas adecuadas para la transmisión en la bus CAN. Algunos microcontroladores modernos, como los de la serie STM32, tienen controladores CAN integrados, por lo que solo se necesita un transceptor CAN adicional (por ejemplo, SN65HVD230) para manejar la conversión de señales.

La bus CAN consta de dos cables: CAN_H (alto) y CAN_L (bajo), que utilizan señales diferenciales para transmitir datos, lo que mejora la inmunidad a las interferencias. Normalmente se utilizan cables trenzados apantallados para reducir las interferencias electromagnéticas.


2.2 Bus CAN vs I2C

Tanto la bus CAN como I2C (Inter-Integrated Circuit) son protocolos de comunicación serial utilizados para la comunicación entre dispositivos, pero difieren en varios aspectos:

  • Uso: La bus CAN se utiliza principalmente en aplicaciones de alta fiabilidad, como control industrial y redes automotrices, mientras que I2C se utiliza comúnmente para control y transmisión de datos a baja velocidad.

  • Velocidad: La bus CAN puede alcanzar velocidades de hasta 1 Mbps, mientras que I2C generalmente opera a menos de 400 Kbps.

  • Cableado: La bus CAN utiliza cables trenzados, mientras que I2C puede utilizar configuraciones de dos, tres o cuatro cables, siendo la configuración de dos cables la más común.

  • Dirección: La bus CAN utiliza identificadores de 11 bits o 29 bits para la identificación de dispositivos, mientras que I2C utiliza direcciones de 7 bits o 10 bits.

  • Modo de operación: La bus CAN es un protocolo de comunicación asincrónica en un entorno multi-maestro, mientras que I2C es un protocolo de comunicación sincrónica, utilizado normalmente en un entorno de un solo maestro.

En resumen, aunque ambos son protocolos de comunicación serial, sus escenarios de aplicación y características son diferentes.


3. Propiedades eléctricas de la bus CAN

La bus CAN utiliza señales diferenciales para sus señales eléctricas, transmitidas a través de dos cables (CAN_H y CAN_L). Una de las principales ventajas de las señales diferenciales es su mayor inmunidad a las interferencias electromagnéticas externas.

  • Cuando el controlador CAN transmite un lógico 1, el transceptor establece CAN_H y CAN_L a 2.5V, lo que da como resultado una diferencia de voltaje de 0V, conocida como nivel recesivo.

  • Cuando el controlador CAN transmite un lógico 0, el transceptor establece CAN_H a 3.5V y CAN_L a 1.5V, lo que da como resultado una diferencia de voltaje de 2V, conocida como nivel dominante.

  • Cuando varios nodos intentan enviar mensajes simultáneamente, se involucra el arbitraje de la bus.


4. Tipos de frames CAN


4.1 Tipos de frames CAN

El protocolo CAN (Controller Area Network) define varios tipos diferentes de frames de datos. A continuación, se describen los tipos básicos de frames CAN:

  • Frame de datos: Un frame utilizado para enviar datos desde el nodo transmisor al nodo receptor.

  • Frame remoto: Un frame utilizado por el nodo receptor para solicitar datos del nodo transmisor con el mismo ID.

  • Frame de error: Un frame enviado cuando un nodo CAN detecta un error, notificando a otros nodos del error (esto se hace automáticamente mediante hardware).

  • Frame de sobrecarga: Enviado por un nodo CAN cuando no puede procesar los datos recibidos a la velocidad de baudios actual (esto también lo maneja el hardware).

  • Espacio entre frames: Un frame que separa los frames de datos y los frames remotos del frame anterior (esto también lo maneja el hardware).

De estos, los frames de error, los frames de sobrecarga y el espacio entre frames son gestionados por hardware y no pueden ser controlados por software. Para los usuarios generales, entender los frames de datos y los frames remotos es suficiente.


4.2 Frame de datos

Un frame de datos consta de siete segmentos: Inicio de frame, Campo de arbitraje, Campo de control, Campo de datos, Campo CRC, Campo ACK y Fin de frame.

  • Inicio de frame: Marca el comienzo del frame de datos.

  • Campo de arbitraje: Indica la prioridad del frame.

  • Campo de control: Contiene información sobre el número de bytes de los datos y bits reservados.

  • Campo de datos: Contiene los datos reales (pueden ser de 0 a 8 bytes).

  • Campo CRC: Se utiliza para la detección de errores en la transmisión del frame.

  • Campo ACK: Indica la confirmación de recepción exitosa.

  • Fin de frame: Marca el final del frame de datos.

Proceso de transmisión de un frame de datos:

  • Cuando la bus está inactiva, el nodo transmisor comienza enviando el Inicio de frame.

  • Luego, envía los campos Arbitraje y Control.

  • Si el DLC (código de longitud de datos) no es cero, se envía el Campo de datos.

  • Luego se envía el Campo CRC para la detección de errores.

  • Si el nodo receptor recibe correctamente el frame, coloca el ACK en el Campo ACK para confirmar la recepción.

  • Finalmente, el nodo transmisor envía el Fin de frame para completar la transmisión del frame.


Campo de arbitraje

El campo de arbitraje tiene un formato estándar (11 bits) y un formato extendido (29 bits). El ID en el campo de arbitraje identifica la unicidad del frame y determina su prioridad en la bus. Cuanto menor sea el número de ID, mayor será la prioridad del frame.

  • RTR (Solicitud de transmisión remota): Indica si este frame es un frame de datos o un frame remoto.

  • IDE (Extensión de identificador): Indica si el campo de arbitraje utiliza un formato estándar (ID de 11 bits) o extendido (ID de 29 bits).


Campo de control

El campo de control sigue al campo de arbitraje y contiene información importante sobre los datos que se van a transmitir. Los campos detallados incluyen:

  • DLC (Código de longitud de datos): Un campo de 4 bits que indica el número de bytes en el campo de datos.

  • RTR (Solicitud de transmisión remota): En los frames de datos, este bit es dominante (0), lo que indica que este frame contiene datos reales. En los frames remotos, es recesivo (1), indicando que es un frame de solicitud de datos.

  • IDE (Extensión de identificador): Solo está presente en los frames de formato extendido, indicando si el campo de arbitraje utiliza el formato estándar o extendido.


4.3 Frame remoto

Un frame remoto en la bus CAN es esencialmente una solicitud de datos. Cuando un nodo necesita datos de otro nodo, envía un frame remoto, que solo contiene los campos de Arbitraje y Control y no tiene el campo de Datos.

Composición del frame remoto:

  • Inicio de frame (SOF): Marca el inicio del frame.

  • Campo de arbitraje: Contiene el identificador (ID) y el bit de Solicitud de transmisión remota (RTR), que es recesivo (1) para indicar que este es un frame remoto.

  • Campo de control: Contiene el DLC (Código de longitud de datos), que generalmente se establece en 0 en los frames remotos, ya que no contienen datos.

  • Campo CRC: Se utiliza para la detección de errores.

  • Campo ACK: Se utiliza para confirmar que el frame ha sido recibido correctamente.

  • Fin de frame: Marca el final del frame remoto.


Diferencia entre Frame de datos y Frame remoto: Los frames de datos y los frames remotos son similares en estructura, pero los frames remotos no tienen un Campo de datos. El bit RTR en los frames de datos es dominante (0), mientras que en los frames remotos es recesivo (1), indicando que el frame está solicitando datos.


Aplicación del frame remoto: Los frames remotos son útiles cuando se necesitan obtener datos periódicamente de un nodo, como cuando un controlador central en sistemas automotrices o de automatización industrial obtiene datos en tiempo real de sensores.