This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3359:CAN 总线在连接到总线后进入错误被动状态

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/570423/linux-am3359-can-bus-goes-into-error-passive-state-after-connecting-it-to-the-bus

器件型号:AM3359

工具/软件:Linux

大家好、

我能够通过发送和接收一个 CAN 总线来设置 CAN 总线(带有 CAN0和 CAN1)、而不会出现任何问题。

./IP 链路设置 CAN0 UP 类型可在环回关闭重新启动时按位速率125000仅监听100

./IP 链路设置 CAN1 UP 类型可在重新启动 ms 100时按位速率125000仅监听关断环回

三、CAN1 -e

CANDump CAN0

使用 ifconfig、我还可以看到接收和传输的数据包会递增。  下面您可以看到我的输出。

root@TQMa335x:~/CAN-bus ./IP -det -stat link show CAN0

2:CAN0: MTU 16 qdisc pfifo_fast 状态未知 qlen 10.
   链接/CAN
   CAN 状态错误激活(错误计数器 TX 0 Rx 0)重新启动 ms 100
   比特率125000采样点0.875
   TQ 500 prop-g 6 phase seg1 7 phase seg2 SJW 1.
   c_can:tseg1 2..16 tseg2 1..8 SJW 1..4 BRP 1.1024 BRP-inc 1.
   时钟26000000
   重新启动总线错误 arbit-lost error-warn error-pass bus-off
   0         0         0         3                  3 0         
   RX:字节 数据包 错误 丢失溢出 mcast   
   138353    23929   0            0 0      0 0 0      
   TX:字节 数据包 错误 丢失了载波整理
   104340    18060   0      16     0            


root@TQMa335x:~/CAN-bus ./IP -det -stat link show CAN1
3:CAN1: MTU 16 qdisc pfifo_fast 状态向上 qlen 10
   链接/CAN
   CAN 状态错误激活(错误计数器 TX 0 Rx 0)重新启动 ms 100
   比特率125000采样点0.875
   TQ 500 prop-g 6 phase seg1 7 phase seg2 SJW 1.
   c_can:tseg1 2..16 tseg2 1..8 SJW 1..4 BRP 1.1024 BRP-inc 1.
   时钟26000000
   重新启动总线错误 arbit-lost error-warn error-pass bus-off
   0         0         0         1         2         1         
   RX:字节 数据包 错误 丢失溢出 mcast   
   555424    75849   1      0      1      0      
   TX:字节 数据包 错误 丢失了载波整理
   35943     6196    0      32     0       

->现在,当我将 CAN0连接到单独的总线(扩展 CAN)时,问题就会出现。 我只想监控总线上的流量。

连接后、错误激活更改为错误被动、并且我无法从总线中看到任何内容。 ifconfig doenst 显示通信的任何迹象都不会发生。

root@TQMa335x:~/CAN-bus ./IP -det -stat link show CAN0
2:CAN0: MTU 16 qdisc pfifo_fast 状态未知 qlen 10.
   链接/CAN
   CAN 状态被动错误(错误计数器 TX 0 Rx 127)重新启动 ms 100
   比特率125000采样点0.875
   TQ 500 prop-g 6 phase seg1 7 phase seg2 SJW 1.
   c_can:tseg1 2..16 tseg2 1..8 SJW 1..4 BRP 1.1024 BRP-inc 1.
   时钟26000000
   重新启动总线错误 arbit-lost error-warn error-pass bus-off
   0         0         0         4                  4 0         
   RX:字节 数据包 错误 丢失溢出 mcast   
   148920    25756   0            0 0      0 0      
   TX:字节 数据包 错误 丢失了载波整理
   104340    18060   0      16     0            

发生这种情况的唯一原因是、我的独立总线传输 CAN0节点检测到的错误、并在计数器中递增。

但为什么我不能看到错误或正在传输的帧?

或者如何设置以忽略总线上的错误和监听?

非常感谢您的帮助。

您好!

佩德罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pedro、

    对延迟答复表示歉意。

    我已通知 CAN 设计人员。 他们的反馈应发布在此处。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好!

    我刚刚解决了这个问题。 经过多次错误尝试(通过在示波器中测量位宽直至8us) 、我已将比特率设置为133kbps。 这将引导我检查时钟源。 我将时钟源设置为26MHz、并装配了24MHz 数字振荡器。 :-)

    经过许多小时研究如何更改时钟源后、我发现 SYSBOOT[15;14]应设置为10b。

    开发板中的这些位、这些位位于 DIP 开关 S1中。

    [0.000000]   OMAP 时钟事件源:timer2为24000000 Hz                                      
    [0.000000]   sched_clock:24MHz 时为32位、分辨率为41ns、每178956ms 换行一次               
    [0.000000]   OMAP 时钟源:Timer1为24000000 Hz                                    

    最终解决方案显而易见、但只有在进行一些挖掘后、我才能设置它。 ;-)

    PS:CAN 总线立即进入错误被动模式、因为比特率错误、导致它在插入总线后立即读取6个隐性位

    再次感谢您的及时帮助和支持。

    此致、

    佩德罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您与社区分享您的解决方案。

    此致、
    Yordan