APEX AD10 CAN#

硬件规格#

CAN总线的DB9端子引脚定义:

引脚定义

Pin

Signal

2

CAN_A_L

7

CAN_A_H

功能和设备节点对应#

功能

说明

设备节点

CAN_A

Orin CAN0

can0

CAN_B

Orin CAN1

can1

CAN_C

Expanded CAN

can2

CAN_D

Expanded CAN

can3

CAN_E

Expanded CAN

can4

使用方法#

  • 使用接头1,连接PC

  • 使用接头2,连接DB9母对母交叉转接头3

  • 使用接头3,连接希望连接的DB9 CAN 接头

准备工作#

设备端

sudo modprobe can
sudo modprobe can_raw
sudo modprobe mttcan
#配置参数(以can0为例)
sudo ip link set can0 up type can bitrate 500000 dbitrate 5000000 sjw 4 restart-ms 1000 berr-reporting on fd on

PC端

#安装
sudo apt-get install can-utils -y

#PC端接入USB转CAN(PCAN)设备后,执行命令,输出结果为CAN接口名称:
ls /sys/class/net/ | grep -E 'can[0-9]+' | sort -V | tail -n 1

#配置
sudo ip link set can0 up type can bitrate 500000 sjw 4

收发验证#

设备发数据,PC接收

设备端

#执行命令发送数据
sudo cansend can0 123#abcdabcd

PC端

#PC端执行命令接收数据
sudo candump can0
#如果打印如下信息,说明设备端发送数据成功
can0  123   [4]  AB CD AB CD

PC发数据,设备接收

PC端

#执行命令发送数据
sudo cansend can0 123#abcdabcd

设备端

#执行命令接收数据
sudo candump can0
#观察设备端终端,如果打印如下信息,说明设备端发送数据成功
can0  123   [4]  AB CD AB CD

问题排查方法#


通过以下命令查看can0的状态信息

ip -d -s link show can0

#检查1是否和之前设置的值相同。
#检查2和3是否为0
#如果1,2,3都没有问题,请检查硬件连接。
#如果有问题,并且找不到问题点,请联系技术支持人员排查。

参考#

https://www.kernel.org/doc/html/latest/networking/can.html

linux-can/can-utils

CAN问题排查#

现象一:设备开机后,can无法通信#

排查项1:检查硬件环境是否正常#

步骤1:检查接口是否损坏#

  • 如有明显接口损坏,则直接转米文售后进行处理。

  • 如无损坏,执行”步骤2:交叉验证”。

步骤2:交叉验证(如有条件)#

线缆以及发can数据的外设,接到另一台设备上,查看能否正常通信。

  • 如另一台设备使用一样的配置方法可正常通信,则大概率为单台硬件问题,需要联系米文售后进行处理。

  • 如另一台设备也无法正常通信,则建议检查线缆以及can外设是否存在故障。

  • 如无其他设备验证可使用设备本身can口短接,执行”步骤3:接口短接,验证功能是否正常”。

步骤3:接口短接,验证功能是否正常#

使用杜邦线将故障can口和其他can口进行短接,使用cansend candump进行收发验证。 can引脚定义以及收发验证方法详见:https://doc.miivii.com/Apex-AD10-User-Manual-CH/wiki/Apex-AD10-CAN.html

  • 如两个can口可正常通信,则建议检查线缆以及can外设是否存在故障。

  • 如两个can口不可正常通信,则执行”排查项2:检查can是否正确配置”。

排查项2:检查can是否正确配置#

步骤1:使用 ifconfig -a 查看接口状态#

打开终端,输入指令:

ifconfig -a
  • 如不能识别故障can,则执行”步骤2:检查can是否进行了初始化配置(NV mttcan默认不加载)”。

  • 如能识别故障can节点,则执行”步骤3:配置can参数”。

步骤2:检查can是否进行了初始化配置(NV mttcan默认不加载)#

新加载can节点:

sudo modprobe can
sudo modprobe can_raw
sudo modprobe mttcan

重新配置can节点后,使用ifconfig -a验证能否识别can节点。

  • 如能识别can节点,则执行”步骤3”。

  • 如不能识别can节点,则大概率为单台硬件问题,需要联系米文售后进行处理。

步骤3:配置can参数#

输入命令:

sudo ip link set can2 up type can bitrate 500000 dbitrate 5000000 restart-ms 1000 berr-reporting on fd on

该参数配置了can接口的波特率,其中500K是使用can2.0协议传输的时候使用的速率,5M是使用canfd协议传输的时候使用的速率。

需要注意:can接口波特率一定要与发can数据的外设波特率一致

  • 如重新配置后,can可正常通信,则问题解决。

  • 如重新配置后,can仍不可正常通信,则执行”排查项3:重新刷写镜像验证是否为软件环境导致”。

排查项3:重新刷写镜像验证是否为软件环境导致#

步骤1:刷写镜像#

刷写镜像方法详见:https://doc.miivii.com/Apex-AD10-User-Manual-CH/wiki/Apex-AD10-%E5%9B%BA%E4%BB%B6%E7%83%A7%E5%86%99.html

刷写镜像完成后,重新配置can节点进行can通信验证。

  • 刷写镜像后,can可正常通信,则证明为系统软件环境导致,需要客户自己排查软件环境。

  • 刷写镜像后,仍无法正常通信,则将设备连接外网后,则执行”步骤2:获取log”。

步骤2:获取log#

则将设备连接外网后,打开终端输入:

curl -sSL https://doc.miivii.com/scripts/run_miivii_diagnostic.sh | bash -s can

并将日志导出,上传至故障工单系统(分析由米文售后工程师执行)。

现象二:can口通信一段时间后阻塞#

排查项1:检查外部环境#

步骤1:确认现场can总线的节点是否做共地处理#

  • 如未做共地处理,请做共地处理。

  • 如已做共地处理,请执行”排查项2:检查can txqueuelen 配置”。

排查项2:检查can txqueuelen 配置#

步骤1:查看txqueuelen大小#

打开终端,输入:

sudo ip link show can0 | grep txqueuelen

步骤2:设置 txqueuele 最大为65536#

打开终端,输入:

sudo ip link set can0 txqueuelen 6553
  • 如设置完成后,can通信正常,用户可根据实际需求,调整一个适合的值。

  • 如设置完成后,can通信仍阻塞,则在问题复现时将设备连接外网,打开终端输入:curl -sSL https://doc.miivii.com/scripts/run_miivii_diagnostic.sh | bash -s can 将日志导出上传故障工单系统(分析由米文售后工程师执行)。