硬件连接
参考:
- Controller Area Network (CAN)
- Jetson AGX Orin Developer Kit User Guide - Hardware Layout | NVIDIA Developer
用到的引脚是:
- CAN0: RX(29), TX(31)
- CAN1: RX(37), TX(33)
- GND(39)
需要接 CANFD收发器 和 120Ω终端电阻 才能正常使用, 这里接收发器后连到CANFD分析仪
配置脚本
之前 Jetson Xavier 设置 CANFD (Jetpack 4.6, 开启pllaon)_weifengdq的博客-CSDN博客_canfd采样点设置 里面提到过, pllaon只影响到了Xavier和Xavier NX, 暂时对Orin没有影响. CAN引脚默认不是配置成CAN, 修改也有几种方法:
- 修改 cfg 文件
- 使用 jetson-io 配置
- 使用 busybox 配置
哪种方法都可以, 这里以最后一种为例, 把两路CANFD配置成 500K@0.8, 5M@0.8
#!/bin/sh
sudo busybox devmem 0x0c303000 32 0x0000C400
sudo busybox devmem 0x0c303008 32 0x0000C458
sudo busybox devmem 0x0c303010 32 0x0000C400
sudo busybox devmem 0x0c303018 32 0x0000C458
sudo modprobe can
sudo modprobe can_raw
sudo modprobe mttcan
sudo sh -c 'echo 0x600 > /sys/devices/platform/c310000.mttcan/net/can0/tdc_offset'
sudo sh -c 'echo 0x600 > /sys/devices/platform/c320000.mttcan/net/can1/tdc_offset'
sudo ip link set down can0
sudo ip link set can0 type can bitrate 500000 sample-point 0.8 dbitrate 5000000 dsample-point 0.8 berr-reporting on fd on restart-ms 100
sudo ip link set up can0 mtu 72
sudo ifconfig can0 txqueuelen 1000
# ip -s -d link show can0
sudo ip link set down can1
sudo ip link set can1 type can bitrate 500000 sample-point 0.8 dbitrate 5000000 dsample-point 0.8 berr-reporting on fd on restart-ms 100
sudo ip link set up can1 mtu 72
sudo ifconfig can1 txqueuelen 1000
# ip -s -d link show can1
注意上面 tdc_offset
的路径在不同Jetson里面不一定固定, 可以 busybox
和 modprobe
命令执行完后, 用 sudo find / -name tdc_offset
命令查找该路径. tdc_offset
在 2M 以上波特率时必须设置
配置完后 ifconfig
看一下, 然后检验一下
$ ip -s -d link show can0
8: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/can promiscuity 0 minmtu 0 maxmtu 0
can <BERR-REPORTING,FD> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 100
bitrate 500000 sample-point 0.800
tq 20 prop-seg 39 phase-seg1 40 phase-seg2 20 sjw 1
mttcan: tseg1 2..255 tseg2 0..127 sjw 1..127 brp 1..511 brp-inc 1
dbitrate 5000000 dsample-point 0.800
dtq 20 dprop-seg 3 dphase-seg1 4 dphase-seg2 2 dsjw 1
mttcan: dtseg1 1..31 dtseg2 0..15 dsjw 1..15 dbrp 1..15 dbrp-inc 1
clock 50000000
re-started bus-errors arbit-lost error-warn error-pass bus-off
0 0 0 0 0 0 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
收发测试
先来配置下 CANFD 分析仪
这里分析仪 5Mbps 采样点是 75%, 好在不影响使用:
- Orin发送标准帧
cansend can0 123#11.22.33.44.55.66.77.88
- Orin发送扩展帧
cansend can0 12345678#11.22.33.44.55.66.77.88
- Orin发送CANFD, 不开BRS和ESI
cansend can0 123##0.11.22.33.44.55.66.77.88
- Orin发送CANFD, 开BRS
cansend can0 123##1.11.22.33.44.55.66.77.88
- Orin发送CANFD, 开ESI
cansend can0 123##2.11.22.33.44.55.66.77.88
- Orin发送CANFD, 开BRS和ESI
cansend can0 123##3.11.22.33.44.55.66.77.88
- CANFD分析仪发送64字节到Orin
欢迎扫描二维码关注微信公众号, 及时获取最新文章: