新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > CAN总线基础知识(三)

CAN总线基础知识(三)

作者: 时间:2016-12-15 来源:网络 收藏

1.7 优先级的决定

在总线空闲状态,最先开始发送消息的单元获得发送权。

多个单元同时开始发送时,各发送单元从仲裁域的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。丢失竞争的单元在下一bit进入接收操作。

仲裁的过程如图27所示。

(1)数据帧和遥控帧的优先级

具有相同 ID 的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。

数据帧和遥控帧的仲裁过程如图28所示。

(2)标准格式和扩展格式的优先级

标准格式 ID 与具有相同ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的RTR 位为显性位的具有优先权,可继续发送。

标准格式和扩展格式的仲裁过程如图29所示。

1.8 位填充

位填充是一种周期性重同步收/发操作的功能,为了防止接收节点间时序由于累积而导致的错误,如果5个bit持续了同样的电平,则添加1个bit的反向数据位。

如图30显示的位填充机制:

(1)发送单元的操作

在发送数据帧和遥控帧的时候,SOF-CRC段间的数据,相同电平如果持续5bit,在下一bit(第6bit)则要插入1bit与前5bit反向的电平。

(2)接收单元的操作

在接收数据帧和遥控帧的时候,SOF-CRC段间的数据,相同电平如果持续5bit,需要删除下一bit(第6bit)再接收。如果这第6bit的电平与前5bit相同,则被视为错误,且发送错误帧。

1.9 错误的种类

有5种类型的错误,可能有2个或更多的错误同时发生:

  • 位错误
  • 填充错误
  • CRC错误
  • 格式错误
  • ACK错误

表8列出了这些错误的种类、内容、错误检测帧和检测单元。

  • 位错误由向总线上输出数据帧、遥控帧、错误帧、过载帧的单元和输出ACK的单元、输出错误的单元来检测。
  • 在仲裁段输出隐性电平,但检测出显性电平时,将被视为仲裁失利,而不是位错误。
  • 在仲裁段作为填充位输出隐性电平时,但检测出显性电平时,将不视为位错误,而是填充错误。
  • 发送单元在ACK 段输出隐性电平,但检测到显性电平时,将被判断为其它单元的ACK 应答,而非位错误。
  • 输出被动错误标志(6 个位隐性位)但检测出显性电平时,将遵从错误标志的结束条件,等待检测出连续相同6 个位的值(显性或隐性),并不视为位错误。

(2) 格式错误

  • 即使接收单元检测出EOF(7 个位的隐性位)的最后一位(第8 个位)为显性电平,也不视为格式错误。
  • 即使接收单元检测出数据长度码(DLC)中9∼15 的值时,也不视为格式错误。

1.10 错误帧的输出时序

检测到发生错误的单元输出一个错误标志,以通知其它单元。

处于主动错误状态的单元输出的错误标志为主动错误标志;处于被动错误状态的单元输出的错误标志为被动错误标志。

发送单元发送完错误帧之后,将再次发送数据帧或遥控帧。

错误标志输出时序如表9:

1.11 位时序

在没有重新同步情况下,发送单元每秒传输的位数称之为位速率。1位由下面4个段组成。

  • 同步段(SS)
  • 传播时间段(PTS)
  • 相位缓冲段1(PBS1)
  • 相位缓冲段2(PBS2)

这些段又由称之为Time Quantum(以下称为Tq)的最小时间单位构成。

1位分为4个段,每个段由若干个Tq构成,这称为位时序。

1位由多少个Tq构成、每个段由多少个Tq构成等是可以设定的。通过设置bit时序。使得可以设定一个采样点以使总线上多个单元可同时采样,所谓采样点就是在这一时刻总线上的电平被锁存,这个锁存的电平作为位的值。采样点的位置在PBS1的结束处。

表10描述了各段的作用和Tq 数。1个位的构成如图31所示。

段名称

段的作用

Tq数

同步段(SS)

多个连接在总线上的单元通过此段实现时序的定时调整,以便同步进行接收和发送的工作。

