CAN概述

CAN的全称为Controller Area Network,也就是控制局域网络,简称为CAN。CAN最早是 由德国BOSCH(博世)开发的,目前已经是国际标准(ISO 11898),是当前应用最广泛的现场总线 之一。BOSCH主要是做汽车电子的,因此CAN一开始主要是为汽车电子准备的,事实也是如 此,CAN协议目前已经是汽车网络的标准协议。当然了,CAN不仅仅应用于汽车电子,经过 几十年的发展,CAN协议的高性能和高可靠性已经得到了业界的认可,目前除了汽车电子以外 也广泛应用于工业自动化、医疗、工业和船舶等领域。

硬件简介

AUKUN-UTX-3568JT 主板总共外设2路CAN

DTS驱动配置

板级使能can,配置位置:arch/arm64/boot/dts/rockchip/aukun-utx-rk3568-base.dtsi

  1. &can1 {
  2. assigned-clocks = <&cru clk\_can1="">;
  3. assigned-clock-rates =<150000000>;
  4. pinctrl-names = "default";
  5. pinctrl-0 = <&can1m1\_pins>;
  6. status = "enable";
  7. };
  8. &can2 {
  9. assigned-clocks = <&cru clk\_can2="">;
  10. assigned-clock-rates =<150000000>;
  11. pinctrl-names = "default";
  12. pinctrl-0 = <&can2m1\_pins>;
  13. status = "enable";
  14. };

实验调用

CAN总线配置

将can1总线的TX与can2总线的TX相连,将can1总线的RX与can2总线RX相连接。

CAN测试工具

1、can-utils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence

安装命令:

sudo apt installcan-utils

2、工具包含的常用命令

  1. cansend

向指定的CAN总线接口发送十六进制数据,如:cansend can1 123#AABBCC,向can1接口发送0XAABBCC

  1. candump

使CAN总线接口保持监听状态。从CAN 总线接口接收数据并以十六进制形式打印到标准输出

通讯案例测试

1、设置比特率。当需要修改can模块的属性时,必须先关闭can模块

  1. ip link set can0 down #关闭CAN总线接口
  1. ip link set can0 type can bitrate 500000 ##设置比特率为500000

2、打开can模块

  1. ip link set can0 up #打开CAN0模块

3、向指定的CAN总线接口发送数据

  1. cansend can1 123#AABBCC #从总线接口发出数据

can1:表示CAN通道名称,即被发送的CAN数据从该通道发出

发送CAN帧是标准帧;123表示can帧的帧id。后面6个字节表示具体的CAN帧报文。

4、开启终端的监听打印模式

  1. candump can0

CAN调用 - 图1