Ready for review
Using CAN in Linux
Many of our Trizeps modules got an integrated CAN controller.
On others, this function may be added through additional chips like the Microchip MCP2518FD.
Detect & Init
See if CAN-adapter got registered:
root@imx8mmevk:~# ifconfig -a
can0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
NOARP MTU:16 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth0 Link encap:Ethernet HWaddr 8a:7b:51:54:3a:65
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 0a:ea:42:e6:ee:90
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:90 errors:0 dropped:0 overruns:0 frame:0
TX packets:90 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:6708 (6.5 KiB) TX bytes:6708 (6.5 KiB)
Activate Interface:
root@imx8mmevk:~# sudo ip link set can0 up type can bitrate 1000000
[ 68.603002] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready
root@imx8mmevk:~# sudo ifconfig can0 txqueuelen 65536
On Debian and similar systems you can run CAN at startup by adding the following lines to your /etc/network/interfaces
:
auto can0
iface can0 can static
bitrate 1000000
txqueuelen 65536
Testing CAN
The following tools are contained in the package can-utils
. On Debian and it's relatives you can install it with:
cangen
Use cangen to generate CAN-packets to send over the interface. See 'cangen –help' for more information.
Example:
candump
Use candump to show received CAN-packets.