Open main menu

Humanoid Robots Wiki β

Changes

Controller Area Network (CAN)

1,432 bytes added, 1 May
no edit summary
The MCP2515's operational details include its capacity to support CAN 2.0A and B, drawing attention to its alignment with established CAN standards and equipping it for both basic and extended frame format usage.<ref>MCP2515 Stand-Alone CAN Controller with SPI Interface. Microchip Technology. [https://www.microchip.com/wwwproducts/en/en010406 Official datasheet].</ref>
 
=== Applications ===
The [https://python-can.readthedocs.io/en/stable/ python-can] library provides Controller Area Network support for Python, providing common abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a CAN bus.
 
There is an example of an installation on [[Jetson_Orin]] here.
 
==== Pi4 ====
Raspberry Pi offers an easy to deploy 2-Channel Isolated CAN Bus Expansion HAT which allows to quickly integrate it to the peripheral devices. See the [https://www.waveshare.com/wiki/2-CH_CAN_HAT tutorial] for more information
 
=== Arduino ===
Arduino has a good support of the MCPs with many implementations of the [https://github.com/Seeed-Studio/Seeed_Arduino_CAN drivers]
 
=== MCP2515 Driver ===
By default the CAN bus node is supposed to acknowledge every message on the bus weather or not that node is interested in the message. However, the interference on the network can drop some bits during the communication. In the standard mode, the node would not only continuously try to re-send the unacknowledged messages, but also after a short period it would start sending error frames and then eventually go to bus-off mode and stop. This causes sever issues when the CAN network works with multiple motors.
 
The controller has a [http://ww1.microchip.com/downloads/en/DeviceDoc/MCP2515-Stand-Alone-CAN-Controller-with-SPI-20001801J.pdf one-shot] setup that requires changes in the driver.
 
==== MCP2515 Driver ====
== References ==