122 lines
3.1 KiB
Markdown
122 lines
3.1 KiB
Markdown
# CAN Bus
|
|
|
|
The Kumquat offers two terminal blocks to access the isolated CAN-FD interface onboard. The following document describes how you can use SocketCAN to evaluate this bus.
|
|
|
|
SocketCAN provides a set of utilities for working with Controller Area Network (CAN) interfaces on Linux systems.
|
|
|
|
## Connector Pinout Description
|
|
|
|
| Location | Description |
|
|
| -------- | ----------- |
|
|
| X2.1 | CAN High |
|
|
| X2.2 | CAN Low |
|
|
| X2.3 | Shield |
|
|
|
|
| Location | Description |
|
|
| -------- | ----------- |
|
|
| X3.1 | CAN High |
|
|
| X3.2 | CAN Low |
|
|
| X3.3 | Shield |
|
|
|
|
![CAN Bus Connector Locations](placeholder_image_link)
|
|
|
|
## Prerequisites
|
|
|
|
Before you begin, ensure you have the following:
|
|
|
|
- 120R Termination Resistor
|
|
- Secondary CAN Interface on another Computer using SocketCAN
|
|
|
|
## Hardware Setup
|
|
|
|
Connect the Termination Resistor to CAN-H and CAN-L onto on of the two CAN-Connectors on the Kumquat.
|
|
|
|
Connect your Computer's CAN-Interface to the other CAN-Connector on the Kumquat.
|
|
|
|
## Configuring and Setting Up SocketCAN Interface
|
|
|
|
### Configuring Bitrate
|
|
|
|
To configure the bitrate of the CAN interface, use the `ip` command with the `link` option:
|
|
|
|
```sh
|
|
ip link set can0 type can bitrate 500000
|
|
```
|
|
|
|
This command sets the bitrate of the `can0` interface to 500 kbit/s. Adjust the bitrate value as per your requirements.
|
|
|
|
### Setting Interface Up
|
|
|
|
To bring the CAN interface up, use the `ip` command:
|
|
|
|
```sh
|
|
ip link set can0 up
|
|
```
|
|
|
|
This command activates the `can0` interface and makes it operational for communication.
|
|
|
|
## Checking SocketCAN Interface
|
|
|
|
### Checking Interface Status
|
|
|
|
To check the status of your SocketCAN interface, use the `ip` command:
|
|
|
|
```sh
|
|
ip -details link show can0
|
|
```
|
|
|
|
This command displays detailed information about the `can0` interface, including its status and configuration.
|
|
|
|
### Checking CAN Interface Statistics
|
|
|
|
To view statistics for the CAN interface, use the `ip` command with the `stat` option:
|
|
|
|
```sh
|
|
ip -details link show can0 stat
|
|
```
|
|
|
|
This command provides statistics such as the number of transmitted and received frames, error counts, and interface state.
|
|
|
|
## Sending and Receiving CAN Frames
|
|
|
|
### Sending CAN Frames
|
|
|
|
To send CAN frames using SocketCAN, you can use the `cansend` command:
|
|
|
|
```sh
|
|
cansend can0 123#1122334455667788
|
|
```
|
|
|
|
This command sends a CAN frame with ID `123` and data `1122334455667788` on the `can0` interface.
|
|
|
|
### Receiving CAN Frames
|
|
|
|
To receive CAN frames, you can use the `candump` command:
|
|
|
|
```sh
|
|
candump can0
|
|
```
|
|
|
|
This command continuously monitors the `can0` interface and prints received CAN frames to the console.
|
|
|
|
## Analyzing CAN Traffic
|
|
|
|
### Filtering CAN Frames
|
|
|
|
You can filter CAN frames based on their ID using the `candump` command with filters:
|
|
|
|
```sh
|
|
candump can0,123:7FF
|
|
```
|
|
|
|
This command only displays CAN frames with ID `123` on the `can0` interface.
|
|
|
|
### Analyzing CAN Traffic with Wireshark
|
|
|
|
To analyze CAN traffic using Wireshark, first, capture CAN frames using `candump` and save them to a file:
|
|
|
|
```sh
|
|
candump can0 > can_traffic.log
|
|
```
|
|
|
|
Then, transfer the log file to a system with Wireshark installed and open it for analysis. |