Una de las mayores ventajas del bus CAN como protocolo de comunicación es su independencia de la marca. La ECU, el tablero, el PDM y la TCU no necesitan ser del mismo fabricante para funcionar juntos en la misma red. Siempre que cada dispositivo envíe y reciba mensajes en un formato compatible con los demás, se pueden combinar libremente dispositivos de diferentes fabricantes.
Si bien todo esto funciona bien en teoría, en la práctica te toparás con un obstáculo: tu ECU transmite datos con un ID de arbitraje y en un formato, mientras que el dispositivo al que te conectas espera recibirlos en un formato completamente distinto. Un gateway de bus CAN es el componente que se sitúa en el medio y salva esa brecha. El CAN Triple de Minton Performance es un gateway de tres canales diseñado específicamente para esta función, que te brinda un control completo y programable sobre el enrutamiento de mensajes a través de hasta tres redes CAN independientes simultáneamente.
En este artículo: ¿Qué es la tripleta CAN? | ¿Para quién es? | ¿Qué necesitas para empezar? | ¿Cómo funciona? | Un caso práctico | Conclusión

¿Qué es el CAN Triple?
El CAN Triple es un enrutador y puerta de enlace de bus CAN compacto de tres canales programado en C, basado en un microcontrolador STM32 y diseñado específicamente para entornos de investigación y desarrollo automotrices e industriales. Mitch Minton, de Minton Performance, lo creó frustrado con las opciones disponibles en el mercado, ya que las soluciones existentes carecían del control que necesitaba o imponían restricciones de tiempo que impedían una integración eficiente. El proyecto es completamente de código abierto, y todo el código y la documentación están disponibles en el repositorio de GitHub de Minton Performance .
"Me frustraban las opciones disponibles en el mercado que no ofrecían un control total, y si decían ofrecerlo, no contaban con la sincronización necesaria para que pudiera hacer las cosas con la eficiencia que yo quería". - Mitch Minton
Los tres buses CAN del CAN Triple se gestionan y enrutan de forma independiente, lo que significa que el tráfico en cada bus se procesa por separado y el usuario define con precisión qué sucede con cada mensaje que pasa a través de él. El hardware admite una tensión de entrada de 6 a 32 V y cuenta con protección contra polaridad inversa, con un consumo de corriente nominal de 0,07 amperios. La placa se suministra en una carcasa de plástico y se conecta mediante un conector DTM06-8SA de 8 pines, con CAN High y CAN Low para cada uno de los tres buses en los pines de señal, junto con la alimentación y la tierra.
Cinco LED integrados permiten visualizar el estado del sistema de un vistazo. Un LED de alimentación confirma que el dispositivo recibe tensión de alimentación. Un LED de propósito general se puede activar o controlar mediante código para realizar pruebas y depuración. Los tres LED restantes indican si la resistencia de terminación de 120 ohmios controlada por software está activa o inactiva en cada uno de los tres buses de forma independiente, de modo que siempre se conoce el estado de terminación de cada red sin necesidad de examinar el cableado.
El CAN Triple funciona únicamente en redes CAN 2.0. En su canal de YouTube , Mitch ha indicado que tiene previsto seguir desarrollando la plataforma con el tiempo, así que consulta la documentación más reciente de Minton Performance para conocer las capacidades actuales del hardware.
¿Para quién es?
El CAN Triple está diseñado para preparadores e ingenieros que necesitan una solución programable para gestionar la comunicación del bus CAN entre dispositivos que no se comunican entre sí de forma nativa. Esto abarca dos escenarios principales. El primero es la integración entre componentes del mercado de repuestos , donde se combinan componentes electrónicos de diferentes fabricantes y el formato de salida de un dispositivo no coincide con el que espera otro. El segundo es la integración entre componentes del mercado de repuestos y componentes del fabricante original (OEM) , donde se reemplaza una ECU de fábrica por una unidad independiente, pero el resto de la electrónica del vehículo sigue esperando mensajes en el formato OEM en las direcciones OEM. Ambos problemas se pueden solucionar con el CAN Triple, siempre que se comprenda qué necesita la red y se esté dispuesto a escribir el código necesario.
También resulta útil para consolidar el tráfico de múltiples redes CAN que operan a diferentes velocidades en un único bus unificado. Si dispone de dos redes que operan a diferentes velocidades de bits y desea que todos esos datos sean visibles en un solo bus para fines de registro, el CAN Triple se encarga de la interconexión. Cada bus puede configurarse con una velocidad de bits independiente de hasta 1 Mbit/s.
Este no es un dispositivo plug-and-play. Requiere escribir código C para definir el comportamiento necesario y comprender claramente qué debe hacer la puerta de enlace antes de comenzar. Si ya está familiarizado con conceptos de CAN como identificadores de arbitraje, códigos de longitud de datos, velocidades de bits y terminación, el entorno de desarrollo le resultará accesible. Si está empezando desde cero con el bus CAN, este vídeo es ideal para comprender de qué se trata.

