彻底了解CAN协议

      大家好,由于近段时间有几个同事和小伙伴问到了CAN网络的问题,所以我打算还是先出一篇关于CAN网络协议的文章来交流与学习。

      首先,关于CAN的一些基本定义我认为还是有必要写一下的,不管是对以后工作还是面试我认为都是有用的。总的来说, CAN总线有2种架构(ISO-11898 和 ISO-11519),CAN信号有2种形式(显和隐),CAN信号发送和接收2个过程,下面我们来一个一个说明。

  1.      CAN总线协议是一种ISO 国际标准化的串行通信协议
  2.      有 ISO-11898 和 ISO-11519两个系列
  • ISO-11898 定义了通信速率为 125 kbps ~1Mbps高速 CAN 通信标准,属于闭环总线传输速率可达1Mbps总线长度 ≤ 40米,ISO-11898总结:通信速率传输速率高长度短。这是我目前使用最多的系列
  • ISO11519 定义了通信速率为 10~125 kbps低速 CAN 通信标准,属于开环总线传输速率40kbps时,总线长度可达1000米,ISO11519总结:通信速率传输速率低总线长度长。

  3.    CAN_H和CAN_L线是使用双绞屏蔽线,防止总线干扰过大

  4.    CAN总线上,信号表现为电压形式,通过CAN_H和CAN_L线上的电位差来表示CAN信号,分为显性电平(dominant)和隐性电平(recessive)两种类型。其中显性电平规定为逻辑0隐性电平则为逻辑1。这个显现电平和隐线电平逻辑可能有点绕,我们字面一般逻辑显现为1,但是这里不是。怎么记住呢。我们可以这样记:隐性电平代表无数据传输显性信号代表有数据传输

  5.    CAN总线上的所有节点没有主从之分,反应在数据传输上是:在总线空闲状态下,任意节点都可以向总线上发送信息。另外:最先向总线发送信息的节点获得总线的发送权;当多个节点同时向总线发送消息时,所发送消息的优先权高的那个节点获得总线的发送权。这个在没本书上面都有解释,也很好理解。

  6.    在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。(简单一句话理解:双方必须需要在同一频道交流,不然沟通就有障碍

   7.   标准格式和扩展格式,至于这两种在我之前的文章中就有介绍。这里不做多解释

          注意帧起始位及时帧开始的段,1个位的显性位。为什么帧起始位为0,因为总线空闲时为隐性位,故帧起始以显性位非常好识别

                       仲裁段表示就是根据报文ID来确定其发送优先级,从SOF位开始,从左往右                                逐位比较,只要出现位不一样,比较就结束,显性电平者胜出,有权发送

                      数据段位要注意摩托罗拉流和英特尔流,其实及时大端模式和小端模式,                                         1.大端模式的优点:符号位的判定固定为第一个字节,容易判断正负

                                 2.小端模式的优点:强制转换数据不需要调整字节内容

                       帧的结束的段。由7个位的隐性位构成        

     8.    错误帧在这里我需要多花点篇章进行讲解,因为我最近在一个项目中遇到了错误帧问题 

              1.位填充(Bit Stuffing):位填充是为防止突发错误而设定的功能。当同样的电平持续5位则添加一个位的反型数据位

               2.错误类型

               3.错误处理:错误状态的种类有:主动错误状态(6个位的显性位被动错误状态(6个位的隐性位总线关闭态3种状态。单元始终处于3种状态之一。

      9.      位时序我在前面文章中也讲到了,但是我认为这是在面试中比较容易被问到的一个点,所以这里在来讲一讲。具体来说,将一个位分为4段(同步,传播时间段,相位缓冲1,相位缓冲2),如上图所示。这些段又由可称为Time Quantum(以下称为Tq)的最小时间单位构成。1位分为4个段,每个段又由若干个Tq构成,这称为位时序。1位由多少个Tq构成,每个段又由多少个Tq构成等,可以任意设定位时序,一般采样点在80%点处。

来我们使用微芯来进行讲解:先通过数据手册找到寄存器

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 4
关注 84
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