Date added: June 27, 2018
Affected Products: EDM1-CF-IMX6 , EDM1-CF-IMX6SX , EDM1-IMX6PLUS , EDM1-IMX6UL , EDM1-IMX7D , EDM2-IMX6PLUS , PICO-IMX6 , PICO-IMX6UL-EMMC , PICO-IMX6UL-NAND , PICO-IMX6UL-NOR , PICO-IMX7 , TAM-3517 , TC-0700 , TC-0710 , TC-1010 , TEK3-IMX6 , TEK3-IMX6UL , TEP-0500-IMX6UL , TEP-0500-IMX7 , TEP-0700-IMX6UL , TEP-0700-IMX7 , TEP-1010-IMX6 , TEP-1560-IMX6 , THB-3517
This guide shows how to send and receive CAN frames using linux command line on TechNexion SOMs.
Introduction and Setup
Many TechNexion products have two CAN buses. The numbering of these can be a little confusing, since hardware manuals and
schematic uses a 1-based numbering (CAN1 and CAN2), while the linux kernel starts the numbering at zero (
In this article, upper case CAN refers to hardware, and lower case
can1 to the network interface provided by linux kernel.
One of the simplest tests for CAN functionality is to send a can frame from CAN1 to CAN2. It is here assumed that the two CAN buses
are loopbacked so data sent on one port is received on the other.
If the product lacks CAN transceivers (transforming RX/TX based signal to differential), the loopback cabling should kept as short as possible.
The commands used are
First set up the can interfaces with
# ip link set can0 type can bitrate 125000
# ifconfig can0 up
# ip link set can1 type can bitrate 125000
# ifconfig can1 up
Now the buses are ready and set to operate at 125kbps. If needed, triple sampling can also be enabled with the
To receive a CAN frame on
can0, use the command
# candump can0 &
This will display any received frames on the terminal.
Then send a test frame on can1:
# cansend can1 123#CAFEBABE
and the frame should be printed on the terminal by the candump command as
can0 123  CA FE BA BE
Of course the roles of
can1 is swappable.