————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

CAN信号表示

CAN总线采用不归零码位填充技术,也就是说CAN总线上的信号有两种不同的信号状态,分别是显性的(Dominant)逻辑0和隐形的(recessive)逻辑1,信号每一次传输完后不需要返回到逻辑0(显性)的电平。

显性与隐性电平的解释:

CAN的数据总线有两条,一条是黄色的CAN_High,一条是绿色的CAN_Low。

当没有数据发送时,两条线的电平一样都为2.5V,称为静电平,也就是隐性电平。当有信号发送时,CAN_High的电平升高1V,即3.5V,CAN_Low的电平降低1V,即1.5V。

CAN_H-CAN_L < 0.5V 时候为隐性的,逻辑信号表现为"逻辑1"- 高电平。

CAN_H-CAN_L > 0.9V 时候为显性的,逻辑信号表现为”逻辑0″- 低电平。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

CAN的报文格式

CAN的通信帧分成五种,分别为数据帧、远程帧、错误帧、过载帧、帧间隔

数据帧根据仲裁段长度不同分为标准帧(2.0A)和扩展帧(2.0B)


帧起始(SOF) + 仲裁场(ID+RTR) +控制场(IDE+r0+DLC) +数据段(DATA) +CRC段(CRC+del) +ACK段(ACK+del) +帧结束(EOF)

帧起始:报文的起始位,由1个显性位组成。总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。
仲裁场:由 11位标识符(ID) + 1位远程发送请求位(RTR)组成的。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
控制场:由 1个标识符扩展位(IDE)+1个保留位 (ro)+4位数据长度(DLC)组成的。标识符扩展位指出是标准帧还是扩展帧。保留位为将来扩展使用。四位的数据长度位用来指明数据场中数据的长度,数据场范围为0~8个字节。
数据段:由 最高8字节(64bit)组成的,长度取决于控制场的DLC位。
CRC段:由15位的CRC校验码 + 1位CRC界定符(del) 组成的。在CRC校验码之后有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段隔开。
ACK段:由确认位(ACK)+ 1位ACK界定符(del)组成的。ACK在发送节点发送时,为隐性位。当接收节点正确接收到报文时,对其用显性位覆盖。DEL界定符同样为隐性位,用于把ACK段与后面的帧结束隔开。
帧结束:由7个连续的隐形位组成。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

CAN的报文规则

1、多路载波侦听,网络上所有节点以多点接入的方式连接在同一根总线上,且发送数据是广播式。网络上各个节点在发送数据前都要检测总线上是否有数据传输:若网络上有数据,暂时不发送数据,待网络空闲时再发;若网络上无数据,立即发送准备好的数据。

2、冲突检测,节点在发送数据时,要不停的检测发送的数据,确定是否与其他节点数据发送冲突,如果有冲突,则保证优先级高的报文先发送。

3、非破坏性仲裁机制,通过ID仲裁,ID数值越小,报文优先级越高。由于数据帧的RTR位为显性电平,远程帧为隐性电平,所以帧格式和帧ID相同的情况下,数据帧优先于远程帧;由于标准帧的IDE位为显性电平,扩展帧的IDE位为隐形电平,对于前11位ID相同的标准帧和扩展帧,标准帧优先级比扩展帧高。

4、发送低优先级报文的节点退出仲裁后,在下次总线空闲时自动重发报文。

5、高优先级的报文不能中断低优先级报文的发送。

6、报文接收过滤:CAN控制器大多具有根据ID过滤报文的功能,即只接收某些ID的报文。节点对接收到的报文进行过滤:比较消息ID与选择器(Accepter)中和接受过滤相关位是否相同。如果相同,接收;如果不相同,则过滤。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

CAN的错误帧

CAN-bus的错误类型共有5种:CRC错误、格式错误、应答错误、位发送错误、位填充错误。

  1. CRC错误:发送节点计算的CRC校验值与接收到的CRC不同。
  2. 格式错误:传输的数据帧格式与任何一种合法的帧格式不符。
  3. 应答错误:发送节点在应答阶段没有收到应答信号。
  4. 位发送错误:发送节点在发送时发现总线电平与发送电平不同。
  5. 位填充错误。通信线缆上传输的信号不符合位填充规则。

当出现5种错误类型之一时,发送或接收节点将发送错误帧。

为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通信,CAN-bus规定了节点的3种状态及其行为

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

CAN的过载帧与帧间隔

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

CAN的同步

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————