

The Adafruit CAN Pal Breakout (Manufacturer Part ID: 5708) is a compact and versatile breakout board designed for interfacing with CAN (Controller Area Network) devices. It features an onboard CAN transceiver, making it ideal for reliable communication in automotive, industrial, and embedded systems. The breakout simplifies the process of integrating CAN communication into your projects, offering a robust and user-friendly solution.








The Adafruit CAN Pal Breakout is built to meet the demands of modern CAN-based systems. Below are its key technical details:
The breakout board features a total of 8 pins. Below is the pinout and description:
| Pin | Name | Description |
|---|---|---|
| 1 | VIN | Power input (3.3V or 5V). Supplies power to the board. |
| 2 | GND | Ground connection. |
| 3 | SCK | SPI Clock. Used for synchronizing data transfer. |
| 4 | MISO | SPI Master-In-Slave-Out. Data sent from the CAN Pal to the microcontroller. |
| 5 | MOSI | SPI Master-Out-Slave-In. Data sent from the microcontroller to the CAN Pal. |
| 6 | CS | Chip Select. Used to enable communication with the CAN Pal. |
| 7 | INT | Interrupt pin. Signals when a CAN message is received or an error occurs. |
| 8 | RST | Reset pin. Resets the MCP25625 CAN controller. |
The Adafruit CAN Pal Breakout is straightforward to use in a variety of projects. Below are the steps and best practices for integrating it into your circuit.
SCK, MISO, MOSI, and CS to the corresponding SPI pins on your microcontroller.INT pin to a GPIO pin on your microcontroller to handle interrupts.RST pin to a GPIO pin for resetting the CAN controller.INT pin to efficiently handle incoming CAN messages or errors.Below is an example of how to use the Adafruit CAN Pal Breakout with an Arduino UNO. This code initializes the CAN bus and sends a test message.
#include <SPI.h>
#include <Adafruit_MCP2515.h> // Library for MCP25625 CAN controller
// Create an MCP2515 instance
Adafruit_MCP2515 CAN(10); // CS pin connected to pin 10 on Arduino UNO
void setup() {
Serial.begin(115200);
while (!Serial); // Wait for Serial Monitor to open
// Initialize the CAN controller
if (!CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ)) {
Serial.println("CAN initialization failed!");
while (1);
}
Serial.println("CAN initialized successfully!");
// Set the CAN controller to normal mode
CAN.setMode(MCP_NORMAL);
Serial.println("CAN controller set to normal mode.");
}
void loop() {
// Create a CAN message
CANMessage message;
message.id = 0x100; // Standard ID
message.extended = false; // Standard frame
message.len = 8; // Data length
message.data[0] = 0x01; // Example data
message.data[1] = 0x02;
message.data[2] = 0x03;
message.data[3] = 0x04;
message.data[4] = 0x05;
message.data[5] = 0x06;
message.data[6] = 0x07;
message.data[7] = 0x08;
// Send the CAN message
if (CAN.sendMessage(&message)) {
Serial.println("Message sent successfully!");
} else {
Serial.println("Error sending message.");
}
delay(1000); // Wait 1 second before sending the next message
}
CAN Initialization Fails:
No Communication on CAN Bus:
Interrupts Not Triggering:
INT pin not connected or not configured in the microcontroller.INT pin connection and configure the GPIO pin as an input.Data Corruption or Errors:
Can I use this breakout with a 3.3V microcontroller? Yes, the breakout supports both 3.3V and 5V logic levels. Ensure the VIN pin is supplied with the appropriate voltage.
What is the maximum CAN bus length? The maximum length depends on the baud rate. For example, at 1 Mbps, the maximum length is approximately 40 meters.
Do I need external libraries for Arduino?
Yes, you need the Adafruit_MCP2515 library, which can be installed via the Arduino Library Manager.
Can I use multiple CAN Pal Breakouts on the same SPI bus?
Yes, but each breakout must have a unique CS pin connection to the microcontroller.
This concludes the documentation for the Adafruit CAN Pal Breakout. For further assistance, refer to the official Adafruit guide or community forums.