CAN问题
请教一下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,有没有大佬给点思路。。。。 ITX-3588J硬件版本是多少?拍丝印看看 看一下硬件版本,有一个版本没有加ic,那个版本的can还不能直接使用。驱动就是使用canfd的也就是设备树的can2.0 dengkx 发表于 2023-4-11 14:11看一下硬件版本,有一个版本没有加ic,那个版本的can还不能直接使用。驱动就是使用canfd的也就是设备树的ca ...
设备树里面默认的确实是can2.0,但是没有数据,我把改成can1.0就能正常candump了,这是为什么呢? 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数据了,这是为什么。 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吗?
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这一条。。。搞不懂 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也没问题,至于你这种现象我没有遇到过
页:
[1]