CAN
CAN (Controller Area Network) 总线,即控制器局域网总线,是一种有效分布式控制或实时控制的串行通信网络。
Tip
K9内置了 CAN 收发器模块。
AllWinner 平台拓展引脚 CAN 信息如下:
| 主板 | SOC | 拓展引脚 |
|---|---|---|
| K9 | T527 | CAN X2 |
DTS 节点配置
Note
在AllWinner T527平台的设备树源文件(DTS)中,CAN设备对应的节点名称定义为“awlink”。需注意的是,“awlink”仅为该CAN设备节点的命名标识,其实际功能、硬件属性与CAN设备完全一致,二者本质为同一设备,仅存在称呼上的差异,无功能区别。
下面为 T527 平台 CAN_0 设备节点配置示例:
awlink0: awlink@0x0{
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,t527-awlink";
device_type = "awlink0";
awlink-pin = <1>;
id = <0>;
status = "okay";
};
下面为 T527 平台 CAN_1 设备节点配置示例:
awlink1: awlink@0x1{
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,t527-awlink";
device_type = "awlink1";
awlink-pin = <0>;
id = <1>;
status = "okay";
};
驱动文件
AllWinner T527 平台 CAN 总线驱动路径如下:
- Android 系统
- Debian 11 系统
查询当前CAN设备
查询当前网络设备:
操作示例:
console$ ifconfig -a
...
awlink0: flags=128<NOARP> mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 27
awlink1: flags=128<NOARP> mtu 16
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 10 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 28
...
CAN 配置
Tip
下文将以CAN_0节点为例进行说明,该节点对应DTS文件中的awlink0节点(即CAN_0节点的设备树命名为awlink0)。
关闭 CAN:
设置awlink0异常时10ms重启:
设置awlink0的比特率为1 Mbps/s,且开启回环:
设置队列深度:
查看 can0 配置信息:
启动 CAN:
CAN 发送
发送(标准帧,数据帧,ID:123,date:DEADBEEF):
发送(标准帧,远程帧,ID:123):
发送(扩展帧,数据帧,ID:00000123,date:DEADBEEF):
发送(扩展帧,远程帧,ID:00000123):
CAN 接收
开启打印,等待接收: