Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "Rock3/dev/can"

< Rock3‎ | dev
(Created page with "{{rock3_header}} {{Languages|rock3/dev/adb}} ROCK 3 > Development > Using Can ===Description=== ROCK 3 supports can fun...")
 
m
 
(7 intermediate revisions by 3 users not shown)
Line 3: Line 3:
 
{{Languages|rock3/dev/adb}}
 
{{Languages|rock3/dev/adb}}
  
     [[rock3 | ROCK 3]] > [[rock3/dev | Development]] > [[rock3/dev/can | Using Can]]
+
     [[rock3 | ROCK 3]] > [[rock3/dev | Development]] > [[rock3/dev/can | CAN bus communication]]
  
===Description===
+
=== Description ===
 +
This guide tells about how to use can on ROCK 3A.
  
ROCK 3 supports can function. Here we will test it on ROCK 3A.
+
=== Preparation ===
Here we use Type-A to Type-A USB cable with one port connected to the Type-A socket of ROCK 3A,
+
* Two ROCK 3A running Linux OS
and the other port connected to the Type-A socket of the PC.
+
* Two SN65HVD23x 3.3-V CAN Bus Transceivers boards.
 +
* Several Dupont wires.
  
===Hardware support===
+
=== Operations on ROCK 3A ===
 +
==== Install can test tool ====
 +
$ sudo apt update
 +
$ sudo apt-get install can-utils iproute2
  
Support hardware platform:
+
==== Check the information about can ====
* ROCK 3A x2
+
Check can device
 +
$ ifconfig can0
 +
can0: flags=193<UP,RUNNING,NOARP>  mtu 72
 +
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
 +
        RX packets 144  bytes 1152 (1.1 KiB)
 +
        RX errors 175  dropped 0  overruns 0  frame 35
 +
        TX packets 0  bytes 0 (0.0 B)
 +
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
        device interrupt 62  
  
 +
See more details about device can0
 +
$ ip -details -statistic link show can0
 +
2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UP mode DEFAULT group defa
 +
ult qlen 10
 +
    link/can  promiscuity 0 minmtu 0 maxmtu 0
 +
    can <FD> state ERROR-WARNING (berr-counter tx 0 rx 0) restart-ms 0
 +
          bitrate 1000000 sample-point 0.740
 +
          tq 20 prop-seg 18 phase-seg1 18 phase-seg2 13 sjw 1
 +
          rockchip_canfd: tseg1 1..128 tseg2 1..128 sjw 1..128 brp 1..256 brp-inc 2
 +
          dbitrate 1000000 dsample-point 0.720
 +
          dtq 40 dprop-seg 8 dphase-seg1 9 dphase-seg2 7 dsjw 1
 +
          rockchip_canfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp-inc 2
 +
          clock 100000000
 +
          re-started bus-errors arbit-lost error-warn error-pass bus-off
 +
          0          140        0          0          15        0        numtxqueues 1 n
 +
umrxqueues 1 gso_max_size 65536 gso_max_segs 65535
 +
    RX: bytes  packets  errors  dropped overrun mcast 
 +
    1152      144      175    0      35      0     
 +
    TX: bytes  packets  errors  dropped carrier collsns
 +
    0          0        0      0      0      0
  
=== Operations on ROCK 3A ===
+
==== Test can function by loopback test ====
 +
Here we need one ROCK 3A.
 +
 
 +
$ sudo ip link set can0 down
 +
$ sudo ip link set can0 type can bitrate 1000000 dbitrate 1000000 loopback on fd on
 +
$ sudo ip link set can0 up
 +
$ sudo candump can0 &
 +
$ sudo cansend can0 123#11223344
 +
can0  123  [4]  11 22 33 44
 +
 
 +
You can run more '''candump can0 &''' to get more answer.
 +
 
 +
==== Test can function between two ROCK 3A ====
 +
===== Hardware connection =====
 +
ROCK 3A One --- SN65HVD23x 3.3-V CAN Bus Transceivers Board One --- SN65HVD23x 3.3-V CAN Bus Transceivers Board Two --- ROCK 3A Two
 +
 
 +
===== Example: ROCK 3A Two send data to ROCK 3A One via can =====
 +
 
 +
This is the c program : [[Media:Can_test.zip]]
 +
 
 +
ROCK 3A One:
 +
 
 +
$ gcc -Wall -g -O0 -o can_receive can_receive.c
 +
$ sudo ./can_receive
 +
this is a can receive demo
 +
can_id = 0x123
 +
