Tabla de contenido:

Interfaz CAN STM32: 7 pasos
Interfaz CAN STM32: 7 pasos

Video: Interfaz CAN STM32: 7 pasos

Video: Interfaz CAN STM32: 7 pasos
Video: STM32 настройка CAN 2024, Noviembre
Anonim
Interfaz CAN STM32
Interfaz CAN STM32

El bus Controller Area Network, o bus CAN, es un protocolo de comunicación muy efectivo gracias a sus capacidades de alta velocidad, confiabilidad de largo alcance e inmunidad al ruido. Por estas razones, la comunicación CAN se ha convertido en el estándar en tecnologías automotrices y entornos de alto ruido. Los dispositivos en el bus CAN se denominan nodos. Todos los nodos del bus CAN están conectados en paralelo, lo que significa que cada nodo está conectado a todos los demás nodos de la red. Un solo bus CAN puede tener hasta 115 nodos a la vez, dependiendo de la velocidad de transmisión de mensajes, pero para la mayoría de las aplicaciones, se recomienda tener hasta 32 dispositivos. También se recomienda mantener la longitud entre el primer y último nodo a menos de 40 metros de distancia.

Este tutorial paso a paso le mostrará cómo configurar un nodo CAN utilizando el microcontrolador STM32, incluido el circuito y el código C simple para leer y escribir en el bus CAN

Suministros

Para cada nodo CAN:

  • 1x placa de ruptura STM32 (Nucleo, Blue Pill, otros)
  • 1x transceptor CAN MCP2551 IC
  • 1x condensador de 0,1 µF
  • 1x resistencia de 120Ω
  • 1 resistencia de 1 kΩ
  • 1+ entrada legible (botón, interruptor, potenciómetro, etc.) o salida (LED, MOSFET, etc.)
  • 1x conector Dsub9

Paso 1: el circuito del transceptor

El circuito del transceptor
El circuito del transceptor

Para comunicarnos con el bus CAN, usaremos el IC del transceptor CAN MCP2551. El IC actúa como un par de transmisor / receptor intermedio para conectar el STM32 al bus CAN. El circuito para configurar este IC es bastante simple, pero hay algunas cosas a tener en cuenta:

  • CAN_RX (pin 4) y CAN_TX (pin 1) en el chip MCP2551 solo pueden ir a ciertos pines del STM32.

    • En el STM32F1 Nucleo, conecte la línea RX al pin PB8 y la línea TX al pin PB9.
    • En la pastilla azul STM32F1, conecte RX al pin PA11 y TX al pin PA12.
    • Tenga en cuenta que estas asignaciones de pines tienen alternativas. Consulte los manuales del microcontrolador para determinar qué pines son capaces de CAN_RD y CAN_TD
    • Si usa un Arduino o una placa sin un comunicador CAN incorporado, se requerirá el chip IC MCP2515 para convertir otros protocolos de mensajes a CAN.
  • El pin CANL debe conectarse a los otros pines CANL de los otros nodos de bus. Lo mismo ocurre con los pines CANH.
  • La resistencia de 120 Ω a través de los pines CANH y CANL solo se requiere si el nodo es un nodo terminal. Esto significa que está al final del cableado de conexión en paralelo. En otras palabras, el bus CAN solo debe tener dos resistencias de 120 Ω y deben estar lo más alejadas posible entre sí.
  • Por último, la resistencia de 1 kΩ en RS (pin 8) se puede cambiar por una resistencia de 10 kΩ para controlar el tiempo de subida / bajada de los bits del mensaje CAN. Consulte la hoja de datos del chip MCP2551 para obtener más detalles.

Paso 2: lectura y escritura en el bus CAN

Lectura y escritura en el bus CAN
Lectura y escritura en el bus CAN

Ahora que el circuito del transceptor está conectado al STM32, podemos comenzar a escribir mensajes en el bus CAN. Esta guía instructiva no profundizará en el código STM32. Sin embargo, asegúrese de consultar nuestro código para ver ejemplos aquí. El uso del STM32 como nodo CAN requerirá un archivo de encabezado CAN. Escribimos el nuestro, que se puede encontrar en nuestro github aquí. Aquí, daremos una breve descripción general del proceso de lectura / escritura.

Para leer desde el bus CAN, primero necesitamos conocer el ID del mensaje CAN. Cada mensaje debe tener un ID único, y los ID más bajos tienen mayor prioridad. El fragmento de código que se muestra aquí está esperando un mensaje CAN con ID 0x622. En nuestro sistema, si el primer bit del sexto byte es alto, entonces queremos establecer el pin A10 alto.

Al escribir un mensaje CAN, debemos recordar que los mensajes CAN son multibyte. Cada mensaje escrito debe tener una identificación y una longitud. En el segundo fragmento de código que se muestra, escribimos datos en cada byte y luego enviamos el mensaje (los parámetros de ID y longitud se definieron anteriormente en el código).

Paso 3: Conexión de nodos

Conexión de nodos
Conexión de nodos

Al conectar varios nodos CAN, se debe prestar especial atención a la longitud de los cables. Los dos nodos más lejanos pueden estar a una distancia de hasta 40 m entre sí. Los nodos intermedios que se conectan al bus deben estar a 50 cm de las líneas principales del bus.

Las conexiones CAN siguen un estándar de la industria de usar un conector Dsub9 con la línea CANL en el pin 2 y la línea CANH en el pin 7. La opción de línea CANGND puede ir en el pin 3.

Paso 4: haz la PCB

Hacer el PCB
Hacer el PCB

Al enrutar señales CAN en una PCB, recuerde que CAN es una señal diferencial y, por lo tanto, se deben seguir cuidadosamente las pautas de enrutamiento para CANH y CANL.

Paso 5: expandir la placa

Expandiendo el tablero
Expandiendo el tablero

Junte algunos nodos más, agregue algunas entradas / salidas y conecte todos sus pines CANH y CANL. Tenga en cuenta que cada STM32 u otro microcontrolador requiere su propio chip MCP2551; no se pueden compartir.

Dicho esto, intente mantener sus PCB más pequeños que el que se muestra aquí

Paso 6: Solicite sus PCB a JLCPCB

Solicite sus PCB a JLCPCB
Solicite sus PCB a JLCPCB

JLCPCB ofrece un servicio rápido y de alta calidad a precios muy razonables. ¡Obtenga 5 tableros, de cualquier color con toneladas de personalización, por solo $ 2! Y si es tu primer pedido, ¡obtén 10 tablas por el mismo precio!

¡Simplemente cargue sus gerbers y obtenga una cotización instantánea! Envíe su pedido y sus tableros serán revisados para producción dentro de una hora. Una vez que pague, puede esperar sus tablas de alta calidad en tan solo tres días.

Compruébalo aquí

Paso 7: ¡Consiga sus tablas

¡Consiga sus tablas!
¡Consiga sus tablas!

Enorme agradecimiento a JLCPCB por patrocinar este proyecto. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), es la empresa de prototipos de PCB más grande de China y un fabricante de alta tecnología que se especializa en la creación rápida de prototipos de PCB y la producción de PCB en lotes pequeños. Tuvieron la amabilidad de proporcionar a UBC Solar nuestros nuevos PCB para nuestro auto de carreras con energía solar. ¡Hicimos nuestro pedido el viernes y recibimos las tablas el miércoles!

Recomendado: