摘要:CAN 协议是在 1980 年代由 Bosch 公司开发的,旨在满足汽车工业的需求,但随着时间的推移,它逐渐应用于其他领域。CAN 是一种基于消息的通信协议,允许多台设备通过总线进行通信。每个设备(节点)可以向总线上发送消息,所有设备都可以接收这些消息。
CAN 协议是在 1980 年代由 Bosch 公司开发的,旨在满足汽车工业的需求,但随着时间的推移,它逐渐应用于其他领域。CAN 是一种基于消息的通信协议,允许多台设备通过总线进行通信。每个设备(节点)可以向总线上发送消息,所有设备都可以接收这些消息。
主要特点:
I2C引脚功能CAN1_TX_m13can1_m1 数据传输引脚CAN1_RX_M15can1_m1 数据接收引脚CAN1_RX_M012can1_m0 数据传输引脚CAN1_TX_M035can1_m0 数据接收引脚CAN模块之间接线:CAN_TX接CAN_TX,CAN_RX接CAN_RX。
主要参数:
interrupts 转换完成,产生中断信号。clock 时钟属性,用于驱动开关clk,reset属性,用于每次复位总线。pinctrl 配置CAN相关的引脚信息,功能复用/* can1 */&can1 {compatible = "rockchip,can-2.0";reg = ;interrupts = ;clocks = , ;clock-names = "baudclk", "apb_pclk";resets = , ;reset-names = "can", "can-apb";tx-fifo-depth = ;rx-fifo-depth = ;status = "okay";assigned-clocks = ;assigned-clock-rates = ;pinctrl-names = "default";pinctrl-0 = ; #根据原理图进行配置};compatible = “rockchip,can-1.0” ,rockchip,can-1.0用来匹配can控制器驱动。compatible = “rockchip,can-2.0” ,rockchip,can-2.0用来匹配canfd控制器驱动。assigned-clock-rates用来配置can的始终频率,如果CAN的比特率低于等于3M建议修改CAN时钟到100M,信号更稳定。高于3M比特率的,时钟设置200M就可以。pinctrl配置:根据实际板卡连接情况配置can_h和can_l的iomux作为can功能使用。CAN接口在默认情况是关闭状态的,需要使能才能使用
在 Armbian 操作系统中,/boot/armbianEnv.txt 文件用于配置系统启动时的参数和设备树插件。你可以通过编辑该文件来启用或禁用 CAN 设备树插件,确保 CAN 总线可以在启动时正确加载。
如果你希望检查或启用 CAN 相关设备树插件,可以按照以下步骤操作:
查看设备树插件配置
打开文件: 通过终端打开 /boot/armbianEnv.txt 文件,使用文本编辑器如 nano 或 vim,例如:
root@armsom-sige7:/home/armsom# sudo nano /boot/armbianEnv.txt这里以激活 can-m0 为例,将 rk3588-can1-m0 打开如下:
overlays=rk3588-can1-m0编辑完成后,保存文件并退出编辑器 重启系统使配置生效:
// 先执行syncroot@armsom-sige7:/home/armsom# syncroot@armsom-sige7:/home/armsom# sudo reboot提示
Q: 如果直接拔掉电源进行重启,是否可能导致文件未修改或 overlay 系统启动失败?A: 当直接拔掉电源或强制关机时,可能会出现文件未能及时从内存(RAM)同步到存储设备(如硬盘、SSD)的情况。这是因为操作系统通常会将数据暂存于内存中,并定期将这些数据写入磁盘。为避免此问题,建议在关机前执行 “sync” 命令,确保所有数据已写入磁盘,再拔掉电源或关机。ifconfig -aCAN启动ip link set can0 down //关闭CANip link set can0 type can bitrate 500000 #设置⽐特率500KHzip -details -statistics link show can0 #打印can0信息ip link set can0 up //启动CANCAN发送cansend can0 123#DEADBEEF #发送(标准帧,数据帧,ID:123,date:DEADBEEF)cansend can0 123#R #发送(标准帧,远程帧,ID:123)cansend can0 00000123#12345678 #发送(扩展帧,数据帧,ID:00000123,date:DEADBEEF)cansend can0 00000123#R #发送(扩展帧,远程帧,ID:00000123)CAN接收来源:爱讲历史的张燕