ALTAS 200i DK A2 CAN 通信问题
收藏回复举报
ALTAS 200i DK A2 CAN 通信问题
t('forum.solved') 已解决
新人帖
发表于2024-07-23 17:30:14
0 查看

我正在使用Ubuntu 22.04 的 ALTAS 200i DK A2 开发板实现 CAN 通信,但遇到了一些问题。

设备和环境

  • Windows 电脑
  • Ubuntu 22.04 的 ALTAS 200i DK A2 开发板
  • USB 转 CAN 适配器(连接在 Windows 电脑上,使用 CAN Assistant 发送 CAN 信号)
  • CAN 转 USB 适配器(连接在开发板上)

问题描述

ALTAS 200i DK A2 开发板上没有原生的 CAN 接口,但我需要实现 CAN 通信。我已经尝试通过 USB 转 CAN 适配器在电脑上发送信号,并使用 CAN 转 USB 适配器接收信号。

已尝试步骤

  1. 在开发板上确认 USB 设备

    • 通过 lsusb 确认 CAN 转 USB 适配器已被识别:

    Bus 004 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. Hub 

    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 

    Bus 003 Device 003: ID 0c72:000c PEAK System PCAN-USB 

    Bus 003 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. RTS5411 Hub 

    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub 

    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

  2. 检查 USB 设备信息

    • 使用 dmesg | grep -i usb 检查设备信息:能找到can转usb设备的条目

      [   31.829500] usb 3-1.1: new full-speed USB device number 3 using xhci-hcd 

      [   31.931579] usb 3-1.1: New USB device found, idVendor=0c72, idProduct=000c, bcdDevice=54.ff 

      [   31.931587] usb 3-1.1: New USB device strings: Mfr=10, Product=4, SerialNumber=0 

      [   31.931590] usb 3-1.1: Product: XCAN-USB 

      [   31.931592] usb 3-1.1: Manufacturer: 

  3. 查看网络接口

    • 使用 ip link 命令查看网络接口,发现没有 can0 接口:
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 

      2: bond0: &lt;NO-CARRIER,BROADCAST,MULTICAST,MASTER,DYNAMIC,UP&gt; mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000 

          link/ether c2:5d:c0:ad:a3:3f brd ff:ff:ff:ff:ff:ff 

      3: eth0: &lt;NO-CARRIER,BROADCAST,MULTICAST,DYNAMIC,UP&gt; mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000 

          link/ether 98:1a:35:33:eb:c9 brd ff:ff:ff:ff:ff:ff 

      4: eth1: &lt;BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 

          link/ether 98:1a:35:33:eb:ca brd ff:ff:ff:ff:ff:ff 

      5: usb0: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000 

          link/ether 96:6f:6c:6d:ce:cc brd ff:ff:ff:ff:ff:ff 

  4. 加载驱动程序

    • 尝试加载 peak_usb 模块:
      sudo modprobe peak_usb
      • 出现错误:modprobe: FATAL: Module peak_usb not found in directory /lib/modules/5.10.0+
  5. 编译和安装 PEAK-System 驱动

    • 下载并解压 peak-linux-driver
      tar -xzf peak-linux-driver-8.15.2.tar.gz
    • 尝试清理编译环境:
      make clean
      • 出现错误:Makefile:131: *** &quot;Unable to automatically find the Kernel headers. These are mandatory to build the pcan driver. Please set the KERNEL_LOCATION variable to the root directory of your own built Kernel.&quot;. Stop.
  6. 查找内核头文件

    • 使用 find / -name &quot;linux-headers*&quot; 没有找到匹配的头文件。
    • 发现内核头文件在 /usr/lib/modules/5.10.0+/ 目录下。
  7. 设置 KERNEL_LOCATION 并尝试重新编译

    export KERNEL_LOCATION=/usr/lib/modules/5.10.0+/ make clean make NET=NO_NETDEV_SUPPORT
  8. 仍然遇到问题

    • make cleanmake NET=NO_NETDEV_SUPPORT 仍然未成功编译驱动。

求助

  1. 如何正确设置 KERNEL_LOCATION 以便成功编译驱动?
  2. 是否有其他方法能够实现 Windows 电脑与 ALTAS 200i DK A2 开发板之间的 CAN 通信?
  3. 是否有其他建议或替代方案可以帮助我实现这一目标?

我要发帖子