查看: 11783|回复: 7

[求助] 求助: imx6q sabresd上flexcan的BUS-OFF问题

[复制链接]

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2014-11-18
发表于 2014-11-9 12:19:57 | 显示全部楼层 |阅读模式
根据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.0: 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.0: 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

貌似一切都正常

发送:127|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上也没有量出任何数据信号波动



在flexcan.c里打桩, send的时候, flexcan_start_xmit执行完整, 随后 flexcan_irq 中 reg_iflag1=0x0, reg_esr=0x24036
对照查看寄存器文档,已经出现了BIT0_ERR

请问如何能让CAN正常工作?



我知道答案 目前已有7人回答
回复

使用道具 举报

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3278
最后登录
1970-1-1
发表于 2014-11-10 11:03:57 | 显示全部楼层
楼主你好,请问所有修改的部分你都按照文档How to enable CAN bus on i.MX6Q SabreSD.pdf 修改过了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2014-11-18
 楼主| 发表于 2014-11-10 11:18:14 | 显示全部楼层
是的, 都是按照文档改的。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
15
最后登录
2014-11-18
 楼主| 发表于 2014-11-10 20:55:46 | 显示全部楼层
自己顶一下
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
6
最后登录
2016-3-1
发表于 2016-3-1 10:54:51 | 显示全部楼层
解决了吗?
回复

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
6
最后登录
2016-3-1
发表于 2016-3-1 15:29:38 | 显示全部楼层
终于知道原因了。
硬件设计的问题。CAN RX和TX要回环。因为,CAN物理层会对比RX和TX的数据,只有它们一致,才认为发送是正确的(除了ACK bit外)。
回复 支持 反对

使用道具 举报

  • TA的每日心情

    2017-1-16 12:20
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    12

    主题

    653

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1667
    最后登录
    2022-5-2
    发表于 2016-3-1 15:42:00 | 显示全部楼层
    问题解决么了没有
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    16
    最后登录
    2016-7-6
    发表于 2016-7-5 15:41:08 | 显示全部楼层
    jhf012 发表于 2016-3-1 15:29
    终于知道原因了。
    硬件设计的问题。CAN RX和TX要回环。因为,CAN物理层会对比RX和TX的数据,只有它们一致, ...

    想问下你这个问题具体是怎么解决的呢。我现在也是imx6跟pc做can通讯,传输数据后,电脑接收不到,发现总线此时已经bus-off了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-8 00:37 , Processed in 0.100544 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表