Skip to main content

XIAO CAN Bus Expansion Board

pir


La XIAO CAN Bus Expansion Board está diseñada específicamente para trabajar con la placa de desarrollo Seeed Studio XIAO, proporcionando una manera fácil y conveniente de agregar comunicación CAN bus a tus proyectos. CAN bus (Controller Area Network) es un protocolo de comunicación ampliamente utilizado en la industria automotriz, sistemas industriales y otros sistemas embebidos, permitiendo un intercambio de datos confiable y robusto entre diferentes nodos.

La integración del controlador MCP2515 y el transceptor SN65HVD230 en la tarjeta de expansión garantiza una comunicación eficiente y sin interrupciones a través del bus CAN. El controlador MCP2515 maneja la gestión del protocolo, el filtrado de mensajes y la gestión de errores, mientras que el transceptor SN65HVD230 convierte las señales digitales del controlador en señales diferenciales necesarias para la comunicación CAN bus.

Con la XIAO CAN Bus Expansion Board, puedes aprovechar el poder de la placa de desarrollo Seeed Studio XIAO y su extenso ecosistema para crear proyectos que requieran comunicación CAN bus. Ya sea que trabajes en aplicaciones automotrices, sistemas de control industrial, proyectos de robótica o dispositivos IoT, esta tarjeta de expansión ofrece una solución confiable y compacta para integrar capacidades de comunicación CAN bus en tus diseños.

La tarjeta cuenta con un terminal de conexión fácil de usar, lo que permite conectar fácilmente las líneas CANH y CANL a la red CAN bus. Su diseño compacto garantiza compatibilidad con diversas carcasas y facilita su integración en tus proyectos existentes.

Al utilizar la XIAO CAN Bus Expansion Board, puedes aprovechar la robustez, confiabilidad y escalabilidad del protocolo CAN bus, permitiendo un intercambio eficiente de datos, control de sistemas e interconectividad en tus proyectos.

Introducción

Características

  • Compatibilidad: Diseñada para funcionar perfectamente con la placa de desarrollo Seeed Studio XIAO.
  • Controlador MCP2515: El chip MCP2515 integrado proporciona un control confiable y eficiente de la comunicación CAN bus.
  • Transceptor SN65HVD230: Garantiza una conversión precisa de señales y una comunicación robusta a través del bus CAN.
  • Conexión mediante terminal: Las líneas CANH y CANL están accesibles a través de un terminal de 3 pines, facilitando la conexión al bus CAN.
  • Diseño compacto: Su factor de forma compacto la hace adecuada para una amplia variedad de aplicaciones.

Especificaciones

  • Compatibilidad: Placa de desarrollo Seeed Studio XIAO.
  • Interfaz de comunicación: CAN bus (Controller Area Network).
  • Transceptor CAN: SN65HVD230.
  • Controlador CAN: MCP2515.
  • Conexión mediante terminal: Terminal de 2 pines para las líneas CANH y CANL.

Aplicaciones

La XIAO CAN Bus Expansion Board se puede utilizar en diversos proyectos que requieran comunicación CAN bus. Aquí tienes algunas ideas de aplicación:

  • Proyectos automotrices: Conecta la tarjeta de expansión a la XIAO y desarrolla aplicaciones automotrices que requieran comunicación CAN bus, como diagnóstico de vehículos o registro de datos.
  • Sistemas de control industrial: Utiliza las capacidades CAN bus para interactuar con dispositivos y sistemas industriales, permitiendo un intercambio eficiente de datos y control.
  • Robótica: Incorpora la tarjeta de expansión en tus proyectos de robótica para habilitar la comunicación entre diferentes módulos y componentes robóticos.
  • Aplicaciones IoT: Integra la tarjeta de expansión con dispositivos IoT para facilitar la comunicación e intercambio de datos a través del protocolo CAN bus.

Consulta la hoja de datos y los ejemplos de la XIAO CAN Bus Expansion Board para obtener instrucciones detalladas sobre su uso y muestras de código.

Descripción del Hardware

pir

  1. GND
  2. CAN-H
  3. CAN-L
  4. Indicadores LED de RX/TX
  5. SN65NVD230
  6. MCP2515

pir

La XIAO CAN Bus Expansion Board tiene un pad marcado como P1 en la parte posterior de la tarjeta, el cual permite agregar una resistencia de terminación al dispositivo al ser puenteado. Dado que algunos dispositivos de comunicación pueden ya contar con una resistencia de terminación, la XIAO CAN-BUS no tiene P1 corto por defecto. Si experimentas problemas en la comunicación CAN, como la imposibilidad de enviar o recibir mensajes, puedes intentar cortar el pad P1 para activar una resistencia de terminación de 120 ohmios.

Biblioteca de Arduino

Proporcionamos una biblioteca de Arduino para la placa MCP2515 que facilita la integración y uso del bus CAN en tus proyectos.


