1. CAN通信介绍
CAN(Controller Area Network,控制器局域网)是一种现代的通信协议,用于在各种应用中的不同设备之间进行高速通信。它最初由德国的Bosch公司于20世纪80年代开发,用于汽车中的电子系统之间的通信,目前已广泛应用于汽车行业以及其他工业领域。
CAN通信可用于多种不同的应用场景,包括以下几个方面:
-
汽车行业:CAN通信最早应用于汽车行业,在汽车中的各个电子系统之间进行高速、可靠的数据传输,包括引擎控制、制动系统、车身电子系统等。
-
工业自动化:CAN通信也被广泛应用于工业自动化领域,用于工厂中的各种设备之间的通信,包括机器人、传感器、执行器等,实现设备之间的数据共享和协同工作。
-
航空航天:CAN通信也在航空航天领域得到了应用,用于飞机和航天器中的各个子系统之间的通信,包括飞行控制、导航系统、电子设备等。
总的来说,CAN通信具备高速、可靠的特性,适用于各种需要高效、实时通信的应用场景,特别是在车辆和工业自动化领域有着广泛的应用。
2. Linux下用命令测试CAN
在进行测试之前需要对开发板上的can设备进行配置,执行以下命令
sudo ifconfig can0 down # 先关闭can0设备
sudo ip link set can0 up type can bitrate 500000 triple-sampling on # 设置波特率为500k
注意,多个设备间CAN通信设置的波特率要一致!
配置完成后,可用cansend命令发送数据给其他设备
cansend can0 123#01.02.03.04.05.06.07.08
同时也可以用candump接收来自其他设备发送的can消息
candump can0
3. 使用代码编程测试CAN
设置打开can设备和设置波特率可以用libsocketcan库来实现,安装方式如下:
sudo apt install libsocketcan-dev
使用方式:(使用该方式,需要用root权限运行该程序)
#include <libsocketcan.h> # 包含头文件
/** 关闭can0 */
can_do_stop("can0");
/** 设置波特率为500k */
can_set_bitrate("can0", 500*1000);
/** 开启can0 */
can_do_start(can0);
CAN的收发程序,将在后面分享。
标签:应用,sudo,通信,C++,can0,Linux,波特率,调试,设备 From: https://blog.csdn.net/qq_27897937/article/details/143193197