can_dlc = 8
 +
data[0] = 1
 +
data[1] = 2
 +
data[2] = 3
 +
data[3] = 4
 +
data[4] = 5
 +
data[5] = 6
 +
data[6] = 7
 +
data[7] = 8
 +
 
 +
ROCK 3A Two:
 +
 
 +
$ gcc -Wall -g -O0 -o can_send can_secd.c
 +
$ sudo ./can_send
 +
this is a can send demo
 +
can_id  = 0x123
 +
can_dlc = 8
 +
data[0] = 1
 +
data[1] = 2
 +
data[2] = 3
 +
data[3] = 4
 +
data[4] = 5
 +
data[5] = 6
 +
data[6] = 7
 +
data[7] = 8
 +
 
 +
These are the communication between the two boards.
 +
 
 +
==== Troubleshooting ====
 +
 
 +
Check [[rock3/FAQs |ROCK 3 FAQs]] first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/rock3.

Latest revision as of 02:01, 7 February 2023

    ROCK 3 >  Development >  CAN bus communication

Description

This guide tells about how to use can on ROCK 3A.

Preparation

  • Two ROCK 3A running Linux OS
  • Two SN65HVD23x 3.3-V CAN Bus Transceivers boards.
  • Several Dupont wires.

Operations on ROCK 3A

Install can test tool

$ sudo apt update
$ sudo apt-get install can-utils iproute2

Check the information about can

Check can device

$ ifconfig can0
can0: flags=193<UP,RUNNING,NOARP>  mtu 72
       unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
       RX packets 144  bytes 1152 (1.1 KiB)
       RX errors 175  dropped 0  overruns 0  frame 35
       TX packets 0  bytes 0 (0.0 B)
       TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
       device interrupt 62  

See more details about device can0

$ ip -details -statistic link show can0
2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UP mode DEFAULT group defa
ult qlen 10
   link/can  promiscuity 0 minmtu 0 maxmtu 0 
   can <FD> state ERROR-WARNING (berr-counter tx 0 rx 0) restart-ms 0 
         bitrate 1000000 sample-point 0.740 
         tq 20 prop-seg 18 phase-seg1 18 phase-seg2 13 sjw 1
         rockchip_canfd: tseg1 1..128 tseg2 1..128 sjw 1..128 brp 1..256 brp-inc 2
         dbitrate 1000000 dsample-point 0.720 
         dtq 40 dprop-seg 8 dphase-seg1 9 dphase-seg2 7 dsjw 1
         rockchip_canfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp-inc 2
         clock 100000000
         re-started bus-errors arbit-lost error-warn error-pass bus-off
         0          140        0          0          15         0         numtxqueues 1 n
umrxqueues 1 gso_max_size 65536 gso_max_segs 65535 
   RX: bytes  packets  errors  dropped overrun mcast   
   1152       144      175     0       35      0       
   TX: bytes  packets  errors  dropped carrier collsns 
   0          0        0       0       0       0

Test can function by loopback test

Here we need one ROCK 3A.

$ sudo ip link set can0 down
$ sudo ip link set can0 type can bitrate 1000000 dbitrate 1000000 loopback on fd on
$ sudo ip link set can0 up
$ sudo candump can0 &
$ sudo cansend can0 123#11223344
can0  123   [4]  11 22 33 44

You can run more candump can0 & to get more answer.

Test can function between two ROCK 3A

Hardware connection

ROCK 3A One --- SN65HVD23x 3.3-V CAN Bus Transceivers Board One --- SN65HVD23x 3.3-V CAN Bus Transceivers Board Two --- ROCK 3A Two

Example: ROCK 3A Two send data to ROCK 3A One via can

This is the c program : Media:Can_test.zip

ROCK 3A One:

$ gcc -Wall -g -O0 -o can_receive can_receive.c
$ sudo ./can_receive
this is a can receive demo
can_id = 0x123
can_dlc = 8 
data[0] = 1
data[1] = 2
data[2] = 3
data[3] = 4
data[4] = 5
data[5] = 6
data[6] = 7
data[7] = 8

ROCK 3A Two:

$ gcc -Wall -g -O0 -o can_send can_secd.c
$ sudo ./can_send
this is a can send demo
can_id  = 0x123
can_dlc = 8
data[0] = 1
data[1] = 2
data[2] = 3
data[3] = 4
data[4] = 5
data[5] = 6
data[6] = 7
data[7] = 8

These are the communication between the two boards.

Troubleshooting

Check ROCK 3 FAQs first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/rock3.