CAN总线协议详解

can总线,两条线,CANH和CANL,电位差判断总线电平,采用差分信号,有显性电平和隐形电平。

报文结构:

CAN总线协议详解_第1张图片

数据帧:大多数情况下使用的报文结构
从标识符长度上,又可以把数据帧分为标准帧 (11 位标识符 ) 和扩展帧 (29 位标识符 ) 。
数据帧由 7 个不同的位场组成:帧起始、仲裁场、控制场、数据场、 CRC 场、应答场、帧结束。其中,数据场的长度为 0~8 个字节。标识符位于仲裁场中,报文接收节点通过标识符进行报文滤波。

远程帧:用来向某一个节点请求数据
由总线上的节点发出,用于请求其他节点发送具有同一标识符的数据帧。当某个节点需要数据时,
可以发送远程帧请求另一节点发送相应数据帧。与数据帧相比,远程帧没有数据场

CAN总线协议详解_第2张图片

错误帧:任何单元,一旦检测到总线错误就发出错误帧

CAN总线协议详解_第3张图片

CAN总线协议详解_第4张图片

CAN总线协议详解_第5张图片

帧起始:由单个显性位组成,总线空闲时,发送节点发送帧起始,其他接收节点同步于该帧起始位。

帧结束:由7个连续的隐形位组成。

(注:显性电平和隐性电平是相对于CAN_H和CAN_L而言的差分信号电平,并非TTL电平上的高低电平,需要注意)如图2-2所示。

仲裁段:

CAN-bus是如何解决多个节点同时发送数据,即总线竞争的问题?该问题由仲裁段给出答案。

CAN-bus并没有规定节点的优先级,但通过仲裁段帧ID规定了数据帧的优先级。根据CAN2.0标准版本不同,帧ID分为11位和29位两种。

如图24所示CAN控制器在发送数据的同时监测数据线的电平是否与发送数据对应电平相同,如果不同,则停止发送并做其他处理。

假设节点A、B和C都发送相同格式相同类型的帧,如标准格式数据帧,它们竞争总线的过程是

从该分析过程得出结论是:帧ID值越小,优先级越高;

对于同为扩展格式数据帧、标准格式远程帧和扩展格式远程帧的情况同理

控制段

控制段共6位,标准帧的控制段由扩展帧标志位IDE、保留位r0和数据长度代码DLC组成;扩展帧控制段则由IDE、r1、r0和DLC组成

数据段

一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合

CRC段

CAN-bus使用CRC校验进行数据检错,CRC校验值存放于CRC段。 CRC校验段由15位CRC值和1位CRC界定符构成

ACK段

当一个接收节点接收的帧起始到CRC段之间的内容没发生错误时,它将在ACK段发送一个显性电平

过载帧:

当某个接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点;过载帧由过载标志和过载帧界定符组成

由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个位的现象

帧间隔:

用于将数据帧或远程帧和他们之前的帧分离开,但过载帧和错误帧前面不会插入帧间隔。

帧间隔过后,如果无节点发送帧,则总线进入空闲。

帧间隔过后,如果被动错误节点要发送帧,则先发送8个隐性电平的传输延迟,再发送帧。

总线流程图:

你可能感兴趣的:(CAN,CAN)