HD-G2L-IOT 开发板有 2 个 CAN 口。硬件分布如下
CAN的启动参数如下
#!/bin/sh
#for audio
amixer cset numid=49 on
amixer cset numid=51 on
amixer cset numid=54 on
#for can
ip link set can0 up type can bitrate 500000 dbitrate 2000000 fd on
ip link set can1 up type can bitrate 500000 dbitrate 2000000 fd on
if [ -x /usr/bin/build_mac ]; then
ln -sf /dev/i2c-3 /dev/i2c-c
/usr/bin/build_mac 0 eth0 eth1
fi
if [ -x /home/root/progemmc/make_emmc_system.sh ]; then
/home/root/progemmc/make_emmc_system.sh
fi
if [ -x "/run/media/mmcblk1p1/hdg2l-test" ]; then
/run/media/mmcblk1p1/hdg2l-test &
fi
此脚本为系统启动脚本,与 CAN 相关的为“for can”段,使用 ip link 命令设置 can 接 口参数,常见的 Linux 系统 CAN 总线部分操作命令如下所示。
ifconfig canx up/ifconfig canx down ##############启动/关闭CAN节点
ip link set canx type can bitrate 1000000 ########设置CAN总线波特率
ip -d -s link show canx ##########################查看CAN总线状态
ip link set canx type can restart-ms 100###########设置总线的bus-off复位时间
查看CAN总线的状态如下所示
打开LAIKA CANTest设置参数,需要设定 CAN 口速率125K使两端速率匹配。
例如状态信息包括发送、接受字节,drop 代表丢包数量,overrun 代表溢出次数,error 代表总线错误次数。 运行 canTest 程序可以通过 CAN 口收发数据。该程序在运行时,需要提供一个命令行 参数,即需要打开的 CAN 口名,这个 CAN 名参数可以为“can1”、“can2”。例如需要通 过 CAN1 口进行数据收发,在命令行下执行如下命令:
root@g2liot:/dev# canTest can1
can write: length=8, packet: 00 01 02 03 04 05 06 07
can write: length=8, packet: 08 09 0A 0B 0C 0D 0E 0F
can write: length=4, packet: 10 11 12 13
can write: length=8, packet: 00 01 02 03 04 05 06 07
can write: length=8, packet: 08 09 0A 0B 0C 0D 0E 0F
can write: length=4, packet: 10 11 12 13
can write: length=8, packet: 00 01 02 03 04 05 06 07
can write: length=8, packet: 08 09 0A 0B 0C 0D 0E 0F
can write: length=4, packet: 10 11 12 13
can write: length=8, packet: 00 01 02 03 04 05 06 07
can write: length=8, packet: 08 09 0A 0B 0C 0D 0E 0F
can write: length=4, packet: 10 11 12 13
can write: length=8, packet: 00 01 02 03 04 05 06 07
can write: length=8, packet: 08 09 0A 0B 0C 0D 0E 0F
can write: length=4, packet: 10 11 12 13
CANTest接收数据显示如下