¿Cuál STM32 es mejor para registrar una red CAN? [cerrado]

2

Me gustaría construir un proyecto basado en STM32 que interactúe con una red CAN. La red CAN tiene una velocidad de transmisión de 250 kbit / s.

En esta red tengo que:

  • Registre mensajes de 127 nodos con ID entre 0x381 y 0x3FF (cada nodo transmite un mensaje por segundo).
  • Transmitir mensajes a nodos con ID entre 0x581 y 0x5FF.
  • Reciba respuestas a estos mensajes que tendrán ID entre 0x601 y 0x67F.

Estaba pensando en usar un STM32 con dos canales CAN. Mi intención es configurar dos filtros diferentes en las ID y limitar las interrupciones. ¿Es una buena elección? ¿Se puede hacer con una sola CAN?

Tengo dudas sobre el tipo y la velocidad del procesador a utilizar. ¿Puede un STM32F1 ser suficiente? ¿O necesito un F4?

    
pregunta Katte

1 respuesta

15

La trama CAN más corta es de 55 bits, por lo que, en el peor de los casos, con un bus completamente saturado que consta de una trama de bytes de datos (que no es realmente realista para un bus CAN con ningún tipo de rendimiento útil), será recibiendo un marco cada 220 µS (55/250000). El microcontrolador ST más barato que tiene un controlador CAN es el STM32F042 ($ 1), y este tiene una frecuencia de CPU máxima de 48 MHz. Entonces, con este dispositivo, tendría aproximadamente 10560 (48 * 220) instrucciones por mensaje en el peor de los casos.

En términos de tratar con el controlador CAN y procesar los mensajes CAN, esta es una cantidad considerable de poder de procesamiento, suficiente para volcar los mensajes en una tarjeta EEPROM o SD con mucho procesamiento posterior realizado si es necesario. Si eso es realmente todo lo que hace su dispositivo, entonces no me preocuparía demasiado y cualquiera de los dispositivos STM32 estará bien. En todo caso, es probable que la RAM sea un problema mayor si necesita almacenar mensajes, etc.

En la práctica, dudo que el bus se esté ejecutando en algún lugar cerca de la capacidad total (aunque solo usted lo sabe) y si puede usar los filtros de hardware para ignorar una parte de los mensajes, entonces obtendrá más y más ciclos de instrucciones por mensaje.

    
respondido por el Jon

Lea otras preguntas en las etiquetas