怎么知道局域网中有通信节点

查看网络数据统计

1
ip -details link show can0

查看dump数据(广播数据)

1
candump can0

怎么知道收发器支不支持CANFD

这个是最可靠的方法,是骡子是马,牵出来遛一遛

1
ip link set can0 up type can bitrate 1000000 dbitrate 4000000 fd on

帧的筛选

CAN通信是按紧急程度(优先级)来传输的,数值越小优先级越高,错误帧的优先级最高,可以通过掩码筛选CAN帧

1
2
3
4
5
candump can0,100:700
|
-- > (received_id & 0x700) == (0x100 & 0x700)
|
-- > (received_id & 011100000000) == 000100000000

自发自收

软件层面的自发自收是处于loopback模式,这个可以用作开发阶段的数据模拟和驱动链路的检查

1
2
3
ip link set can0 type can bitrate 500000
ip link set can0 type can loopback on
ip link set up can0

硬件层面的自发自收是指短接CAN芯片控制器的TXDRXD引脚,注意并非收发器的CANHCANL

1
2
3
4
5
6
7
# 这时需要显式地指定回环模式为关闭状态
ip link set can0 type can loopback off

# 一边随机产生can帧
cansend can0 $(printf "100#%02X%02X%02X%02X%02X%02X%02X%02X" $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)) $((RANDOM%256)));
# 一边查看can帧
candump can0

下里巴人
海纳百川,文以载道
hywing技术自留地
总访问 113701 次 | 本页访问 326