这篇文章详细介绍了can总线的基础知识
BasicCAN and PeliCAN
CAN 以两种形式存在,一种是具有11位ID标识符的BasicCAN,另一种是带有扩展成29位ID标识符的高级形式PeliCAN。
内部的验收滤波器、屏蔽滤波器可通过标识符ID来接收需要的报文,屏蔽不相关的报文,即只向CPU 提交合适的报文。Philips、Intel、Siemens均支持BasicCAN 和PeliCAN。
同时,PeliCAN 协议允许两段长度的标识符:A部分使用11位报文标识符,能够识别出2032个不同的标识符(保留十六位),此部分兼容BasicCAN;而PeliCAN (B部分)有29位,能够产生536870912个不同的标识符。
PART A 的设备只能用标准的CAN 协议发送和接收。如果在29位ID的扩展CAN 系统中使用,设备会发生错误并破坏网络。SIEMENS 81C90 和81C91 是相类似的PART A (11位ID)设备,但可在扩展CAN 上使用而不会引起总线错误。原因很简单,因为它们忽略了扩展CAN帧,而是被认为是PART B设备。PART B 的设备(PeliCAN)则可由设定工作于其中一种模式下。
数据链路层定义了报文传输的格式和定时协议,这里有两种描述符,都能达到8字节的数据。描述符是非常重要的,因为它们定义了报文的优先权以及报文传输的类型。
标识符场有11位,并用来识别报文以及决定总线访问的优先权。标识符的二进制值越小,其优先权就越高。报文的优先权分配是CAN 总线的特征之一,特别在一个强大的实时控制环境里,这一点尤其吸引人。
标识符场中所有的位都能够决定报文的优先权,这意味着,在一个11位系统里面,报文的优先权编号(号码)可以从16(高优先权)到2032 (低优先权)。CAN 规范保证了优先权与延时是相关联的。
以下是CAN总线介绍:
一个帧的格式
总线仲裁:
上图,总线仲裁机制有两种:线与机制,回读机制
通过逐位比较。回读机制,总线上的节点会读取总线的值,如果节点发出的是1,回读的是0,则丢失仲裁(失败)
ITM:三位的帧间隔
总线空闲判定:
在总线上检测到11个连续的的1,则意味着总线此时是空闲状态,在其他位置不可能检测到连续的11个1,因为位填充机制,位填充范围在SOF起始到CRC校验结束。