SLCAN 串口转CAN

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


一、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

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32串口CAN是一种常见的串行通信CAN总线通信的方式。在这种换过程中,我们使用STM32微控制器的串口功能来接收来自外部设备的串行数据,并将其换为CAN总线上的消息。 为了实现这种串口CAN的功能,我们需要选择适当的STM32微控制器,该微控制器应该具有串口和CAN控制器的功能。首先,我们需要在STM32的引脚上配置相应的串口和CAN总线引脚。然后,我们需要在代码中初始化和配置串口和CAN控制器。通过配置串口的波特率、数据位、停止位和校验位等参数,我们可以适配外部设备的串行数据格式。同时,我们还需要配置CAN控制器的波特率、ID过滤器和工作模式。 一旦初始化和配置完成,我们可以开始通过串口接收外部设备发送的串行数据。一般情况下,我们会使用中断或轮询方式来接收串口数据。在接收到数据后,我们可以处理数据,比如解析数据格式或者执行特定的操作。 在处理完串口数据后,我们可以利用CAN控制器将数据换为CAN总线上的消息。通过配置CAN消息的ID、数据和数据长度等属性,我们可以将串口数据换为相应的CAN消息格式并发送到CAN总线上。 总的来说,STM32串口CAN是一种灵活可靠的通信方式,适用于串行设备与CAN总线设备的通信。通过合理配置和使用STM32微控制器的串口和CAN控制器功能,我们可以实现串口数据和CAN总线数据的高效换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值