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都没有问题,请检查硬件连接。
#如果有问题,并且找不到问题点,请联系技术支持人员排查。

参考#
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:刷写镜像#
刷写镜像完成后,重新配置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 将日志导出上传故障工单系统(分析由米文售后工程师执行)。