SLCAN 串口转CAN

本文详细介绍了SLCAN协议,包括11位和29位帧类型的描述,以及SLCAN帧的ASCII格式。此外,还解析了SLCAN驱动的实现,包括串口线路规程、注册网络接口和数据的发送与读取。最后,提供了设置CAN工具、串口参数、CAN参数以及数据收发的实际操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



一、SLCAN协议
     slcan 即serial line CAN interface driver (using tty line discipline)
    通用标准协议参考:http://www.mirrorservice.org/sites/downloads.sourceforge.net/s/so/socketcan.berlios/SLCAN-API.pdf

SLCAN 帧的ASCII 描述如下:

  <type> <id> <dlc> <data>

 type的定义: 

  t => 11 bit data frame 标准帧

  r => 11 bit RTR frame  带RTR的标准帧

  T => 29 bit data frame ID扩展帧

  R => 29 bit RTR frame  带RTR的ID扩展帧


id 为3个字节的ASCII Hex,扩展为8个字节的ASCII Hex。

dlc 一个字节的ASCII 数字 ('0'~'8')

data ASCII的16进制,个数为dlc。


例:

t1230 : can_id 0x123, can_dlc 0, no data

t4563112233 : can_id 0x456, can_dlc 3, data 0x11 0x22 0x33

T12ABCDEF2AA55 : extended can_id 0x12ABCDEF, can_dlc 2, data 0xAA 0x55

r1230 : can_id 0x123, can_dlc 0, no data, remote transmission request





二、SLCAN驱动
     文件路径:linux/drivers/net/can/slcan.c

1. 串口线路规程

驱动初始化函数:slcan_init(void);

线路规程接口:tty_register_ldisc(N_SLCAN, &slc_ldisc);

slc_ldisc can操作定义如下:

static struct tty_ldisc_ops

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值