La biblioteca incluye varios ejemplos, entre ellos:

  • OBDII-PIDs - Recupera datos de la interfaz OBD-II.
  • send - Envía un frame al bus CAN.
  • recv - Recibe un frame del bus CAN.
  • set_mask_filter_recv - Recibe un frame del bus CAN utilizando configuraciones de máscara y filtro.

1. Configuración de la Tasa de Baudios

Esta función se usa para inicializar la velocidad de transmisión del sistema CAN Bus.

Las tasas de baudios disponibles son las siguientes:

#define CAN_5KBPS    1
#define CAN_10KBPS 2
#define CAN_20KBPS 3
#define CAN_25KBPS 4
#define CAN_31K25BPS 5
#define CAN_33KBPS 6
#define CAN_40KBPS 7
#define CAN_50KBPS 8
#define CAN_80KBPS 9
#define CAN_83K3BPS 10
#define CAN_95KBPS 11
#define CAN_100KBPS 12
#define CAN_125KBPS 13
#define CAN_200KBPS 14
#define CAN_250KBPS 15
#define CAN_500KBPS 16
#define CAN_666kbps 17
#define CAN_1000KBPS 18

2. Configuración de Máscara y Filtro de Recepción

El chip controlador tiene 2 registros de máscara de recepción y 5 registros de filtro, que pueden usarse para garantizar que los datos sean recibidos solo del dispositivo objetivo. Estos registros son especialmente útiles en redes grandes con múltiples nodos.

Hemos proporcionado dos funciones que permiten utilizar estos registros de máscara y filtro.

Máscara:

init_Mask(unsigned char num, unsigned char ext, unsigned char ulData);

Filtrar:

init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);
  • num representa qué registro usar. Puedes colocar 0 o 1 para la máscara y de 0 a 5 para el filtro.
  • ext representa el estado del frame. 0 significa que es una máscara o filtro para un frame estándar. 1 significa que es para un frame extendido.
  • ulData representa el contenido de la máscara o filtro.

3. Verificar Recepción

El chip controlador MCP2515 tiene la capacidad de operar en modo de sondeo o en modo de interrupción. En el modo de sondeo, el software revisa regularmente si se ha recibido un frame. En el modo de interrupción, se pueden usar pines adicionales para señalar que un frame ha sido recibido o que la transmisión ha finalizado. Esto permite un uso más eficiente de los recursos, ya que el procesador no necesita verificar constantemente la llegada de datos.

Esta función se utiliza para verificar si hay algún frame recibido esperando en el búfer de recepción. Si hay, la función devolverá true, de lo contrario, devolverá false. Puedes usar esta función dentro de un ciclo para verificar continuamente si hay frames recibidos.

INT8U MCP_CAN::checkReceive(void);

4. Obtener el ID del CAN

Puedes usar la siguiente función para obtener la longitud de los datos recibidos del nodo que envió el mensaje.

INT32U MCP_CAN::getCanId(void)

5. Enviar un frame

CAN.sendMsgBuf(INT8U id, INT8U ext, INT8U len, data_buf);

Esta función se utiliza para enviar datos al Bus CAN. Los parámetros son los siguientes:

  • id - El ID del frame CAN.
  • ext - Un valor booleano que representa el estado del frame. '0' significa frame estándar. '1' significa frame extendido.
  • len - La longitud del frame.
  • data_buf - El contenido del mensaje.

Por ejemplo, en el ejemplo de 'send', tenemos:

unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};
CAN.sendMsgBuf(0x00, 0, 8, stmp); //Enviar el mensaje 'stmp' al bus y decirle a otros dispositivos que este es un marco estándar de 0x00.

6. Recibir un frame

La siguiente función se utiliza para recibir datos en el nodo 'receive':

CAN.readMsgBuf(unsigned char len, unsigned char buf);

En condiciones en las que se han configurado máscaras y filtros, esta función solo podrá obtener los frames que cumplan con los requisitos de las máscaras y filtros.

  • len representa la longitud de los datos.
  • buf es donde se almacenan los datos.

Empezando

Hardware

Este producto no incluye el módulo XIAO, por lo que necesitarás comprar un módulo XIAO por separado. En este ejemplo, usamos el XIAO ESP32C3 para fines de demostración, pero otras versiones del módulo XIAO funcionarán de manera similar. La conexión de hardware es sencilla: simplemente inserta el módulo XIAO en la placa de expansión.

Por favor, consulta el diagrama a continuación para la conexión con el XIAO.

pir

Software

  • Paso 1. Descarga la biblioteca CAN Bus desde Github.

  • Paso 2. Consulta Cómo instalar una biblioteca para instalar la biblioteca en Arduino.

  • Paso 3. Después de descargar e instalar correctamente la biblioteca, podrás encontrar un programa de ejemplo llamado send.ino en la carpeta de ejemplos. Este programa está diseñado para el módulo D7S.