隐性电平到显性电平或显性电平到隐性电平变化的边沿被期望出现在本段。

1

8-25

传播时间段(PTS)

用于吸收网络上的物理延迟的段。包括发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟。

这个段的时间是以上延迟时间累加和的两倍。

1-8

相位缓冲段1(PBS1)

当信号边沿不能出现在SS 段时,此段用来矫正误差。

由于各单元以各自独立的时钟来工作,细微的时钟误差都会累积起来,PBS 段可用于吸收此误差。

为了吸收一个时钟误差,在SJW设置的范围内增减PBS1和PBS2,PBS1和PBS2越大,允许误差越大,但是通讯速度会降低。

1-8

相位缓冲段2(PBS2)

PBS1或IPT中较大者(见注1和2)

重新同步跳转宽度(SJW)

因时钟频率偏差、传送延迟等原因,某些单元可能会失去同步。SJW是所能校正的最大失去同步的宽度。

1-4*PBS1

注1:IPT代表信息处理时间,是以采样点作为起始的时间段,用于计算后续位的位电平。这是硬件在一个采样点后立刻改变位的电平所必须要的。这个时间等于或小于2Tq,。

注2:因为采样点是处于PBS1结束处,所以IPT和PBS2重叠。当IPT = 2Tq时,PBS2不可能选为1,因此,PBS2必须是2到8Tq。

注3:重新同步的结果使相位缓冲段1增长,或使相位缓冲段2 缩短。相位缓冲段加长或缩短的数量有一个上限,此上限由SJW(重新同步跳转宽度)给定。重新同步跳转宽度应设置于1和最小值之间(此最小值为4*PBS1)。

可以从一位值转换到另一位值的过渡过程得到时钟信息。这里有一个属性,即:只有后续位的一固定最大数值才具有相同的数值。这个属性使总线单元在帧期间重新同步于位流成为可能。可用于重新同步的两个过渡过程之间的最大的长度为29个位时间。

1.12 同步是如何获得的?

CAN总线的通讯是采用NRZ(Non-Return to Zero,非归0)码,数据本身并不携带时钟信息,也即在每一位的开始或结束没有同步信号,发送单元以位时序同步的方式开始发送帧数据,接收单元根据总线电平的变化进行同步并进行接收工作。

然而,发送器和接收器之间由于彼此的时钟误差或传输路径的相位误差可能会失去同步关系,因此接收单元在接收帧的时候,必须通过硬件同步或重新同步调整它的操作时序。

1.13 硬件同步

在总线空闲状态时,接收单元检测到SOF,就会执行这个同步调整过程。“隐式”电平跳变到“显式”电平的边缘的时间点被认为是SS,而不管SJW的值

图32显示了硬件同步机制。

  • 如果沿出现在SS里,沿的相位误差e=0;
  • 如果沿位于采集点(PBS1结束之前)之前,e>0;
  • 如果沿位于采集点之后,e<0;

1.14 重新同步机制

在接收过程中检测到总线电平发生了改变时执行重新同步操作。

每当检测到一个边沿(总线电平的改变),收发单元根据SJW值通过增加PBS1段或减少PBS2段,来调整同步。但,如果发生了超出SJW值的误差时,最大调整量不能超过SJW值。

图33显示了重新同步机制。

1.15 调整同步的规则

硬件同步和再同步的执行遵从如下规则:

1) 在1个位时间里(或者说在2个采样点之间),只允许一个同步(或者说只进行一次同步调整)。

2) 只有当采样点之前的总线电平和边沿后的总线电平不同时,该边沿才能用于调整同步。

3) 如果出现隐性电平到显性电平变化的边沿,且条件(1)和(2)满足,将进行同步。

4) 如果在帧间间隙期间发生隐性电平到显性电平的信号边沿(除了间隙里的第一位),则总会执行硬件同步。

5) 如果发生从所有其它隐性电平到显性电平的信号边沿,则执行再同步。

6) 如果发送单元自身输出的显性电平被检测到有延迟,则不执行再同步。


上一页 1 2 3 下一页

关键词: CAN总线基础知

评论


技术专区

关闭