El proyecto can2040 agrega software CAN bus al Raspberry Pi RP2040

El proyecto can2040 es una implementación de bus CAN de software para el microcontrolador Raspberry Pi RP2040 que aprovecha E/S programables (PIO) para leer y escribir tramas de datos CAN 2.0B a velocidades de hasta 1 Mbit por segundo.

Kevin O’Connor, el desarrollador del proyecto, explica además que la implementación usa solo uno de los dos bloques de hardware PIO RP2040, por lo que es posible que un solo chip Raspberry Pi RP2040 tenga dos interfaces de bus CAN separadas.

Raspberry Pi RP2040 can2040 software CAN Bus

Parte del procesamiento también ocurre en uno de los núcleos Arm Cortex-M0+ del microcontrolador y el tiempo de procesamiento depende de la cantidad de tráfico del bus, y un bus CAN completamente saturado a la velocidad más rápida admitida de 1 Mbit/s puede usar hasta alrededor del 30 %. de ese núcleo cuando se registra a 125 MHz, por lo que aún debería dejar mucho espacio para otras tareas que pueden ejecutarse en el sistema. No pude encontrar ninguna información sobre RAM y huella de almacenamiento.

Anteriormente hemos visto implementaciones CAN basadas en hardware con microcontrolador Raspberry Pi RP2040, como CANPico y CanBed RP2040, usando un controlador CAN MCP2515 o MCP2518FD y un transceptor CAN MCP2551 o MCP2562FD, y según tengo entendido, el código can2040 elimina la necesidad del controlador CAN, por lo que solo necesita conectar un receptor CAN, el Raspberry Pi Pico u otra placa RP2040. De esa manera, la implementación del bus CAN de software para RP2040 debería poder interoperar con otras implementaciones de bus CAN (basadas en hardware), y un bus puede consistir en una combinación de nodos can2040 y no can2040. Tenga en cuenta que existen limitaciones que pueden afectar al bus CAN:

La especificación del bus CAN define tres estados de manejo de errores: «error activo» (es decir, estado normal), «error pasivo» y «bus apagado». La transición automática entre estos estados no está implementada. El código can2040 no transmite «tramas de error». El código can2040 no entrará automáticamente en un estado de «autobús apagado». En este sentido, se puede pensar que el código can2040 siempre está en el estado de «error pasivo».

Encontrará más detalles sobre el proyecto en Github con el código fuente C, los scripts de prueba de Python y la interfaz de programación de aplicaciones (API) documentación publicada bajo una licencia GPLv3.

Traducido del artículo en inglés «can2040 project adds software CAN bus to Raspberry Pi RP2040 microcontroller«.

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
StarFive RISC-V SBC