Open main menu

DAVE Developer's Wiki β

DESK-MX6UL-L/Peripherals/CAN

< DESK-MX6UL-L
Revision as of 10:56, 16 March 2022 by U0007 (talk | contribs)

History
Version Issue Date Notes

1.0.0

Apr 2021 First DESK release
2.0.0 Mar 2022 DESK 3.0.0 release


Contents

Peripheral CANEdit

The CAN peripheral is not available on AXEL ULite EVK. This peripheral is available on the i.MX6UL standard product SBCLynx

Device tree configurationEdit

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

From imx6ul-lynx-som0013-cb002f.dts:

&can1 {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_flexcan1>;
    status = "okay";
};

From imx6ul-lynx-som0013.dtsi:

&iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog_gpios>;

        imx6ul-lynx {
...
...
            pinctrl_flexcan1: flexcan1grp{
                    fsl,pins = <
                            MX6UL_PAD_LCD_DATA09__FLEXCAN1_RX       0x1b020
                            MX6UL_PAD_LCD_DATA08__FLEXCAN1_TX       0x1b020
                    >;
            };
};

Accessing the peripheralEdit

Linux messages at boot timeEdit

...
...
[    3.806768] can: controller area network core
[    3.816080] can: raw protocol
[    3.819081] can: broadcast manager protocol
[    3.823309] can: netlink gateway - max_hops=1
...
...

Enable the interface and check statusEdit

root@desk-mx6ul-lynx:~# ip link set can0 type can bitrate 500000
root@desk-mx6ul-lynx:~# ifconfig can0 up
root@desk-mx6ul-lynx:~# 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 33

Usage with can-utilsEdit

root@desk-mx6ul-lynx:~# ip link set can0 type can bitrate 500000 triple-sampling on loopback on                                                                                                                 
root@desk-mx6ul-lynx:~# ifconfig can0 up
root@desk-mx6ul-lynx:~# candump can0 &
[1] 280
interface = can0, family = 29, type = 3, proto = 1
root@desk-mx6ul-lynx:~# cansend can0 -i 0x7ff 00 01 02 03 04 05 06 07
interface = can0, family = 29, type = 3, proto = 1
<0x7ff> [8] 00 01 02 03 04 05 06 07 
<0x7ff> [8] 00 01 02 03 04 05 06 07

Additional informationEdit

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