CAN Overview - VTAstrobotics/Documentation GitHub Wiki


Contents

Prerequisites

None

CAN Basics

CAN is a communication protocol in electronics that allows every component on the network to communicate with each other. It is useful because it can significantly reduce wiring complexity, especially in automobile/robotics applications as the number of electrical components increases. It is a simple and low cost design that allows for communication without centralization, while also allowing a relatively high maximum communication load (~1Mb/s).

This protocol comes with some downsides, however. While the different components on the network can all communicate with each other, they cannot do so simultaneously, and there needs to be a prioritization of communication (called dominant or recessive). All nodes also need to be synchronized.

Requirements

In a CAN network, each node is connected in parallel with all other nodes by a high-voltage line ("CAN High") and a low-voltage line ("CAN Low"). The relationship between a component's electrical output to these two lines determines whether the message is dominant or recessive.

Each node connected on the CAN network requires a CAN controller, a CAN transceiver, and whatever component/sensor/microcontroller/etc. you want to connect to the network.

See the graphic below: https://drive.google.com/file/d/1rkK78oCzAyo_ptJNzqOjM8RRJUBb-PdT/view?usp=sharing