IO-H2xCAN

隐溪科技研发的IO-H2xCAN功能板实现带总线隔离的双路CANFD接口支持,向下兼容CAN 2.0A/2.0B标准,基于标准socketCAN的驱动实现低时延和高稳定性的同时支持CAN报文的硬件时间戳。支持120欧终端匹配电阻通过开关可设置。

注意

H2xCAN的驱动自我司镜像的JP6.2.2版本后开始内置支持

alt text

功能说明

  • 基于minipcie自定义扩展槽位

  • 支持CAN FD标准并向下兼容CAN 2.0A/2.0B标准

  • 支持CAN报文的硬件时间戳

  • 支持120欧终端匹配电阻通过开关可设置:默认开启120

电气特性

  • 2 x GH1.25 4Pin连接器

  • CAN 2.0 Specification

  • CAN FD Specification

  • 符合 ISO11898 标准,支持 CAN FD 及最高 5 Mbps 数据速率

  • 5V 隔离电源

  • 接收器共模输入电压:±30 V

  • 总线故障保护:±42 V,最高 5kV RMS隔离等级

  • 接口定义

alt text

PIN

信号线

1

COMM_5V

2

COMM_GND

3

CAN_H

4

CAN_L

配置使用

安装必要can工具

sudo apt-get install can-utils

检查系统的can驱动和接口

# 启动加载驱动
root@tegra-ubuntu:/home/nvidia# dmesg | grep gs_usb
[   11.812295] gs_usb 1-3.3:1.0: Configuring for 2 interfaces
[   11.817295] gs_usb 1-3.3:1.0: Success to create channel sysfs for ch0 (rc=0)
[   11.822561] gs_usb 1-3.3:1.0: Success to create channel sysfs for ch1 (rc=0)
[   11.822673] usbcore: registered new interface driver gs_usb

root@tegra-ubuntu:/home/nvidia# ifconfig -a | grep can
can0: flags=128<NOARP>  mtu 16
can1: flags=128<NOARP>  mtu 16
can2: flags=128<NOARP>  mtu 16

说明:
- can0为orin nano/nx模组自带的can控制器,默认不引出
- can1和can2为H2xCAN创建的两个can接口

# CAN接口
nvidia@tegra-ubuntu:~$ ethtool -T can1
Time stamping parameters for can1:
Capabilities:
        hardware-receive
        hardware-raw-clock
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes:
        all
nvidia@tegra-ubuntu:~$ ethtool -T can2
Time stamping parameters for can2:
Capabilities:
        hardware-receive
        hardware-raw-clock
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes:
        all

接口自环测试

接口自环测试无需接口实际连线

# 设置接口为自环模式
sudo ip link set can1 type can bitrate 500000 loopback on

# 接口UP
sudo ip link set can1 up

# 接口监听数据
candump can1

# 接口测试数据
cansend can1 123#abcdabcd

载板接口外环测试

  1. 将本载板的两个CAN接口通过制作的外环直通线连接

PIN

CAN1

直通线

CAN2

2

COMM_GND

直连

COMM_GND

3

CAN_H

直连

CAN_H

4

CAN_L

直连

CAN_L

  1. 设置两个CAN接口为FD模式

sudo ip link set can1 down
sudo ip link set can2 down
sudo ip link set can1 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on
sudo ip link set can2 up type can bitrate 500000 dbitrate 1000000 berr-reporting on fd on

参数说明:

  • bitrate 500000 :设置 CAN 总线仲裁段速率为 500 kbps(CAN 2.0/CAN FD 通用,决定总线仲裁速度)

  • dbitrate 1000000 :设置 CAN FD 模式下数据段速率为 1 Mbps(仅 CAN FD 生效,决定数据传输速度)

  • berr-reporting on :开启总线错误报告功能(系统会记录 CAN 总线错误,便于调试)

  • fd on :启用 CAN FD 模式(CAN FD 是 CAN 2.0 的升级版,支持更高数据速率和更大帧长度)

  1. can1作为监听/接收端

取绝对硬件时间戳间隔

candump -td -H can1

取绝对硬件时间戳

candump -tA -H can1
  1. can2作为发送端

# 简单发送
cansend can2 001#01
cansend can2 123#abcdabcd

# 连续发送
cangen can2 -g 10 -I 123 -L i -vvv -f

参数说明:
-g 间隔10ms
-I 固定帧ID为123
-L i 发送帧长递增
-vvv 输出更多打印
-f 支持CAN FD发送(需配置链路为fd on)
  1. can1收到报文带硬件时间戳

cangen按照10ms间隔发的递增长度帧(从 [00] 到 [64] 一轮,再循环)

所有间隔都围绕 10.0 ms ± 0.4 ms波动,抖动为0.4ms级别

