打印
[i.MX]

imx6dl can1不能收发数据

[复制链接]
2241|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小番茄|  楼主 | 2016-3-15 12:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

根据SABRE-SD参考设计做了一块板,调试CAN-BUS的时候遇到一些问题。
基线:android_kk4.4.2_1.0.0
代码方面按照"How to enable CAN bus on i.MX6Q SabreSD.pdf",

初始化:
    vcan: Virtual CAN interface driver
    flexcan netdevice driver
    flexcan imx6q-flexcan.1: device registered (reg_base=d9978000, irq=142)
    can: controller area network core (rev 20090105 abi 8)
    can: raw protocol (rev 20090105)
    can: broadcast manager protocol (rev 20090105 t)


配置: root@sabresd_6dq:/ # ip link set can0 up type can bitrate 125000
    flexcan imx6q-flexcan.1: writing ctrl=0x0e31e055


查看:root@sabresd_6dq:/ # ip -details link show can0
    2: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 16 qdisc pfifo_fast state UP mode DEFAULT qlen 10
        link/can
        can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 0
        bitrate 125000 sample-point 0.875
        tq 500 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
        flexcan: tseg1 4..16 tseg2 2..8 sjw 1..4 brp 1..256 brp-inc 1
        clock 30000000

貌似一切都正常

发送:root@sabresd_6dq:/ # cansend can0 -i0x100 11 22 33 44                     
    interface = can0, family = 29, type = 3, proto = 1
另一块板子接收也没任何现象

再查看:root@sabresd_6dq:/ # ip -details link show can0                                
    2: can0: <NO-CARRIER,NOARP,UP,ECHO> mtu 16 qdisc pfifo_fast state DOWN mode DEFAULT qlen 10
        link/can
        can state BUS-OFF (berr-counter tx 0 rx 0) restart-ms 0
        bitrate 125000 sample-point 0.875
        tq 500 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
        flexcan: tseg1 4..16 tseg2 2..8 sjw 1..4 brp 1..256 brp-inc 1
已经变成 BUS-OFF 状态
在CAN1_TX上也没有量出任何数据信号波动

相关帖子

沙发
小番茄|  楼主 | 2016-3-15 12:08 | 只看该作者
本帖最后由 小番茄 于 2016-3-15 12:12 编辑

我在内核中注册的是can1,https://community.freescale.com/message/394563 这里有人说,因为我在内核中只注册了can1,而内核默认第一个注册的CAN为can0,实际接口使用的CAN1, 所以上面的配置命令都是对can0进行操作的,不知道我是否有理解错
就算我在内核中注册了两个CAN,用同样的命令去配置好can1,结果也是一样的,收发都没如何现象

使用特权

评论回复
板凳
小番茄|  楼主 | 2016-3-16 10:09 | 只看该作者
为什么每次都沉了呢

使用特权

评论回复
地板
小番茄|  楼主 | 2016-3-16 17:08 | 只看该作者
使用loopback模式可测试本机又没问题
# ip link set can1 type can bitrate 50000 loopback on
# ip link set can1 up
# candump can1 &
# cansend can1 -i0x100 01 02 03 04                        
interface = can1, family = 29, type = 3, proto = 1
<0x100> [4] 01 02 03 04

两台机器loopback模式都没问题 ,就是两者之间不能相互通信      
有没有人遇到过这个问题呢  

使用特权

评论回复
5
mini1986| | 2016-4-14 08:09 | 只看该作者
首先你得确认io有没有复用.......
驱动调好了的话,can肯定得有发送信号出来......

使用特权

评论回复
6
lizhen760| | 2016-5-27 10:50 | 只看该作者
楼主,我也遇到这个情况目前,你解决了吗?就是引脚复用问题好像,但是我强制写入寄存器配置也是不行,该如何操作?

使用特权

评论回复
7
wzj071227| | 2016-5-27 15:28 | 只看该作者
可以从两个方面入手,第一个就是管脚有没有复用,第二个就是因为板子的硬件接的管脚和dts(设备树)注册的管脚不一致,我遇到过这个问题就是第二个原因,你可以查查

使用特权

评论回复
8
小番茄|  楼主 | 2016-6-1 11:20 | 只看该作者
本帖最后由 小番茄 于 2016-6-1 11:22 编辑
lizhen760 发表于 2016-5-27 10:50
楼主,我也遇到这个情况目前,你解决了吗?就是引脚复用问题好像,但是我强制写入寄存器配置也是不行,该如 ...

最后查出是硬件问题,你解决了吗?我这写个文档,如果需要的话可以发给你参考下

CAN_总线移植总结.rar

12.42 KB

使用特权

评论回复
9
noraiein| | 2016-7-5 15:31 | 只看该作者
小番茄 发表于 2016-6-1 11:20
最后查出是硬件问题,你解决了吗?我这写个文档,如果需要的话可以发给你参考下 ...

想问下你后面硬件问题具体是如何解决的。我也遇到这样的问题,我第一次是能够跟电脑进行收发的,第二天再做这个,就是bus-off了,硬件设备跟第一次没有区别。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

62

帖子

1

粉丝