¿Qué necesitas para empezar?
Para programar la CAN Triple se requieren algunas herramientas de software gratuitas instaladas en su computadora, además de un depurador STLINK-V3MINIE o un depurador SWD compatible para cargar el código en la placa. La CAN Triple está disponible en Minton Performance con o sin programador incluido.
Los requisitos de software son los siguientes:
- Python, disponible en python.org. Al instalarlo, asegúrese de marcar la opción para agregar Python a la variable de entorno PATH.
- Visual Studio Code (VS Code), el entorno de desarrollo donde escribirás y gestionarás tu código.
- Extensión PlatformIO para VS Code, que se instala desde el marketplace de extensiones de VS Code. PlatformIO gestiona la cadena de herramientas de compilación para sistemas embebidos.
- Plataforma STM32, instalada desde PlatformIO. Esta proporciona el compilador y el soporte de hardware para el microcontrolador STM32 en el CAN Triple.
- El proyecto base CAN Triple se descargó como un archivo ZIP del repositorio de Minton Performance en GitHub y se abrió en VS Code. PlatformIO inicializa el proyecto automáticamente al abrirlo por primera vez.
Una vez abierto el proyecto, todo el código visible para el usuario se encuentra en el archivo user_code.c . No es necesario modificar el firmware subyacente. Toda la configuración, la lógica de gestión de mensajes y las funciones temporizadas se definen aquí. El repositorio de GitHub también incluye una carpeta de herramientas de generación de código con una herramienta unificada de conversión de DBC a código C para facilitar la conversión del contenido de los archivos DBC en código listo para usar.
¿Cómo funciona?
La configuración comienza con la configuración individual de cada bus. Para cada uno de los tres buses CAN, se define la velocidad de bits, si la resistencia de terminación por software está activa y si el bus funciona en modo normal o en modo de solo escucha (silencioso). Los buses se pueden configurar a diferentes velocidades de bits de forma independiente, por lo que se podría configurar CAN 1 a 500 kbit/s, CAN 2 a 250 kbit/s y CAN 3 a 1 Mbit/s si la aplicación lo requiere.
Cuando se recibe un mensaje en cualquier bus, la función `onReceive` lo procesa. Esta función se llama automáticamente cada vez que llega un nuevo mensaje CAN. Dentro de `onReceive`, se trabaja con una estructura de mensaje CAN que proporciona cinco datos sobre cada mensaje entrante: el bus por el que llegó, si utiliza un ID estándar o extendido, el ID de arbitraje, el código de longitud de datos y la carga útil de datos de hasta 8 bytes. Con estos campos, se implementa la lógica para decidir qué hacer con cada mensaje. Se puede enrutar a otro bus sin modificaciones, decodificar un valor de señal a partir de los bytes de datos, recodificarlo en un formato diferente y transmitirlo a través de un bus distinto con un ID de arbitraje diferente. Cada bus tiene su propia cola de transmisión con capacidad para hasta 256 mensajes, lo que permite al dispositivo gestionar picos de tráfico sin perder datos.
Una consideración práctica al asignar identificadores de arbitraje a los mensajes salientes es la prioridad. En un bus CAN, si dos mensajes intentan transmitirse simultáneamente, el que tenga el identificador de arbitraje más bajo prevalece y se envía primero. Al programar la puerta de enlace, es recomendable asignar los identificadores de arbitraje más bajos a los mensajes más críticos y, posteriormente, aumentar la prioridad. Por ejemplo, una orden de cambio de marchas debería tener prioridad sobre una actualización de la temperatura del aire.
El marco de trabajo también proporciona funciones de eventos temporizados con intervalos que van desde 1 Hz hasta 2000 Hz, donde se puede colocar código que necesite ejecutarse periódicamente en lugar de solo en respuesta a los mensajes recibidos. Aquí es donde se ubican las transmisiones periódicas, como el envío de un mensaje de latido a través de un bus a una frecuencia fija.
Para decodificar los valores de señal a partir de los datos entrantes, el firmware incluye funciones auxiliares que abarcan operaciones con números de coma flotante, enteros con signo, enteros sin signo y máscaras de bits sin procesar. Para tareas más avanzadas, la función `dbc_decode` toma directamente los parámetros del archivo DBC, incluyendo el bit de inicio, la longitud de bits, el orden de bytes, el factor y el desplazamiento, y devuelve el valor de la señal decodificada. La función `dbc_encode` correspondiente toma un valor de señal escalado y lo empaqueta en una matriz de datos de mensaje CAN lista para su transmisión. Estas funciones gestionan la manipulación de bits necesaria para trabajar con señales que no se ajustan exactamente a los límites de los bytes.
Un caso de uso real
Un buen ejemplo del CAN Triple en acción es un proyecto que Mitch completó en colaboración con Tuned By Shawn ( presentado en el podcast HPA Tuned In: 145: Cómo evitar gastar miles en el dinamómetro ), que produjo una solución Haltech plug-and-play para el Corvette C6 Z06 . En teoría, instalar una ECU Haltech en esta plataforma debería ser sencillo. En la práctica, la plantilla de comunicación CAN de Haltech no es definible por el usuario en términos de direcciones de mensajes. La electrónica OEM del Corvette espera mensajes en un formato específico en identificadores de arbitraje específicos, y Haltech no tiene ninguna disposición para cambiar dónde coloca esos datos en la red. Sin intervención, el cuadro de instrumentos de fábrica y otros componentes electrónicos OEM no recibirían lo que esperan.
El CAN Triple resuelve este problema al ubicarse entre el Haltech y el resto de la red del vehículo. Lee los mensajes que transmite el Haltech, decodifica los valores de señal necesarios y los retransmite en los identificadores de arbitraje y en el formato de datos que esperan los sistemas del fabricante. El resultado es un vehículo donde el cuadro de instrumentos, el ABS, el climatizador, las pantallas relacionadas con la transmisión y otras funciones del chasis siguen funcionando correctamente, mientras que el control de tracción se gestiona mediante el sistema Haltech. Si en el futuro se presenta un caso excepcional que revele la falta de un mensaje, este se puede agregar fácilmente al código de la puerta de enlace sin necesidad de modificar la calibración del Haltech.
Una segunda aplicación común es el registro de datos en múltiples redes. Si tiene dos buses CAN funcionando a diferentes velocidades de bits y desea capturar todo ese tráfico en una sola sesión de registro, puede conectarlos a un tercer bus que funcione a la velocidad de bits que admita su registrador. En lugar de registrar cada red por separado y fusionar los archivos posteriormente, todo llega a un solo bus en un flujo unificado. Un tercer bus también puede funcionar en modo de solo escucha para capturar el tráfico en la red de un vehículo de producción sin inyectar ningún mensaje, lo cual es útil para trabajos de ingeniería inversa o diagnóstico donde se necesita observar sin interferir.

Conclusión
El CAN Triple de Minton Performance es una herramienta muy útil para quienes se han topado con las limitaciones de las opciones de integración CAN estándar, ya sea al combinar componentes electrónicos de diferentes fabricantes o al integrar una ECU independiente en una plataforma que aún depende de sistemas CAN OEM. Ofrece un control preciso y de bajo nivel sobre tres buses CAN independientes simultáneamente, con velocidades de bits configurables, terminación controlada por software y un entorno de desarrollo basado en C que amplía considerablemente las posibilidades de desarrollo.
Si desea comprender a fondo el bus CAN antes de abordar un proyecto como este, el curso "CAN Bus Communications Decoded" es el lugar ideal para comenzar.
