新手,嵌入式linux,CAN 驱动有关问题,怎么产生can0等设备

新手,嵌入式linux,CAN 驱动有关问题,怎么产生can0等设备,第1张

测试can需要ip,can-utils和libsocketcan库.

通过ip工具配置can,如速率,启用和禁用can等.不能用buildroot编译出来的ip,需要重新编译.

以装载和卸载模块为例:

1、首先输入代码

#include <linux/init.h>

#include <linux/module.h>

2、然后输入下方的代码:

static int my_init(void)

{

                    return  0

}

static void my_exit(void)

3、然后在输入下方的代码:

{

                    return

}

module_init(my_init)

module_exit(my_exit)这样就完成了。

SocketCAN插件封装了用于访问CAN设备的Linux套接字API。该API是一组由大众汽车研究公司(Volkswagen Research)向Linux内核提供的CAN驱动程序和网络堆栈。

该插件需要具有SocketCAN支持的Linux内核和用于所用CAN硬件的SocketCAN设备驱动程序。

要列出所有(包括未配置的)网络接口, ifconfig -a 可以使用该命令。

要使用SocketCAN,必须加载相应的Linux内核模块,并且必须配置网络接口。

本节假定设备驱动程序已加载(最有可能在连接CAN硬件时自动加载)。

要将设备can0设置为250 kBit / s的比特率,请执行以下 *** 作:

要在100毫秒后自动从“总线关闭”错误中恢复,可以使用以下命令:

要将设备can0设置为500 kBit / s的仲裁比特率和4 MBit / s的数据比特率(对于具有比特率切换标志的帧):

注意: 要使用CAN FD,必须将MTU(最大传输单元)设置为72字节。

以下使用的命令行测试程序来自 can-utils 包:

首先,有必要检查 QCanBus 是否提供了所需的插件:

其中 socketcan 是插件名称。

接下来,可以建立到特定接口的连接:

其中 can0 是活动的CAN接口名称。CAN接口的作用类似于Linux系统上的常规网络接口,可以使用来发现 ifconfig 。同样, availableDevices() 方法返回当前可用设备的列表。

该设备现已打开,可以写入和读取CAN帧:

可以使用 readFrame() 方法完成读取。当至少一个新的帧可用于读取时 framesReceived() 信号信号被触发:

SocketCAN支持以下配置,可以通过 setConfigurationParameter() 进行控制:

例如:

SocketCAN支持扩展的帧格式和灵活的数据速率。

SocketCAN支持以下附加功能:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6210286.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存