nvidia@tegra-ubuntu:~/Downloads/hck-bsp-tools$ candump -td  can1
 (000.000000)  can1  123  [00]
 (000.010118)  can1  123  [01]  AA
 (000.010176)  can1  123  [02]  AE D6
 (000.010139)  can1  123  [03]  D0 10 F5
 (000.010152)  can1  123  [04]  20 F2 39 3C
 (000.010376)  can1  123  [05]  82 8C 00 68 A1
 (000.010233)  can1  123  [06]  B9 A0 E0 49 CB CB
 (000.010240)  can1  123  [07]  61 EC 98 20 C7 2C 0C
 (000.010146)  can1  123  [08]  69 B3 E5 71 31 C0 FC 5C
 (000.010398)  can1  123  [12]  E1 D2 29 08 73 C7 3E 6B E1 D2 29 08
 (000.010191)  can1  123  [16]  15 0F BB 4A B2 ED 42 3D 15 0F BB 4A B2 ED 42 3D
 (000.010420)  can1  123  [20]  78 69 B7 5D 80 D0 34 3B 78 69 B7 5D 80 D0 34 3B 78 69 B7 5D
 (000.010256)  can1  123  [24]  27 30 D6 30 C9 DB A4 38 27 30 D6 30 C9 DB A4 38 27 30 D6 30 C9 DB A4 38
 (000.010276)  can1  123  [32]  12 A8 FC 5F B5 B7 A9 0E 12 A8 FC 5F B5 B7 A9 0E 12 A8 FC 5F B5 B7 A9 0E 12 A8 FC 5F B5 B7 A9 0E
 (000.010410)  can1  123  [48]  6E 7B 6F 2F C4 71 3B 7F 6E 7B 6F 2F C4 71 3B 7F 6E 7B 6F 2F C4 71 3B 7F 6E 7B 6F 2F C4 71 3B 7F 6E 7B 6F 2F C4 71 3B 7F 6E 7B 6F 2F C4 71 3B 7F
 (000.010542)  can1  123  [64]  D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08 D2 AC E6 71 BC 5B C2 08
 (000.009014)  can1  123  [00]
 (000.010147)  can1  123  [01]  3C
 (000.010144)  can1  123  [02]  A3 F4
 (000.010180)  can1  123  [03]  57 6E BD
 (000.010198)  can1  123  [04]  2B C0 38 17
 (000.010136)  can1  123  [05]  64 A9 B8 58 E4
 (000.010367)  can1  123  [06]  A5 C6 6E 28 C5 95
 (000.010150)  can1  123  [07]  AB 8D 25 08 0E 7A 54
 (000.010343)  can1  123  [08]  F6 55 4E 56 8C 60 4F 10
 (000.010004)  can1  123  [12]  81 41 93 05 0B 65 09 21 81 41 93 05
 (000.010373)  can1  123  [16]  3F 4E 92 4D F9 AA 4A 63 3F 4E 92 4D F9 AA 4A 63
 (000.010280)  can1  123  [20]  8C 35 3E 5C 66 7E 68 7E 8C 35 3E 5C 66 7E 68 7E 8C 35 3E 5C
 (000.010672)  can1  123  [24]  C3 86 EF 1B 9E DD 3A 3C C3 86 EF 1B 9E DD 3A 3C C3 86 EF 1B 9E DD 3A 3C
 (000.010040)  can1  123  [32]  1B 36 12 0D 31 02 5F 4B 1B 36 12 0D 31 02 5F 4B 1B 36 12 0D 31 02 5F 4B 1B 36 12 0D 31 02 5F 4B
 (000.010727)  can1  123  [48]  62 4F 76 3B EE E2 F8 7E 62 4F 76 3B EE E2 F8 7E 62 4F 76 3B EE E2 F8 7E 62 4F 76 3B EE E2 F8 7E 62 4F 76 3B EE E2 F8 7E 62 4F 76 3B EE E2 F8 7E
 (000.010315)  can1  123  [64]  ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40 ED 5D 21 54 67 39 FF 40
 (000.009292)  can1  123  [00]
 (000.010170)  can1  123  [01]  1A
 (000.010130)  can1  123  [02]  35 27
 (000.010219)  can1  123  [03]  D0 84 50
 (000.010419)  can1  123  [04]  4B 63 A2 21
 (000.010144)  can1  123  [05]  45 48 52 4C F0
 (000.010382)  can1  123  [06]  F9 C3 5A 7B F1 D5
 (000.010251)  can1  123  [07]  FE A3 65 64 EF 19 A9
 (000.010331)  can1  123  [08]  7D 36 C7 64 7F E5 F8 69
 (000.010405)  can1  123  [12]  FB 7E B2 72 BC 84 59 32 FB 7E B2 72
 (000.010202)  can1  123  [16]  78 90 43 4D 87 B4 F0 4E 78 90 43 4D 87 B4 F0 4E
 (000.010292)  can1  123  [20]  23 03 C2 30 3B 17 33 69 23 03 C2 30 3B 17 33 69 23 03 C2 30
 (000.010175)  can1  123  [24]  25 92 2B 0B 3E 39 D4 3D 25 92 2B 0B 3E 39 D4 3D 25 92 2B 0B 3E 39 D4 3D
 (000.010280)  can1  123  [32]  6C 19 92 34 87 E1 A1 46 6C 19 92 34 87 E1 A1 46 6C 19 92 34 87 E1 A1 46 6C 19 92 34 87 E1 A1 46
 (000.010406)  can1  123  [48]  2C 1C CD 3C 5A 77 B3 08 2C 1C CD 3C 5A 77 B3 08 2C 1C CD 3C 5A 77 B3 08 2C 1C CD 3C 5A 77 B3 08 2C 1C CD 3C 5A 77 B3 08 2C 1C CD 3C 5A 77 B3 08
 (000.010492)  can1  123  [64]  EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64 EE 1A A1 07 97 C5 21 64
 (000.009060)  can1  123  [00]
 (000.010070)  can1  123  [01]  A4
 (000.010212)  can1  123  [02]  79 7D
 (000.010106)  can1  123  [03]  1A C0 82
 (000.010195)  can1  123  [04]  A9 16 B1 19
 (000.010174)  can1  123  [05]  B4 0A 60 1B A3
 (000.010191)  can1  123  [06]  50 DE 4C 56 B2 AE
 (000.010145)  can1  123  [07]  92 F4 B4 66 CE 14 14
 (000.010225)  can1  123  [08]  31 94 BE 69 8D 73 67 59

常见说明