Firefly开源社区

打印 上一主题 下一主题

[Linux] CAN问题

125

积分

0

威望

0

贡献

技术小白

积分
125

CAN问题

发表于 2023-4-10 15:59:49      浏览:4926 | 回复:7        打印      只看该作者   [复制链接] 楼主
请教一下ITX-3588J上关于CAN的问题,买了一个CAN收发小模块接在板子上,canh接canh,canl接canl,在板子串口里面candump can0,在Linux命令行下cansend can0 123#1122334455667788,却接收不到任何数据,bitrate都设置为500K,两边都有can0节点生成,不知道问题出在哪里,我看kernel的代码默认编译的是canfd的代码,设备树里面的compatible = "rockchip,can-2.0"; can驱动里面的是can-1.0,canfd驱动里既有can-1.0也有can-2.0,有没有大佬给点思路。。。。
回复

使用道具 举报

1183

积分

1

威望

3

贡献

官方团队

Rank: 9Rank: 9Rank: 9

积分
1183
发表于 2023-4-10 17:55:09        只看该作者  沙发
ITX-3588J硬件版本是多少?拍丝印看看
回复

使用道具 举报

992

积分

0

威望

0

贡献

技术大神

Rank: 3Rank: 3

积分
992
发表于 2023-4-11 14:11:19        只看该作者  板凳
看一下硬件版本,有一个版本没有加ic,那个版本的can还不能直接使用。驱动就是使用canfd的也就是设备树的can2.0
回复

使用道具 举报

125

积分

0

威望

0

贡献

技术小白

积分
125
发表于 2023-4-11 14:48:33        只看该作者  地板
dengkx 发表于 2023-4-11 14:11
看一下硬件版本,有一个版本没有加ic,那个版本的can还不能直接使用。驱动就是使用canfd的也就是设备树的ca ...

设备树里面默认的确实是can2.0,但是没有数据,我把改成can1.0就能正常candump了,这是为什么呢?
回复

使用道具 举报

125

积分

0

威望

0

贡献

技术小白

积分
125
发表于 2023-4-11 14:55:39        只看该作者  5#
zhangzhenzhao 发表于 2023-4-10 17:55
ITX-3588J硬件版本是多少?拍丝印看看

板子上有三行字

ITX-15J
ITX-3588J
V1.2 2022.09.26

你说的是这个吗
我现在把设备树里里卖弄的compatible = "rockchip,can-2.0"改成compatible = "rockchip,can-1.0"就能candump数据了,这是为什么。
回复

使用道具 举报

125

积分

0

威望

0

贡献

技术小白

积分
125
发表于 2023-4-11 15:01:01        只看该作者  6#
dengkx 发表于 2023-4-11 14:11
看一下硬件版本,有一个版本没有加ic,那个版本的can还不能直接使用。驱动就是使用canfd的也就是设备树的ca ...

还有rockchip_canfd.c里面的一段代码如下:

static const struct of_device_id rockchip_canfd_of_match[] = {
        {
                .compatible = "rockchip,canfd-1.0",
                .data = (void *)ROCKCHIP_CANFD_MODE
        },
        {
                .compatible = "rockchip,can-2.0",
                .data = (void *)ROCKCHIP_CAN_MODE
        },
        {},
};

这个意思是说canfd的驱动既可以使用can-1.0也可以使用can-2.0吗?
回复

使用道具 举报

125

积分

0

威望

0

贡献

技术小白

积分
125
发表于 2023-4-11 15:18:44        只看该作者  7#
dengkx 发表于 2023-4-11 14:11
看一下硬件版本,有一个版本没有加ic,那个版本的can还不能直接使用。驱动就是使用canfd的也就是设备树的ca ...

我现在把can和canfd的驱动同时都打开了,can.c里面的是can-1.0而canfd里面的是canfd-1.0和can-2.0,设备树里面的是can-2.0,我实验证明当不加修改直接用的时候,没有dump的数据,在这里我感觉是当设备树是can-2.0的时候canfd的驱动并不能用?难道当我把设备树改成can-1.0的时候can的驱动就可以用,难道只有 把设备树改成canfd-1.0的时候canfd的驱动才能用吗,那既然这样,为什么还要在canfd的驱动代码里面加can-2.0这一条。。。搞不懂
回复

使用道具 举报

992

积分

0

威望

0

贡献

技术大神

Rank: 3Rank: 3

积分
992
发表于 2023-4-11 16:34:26        只看该作者  8#
Bennett 发表于 2023-4-11 15:18
我现在把can和canfd的驱动同时都打开了,can.c里面的是can-1.0而canfd里面的是canfd-1.0和can-2.0,设备 ...

使用can2.0的会比can1.0性能更强,can1.0在发送数据时不能接收数据。一般can1.0能使用的,can2.0也没问题,至于你这种现象我没有遇到过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表