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:
Estaba pensando en usar un STM32 con dos canales CAN. Mi intención es configurar dos filtros diferentes en las identificaciones y limitar las interrupciones. ¿Es una buena elección? Se puede hacer con un solo CAN?
Tengo dudas sobre el tipo y la velocidad de procesador a utilizar. ¿Puede un STM32F1 ser suficiente? ¿O necesito un F4?
El cuadro CAN más corto es de 55 bits, por lo que en el peor de los casos con un bus completamente saturado que consiste en cuadros de un byte de datos (que no es realmente realista para un bus CAN con algún tipo de rendimiento útil) recibirá un cuadro cada 220 µS (55 / 250000). El microcontrolador ST más barato que tiene un controlador CAN es el STM32F042 ($1), y 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 manejo del controlador CAN y procesamiento de mensajes CAN, esta es una cantidad considerable de poder de procesamiento, suficiente para volcar los mensajes en una EEPROM o tarjeta SD con una gran cantidad de procesamiento posterior 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, la RAM probablemente será un problema mayor si necesita almacenar mensajes en búfer, etc.
En la práctica, dudo que el bus esté funcionando cerca de su capacidad máxima (aunque solo usted lo sabe) y si puede usar los filtros de hardware para ignorar una parte de los mensajes, obtendrá más y más ciclos de instrucciones por mensaje.
jimmyb
jimmyb
Katte
Jeroen3
Katte