DESK-MX9-L/Peripherals/CAN

From DAVE Developer's Wiki
Jump to: navigation, search
History
Issue Date Notes

2024/01/30

DESK-MX9-L-5.x.x release
2026/02/16 DESK-MX9-L-6.x.x release


Peripheral CAN[edit | edit source]

Device tree configuration[edit | edit source]

Here below is an example of device tree configuration used on standard DAVE's kit for the AURA SOM:

From imx93-aura.dtsi:

...
&flexcan2 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_flexcan2>;
	status = "okay";
};
...
&iomuxc {
...
    pinctrl_flexcan2: flexcan2grp {
		fsl,pins = <
			MX93_PAD_GPIO_IO25__CAN2_TX	0x139e
			MX93_PAD_GPIO_IO27__CAN2_RX	0x139e
		>;
	};
...
};

Accessing the peripheral[edit | edit source]

Linux messages at boot time[edit | edit source]

...
[    1.527184] can: controller area network core
[    1.536411] can: raw protocol
[    1.539420] can: broadcast manager protocol
[    1.543646] can: netlink gateway - max_hops=1
...

Enable the interface and check status[edit | edit source]

root@desk-mx93-rev1:~# ip link set can0 type can bitrate 500000
root@desk-mx93-rev1:~# ifconfig can0 up
root@desk-mx93-rev1:~# ifconfig can0
can0: flags=193<UP,RUNNING,NOARP>  mtu 16
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 22

Usage with can-utils[edit | edit source]

root@desk-mx93-rev1:~# ifconfig can0 down
root@desk-mx93-rev1:~# ip link set can0 type can bitrate 500000 triple-sampling on loopback on
root@desk-mx93-rev1:~# ifconfig can0 up
root@desk-mx93-rev1:~# candump can0 &
[1] 312
interface = can0, family = 29, type = 3, proto = 1
root@desk-mx93-rev1:~# cansend can0 -i 0x7ff 00 01 02 03 04 05 06 07
<0x7ff> [8] 00 01 02 03 04 05 06 07 
<0x000> [8] ff fe fd fc fb fa f9 f8 

Additional information[edit | edit source]

Each CAN port appears like a networking interface in the form canX where X is the port number.

Information about programming the CAN socket interface is given in the kernel tree under Documentation/networking/can.rst