#include <mcp_can.h>
#include <SPI.h>

/* Por favor, modifica SPI_CS_PIN para adaptarlo a diferentes placas.

CANBed V1 - 17
CANBed M0 - 3
CAN Bus Shield - 9
CANBed 2040 - 9
CANBed Dual - 9
OBD-2G Dev Kit - 9
OBD-II GPS Kit - 9
Hud Dev Kit - 9
*/

#define SPI_CS_PIN D7

MCP_CAN CAN(SPI_CS_PIN); // Configura el pin CS

void setup()
{
Serial.begin(115200);
while(!Serial);

// El siguiente código es necesario para OBD-II GPS Dev Kit versión Atemga32U4
// pinMode(A3, OUTPUT);
// digitalWrite(A3, HIGH);

// El siguiente código es necesario para OBD-II GPS Dev Kit versión RP2040
// pinMode(12, OUTPUT);
// digitalWrite(12, HIGH);

while (CAN_OK != CAN.begin(CAN_500KBPS)) // inicializa el bus CAN : baudrate = 500k
{
Serial.println("¡FALLO EN EL BUS CAN!");
delay(100);
}
Serial.println("¡BUS CAN OK!");
}

unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};
void loop()
{
CAN.sendMsgBuf(0x00, 0, 8, stmp);
delay(100); // envía datos cada 100ms
}

// FIN DEL ARCHIVO
  • Paso 4. Sube el demo. Si no sabes cómo cargar el código, consulta Cómo cargar el código.

  • Paso 5. Después de cargar el código con éxito, notarás que los LED de RX y TX se encienden, lo que indica que el bus CAN está transmitiendo datos activamente. Si tu bus CAN está conectado a otros dispositivos, estos LEDs parpadearán en lugar de permanecer encendidos de manera continua.

Visor de Esquemas en Línea

Solución de Problemas

P1: ¿Cuál es la velocidad de baudios máxima soportada por la tarjeta de expansión XIAO CAN Bus?

La velocidad máxima de baudios soportada por el controlador MCP2515 en la tarjeta de expansión es de 1 Mbps. Asegúrate de que la configuración de la velocidad de baudios de tu red CAN sea compatible con esta limitación.

P2: ¿Puedo usar múltiples tarjetas de expansión XIAO CAN Bus en la misma red CAN?

Sí, puedes usar múltiples tarjetas de expansión en la misma red CAN. Cada tarjeta de expansión debe tener un ID de nodo único asignado para garantizar una comunicación adecuada y evitar conflictos en el bus.

P3: ¿Puedo usar la tarjeta de expansión XIAO CAN Bus con otros microcontroladores o placas de desarrollo?

La tarjeta de expansión XIAO CAN Bus está diseñada específicamente para funcionar con la placa de desarrollo Seeed Studio XIAO. Sin embargo, con la asignación adecuada de pines y configuración, puede ser posible usarla con otros microcontroladores o placas de desarrollo que soporten los protocolos de comunicación CAN necesarios.

P4: ¿Existen limitaciones en la longitud máxima del cable para la conexión del bus CAN?

La longitud máxima del cable para la conexión del bus CAN depende de factores como la velocidad de baudios, la calidad del cable y la interferencia electromagnética. En general, para velocidades de baudios más bajas, se pueden soportar longitudes de cable más largas (hasta varios cientos de metros). Sin embargo, para velocidades de baudios más altas, se recomienda mantener la longitud del cable más corta (dentro de unos pocos metros) para mantener una comunicación confiable.

P5: ¿Cómo puedo solucionar problemas de comunicación en el bus CAN?

Si encuentras problemas con la comunicación en el bus CAN, puedes seguir estos pasos para la solución de problemas:

  • Verifica las conexiones físicas de la red CAN, asegurando el cableado correcto y la terminación adecuada.
  • Revisa la configuración de la velocidad de baudios y asegúrate de que coincida en todos los dispositivos conectados al bus CAN.
  • Monitorea el tráfico del bus CAN usando un analizador de bus CAN o software de terminal para identificar errores o problemas en los mensajes transmitidos.
  • Revisa el código del programa para una correcta inicialización y configuración del controlador MCP2515.
  • Asegúrate de que la fuente de alimentación de la placa de desarrollo XIAO y de la red CAN esté estable y dentro del rango de voltaje especificado.
  • Si tienes más preguntas o problemas no cubiertos en esta sección de preguntas frecuentes, no dudes en contactar con nuestro equipo de soporte técnico para obtener más ayuda.

Recursos

Soporte Técnico y Discusión del Producto

¡Gracias por elegir nuestros productos! Estamos aquí para ofrecerte diferentes opciones de soporte y asegurarnos de que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...