1、CAN 总线简介 淄博皓轩仪表自动化技术有限公司 专业 自动化工程 设计 淄博皓轩仪表自动化技术有限公司 2011-05-30 22:29:46 作者 :SystemMaster 来源 : 文字大小 :大 中 小 淄博皓轩仪表自动化技术有限公司 专业 自动化工程设计 CANControl( Controller) Area Network是控制 (器 )局域网的简称 它是德国公司在年为解决现代汽车中众多测量控制部件之间的数据交换而开发的一种串行数据通信总线。 现已被列入 ISO 国际标准,称为 ISO11898 CAN 最初是为汽车的监测、控制系统而设计的,现已在航天、电力、石化、冶金、纺织、
2、造纸、仓储等行业广泛采用。在火车、轮船、机器人、楼宇自控、医疗器械、数控机床、智能传感器、过程自动化仪表等自控设备中,都广泛采用 CAN 技术 CAN 的主要技术特点 CAN 网络上的节点不分主从,任一节点均可在任意时刻主动地向网络上其他节点发送信息,通信方式灵活,利用这一特点可方便地构成多机备份系统 CAN 网络上的节点信 息具有不同的优先级,可满足对实时性的不同要求,高优先级的数据最多可在 134 微秒内得到传输 CAN 采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动地退出发送,而最高优先级的节点可不受影响地继续传输数据,从而节省了总线冲突的仲裁时间。 C
3、AN 只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的 “调度 “ CAN 的直接通信距离最远可达 10km(速率 5kbps 以下);通信速率最高可达 1Mbps(此 时通信距离最长为 40m)。 CAN 上的节点数主要决定于总线驱动电路,目前可达 110 个;报文标识符可达 2032 种( CAN2.0A),而扩展标准( CAN2.0B)的报文标识符几乎不受限制 采用短帧结构,传输时间短,受干扰概率低,具有良好的检错效果。 。 CAN 节点中均有错误检测、标定和自检能力。检错的措施包括:发送自检、循环冗余校验、位填充和报文格式检查等。保证了低出错率。
4、CAN 节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。 CAN 的通信介质可为双绞线、同轴电缆或光纤,选择灵活。 CAN 器件可被置于无任何内部活动的睡眠方式,相当于未连接到总线驱动器。这样可降低系统功耗。其睡眠状态可借助总线激活或者系统的内部条件被唤醒。 CAN 在汽车电子系统中得到广泛应用 现代汽车越来越多地采用电子装置控制,如发动机控制、注油控制,加速、刹车控制( ASC)及复杂的防死锁刹车系统( ABS)等。 汽车内部所具有的控制器、执行器、监测仪器、传感器的数量很多,按模拟系统的接线方式,一个传统车辆的典型连线束展 开后,其长度约为1600 多米,有将
5、近 300 个接头 这些控制需检测及交换大量数据,因而引入 CAN 通信技术,组成汽车内部网络,以适应控制与数据通信的需要。 世界上一些著名汽车制造厂商如 BENZ(奔驰)、 BMW(宝马)、PORSCHE(保时捷) ROLLS-ROYCE(罗斯莱斯) JAGUAR(美洲豹)等都已开始采用CAN 总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。 基于 CAN 总线的数据通信与网络技术在汽车行业有良好的应用前景 汽车内部网络的构成 汽车内部网络由一系列称之为 ECU(电控单元)的不同功能部件作为网络节点而构成的。 可分为动力、照明、操作、显示、安全、娱乐等多个子系统。 Motorola
6、 公司提出的基于 CAN 的汽车内部网络的解决方案。 动力系统采用传输速率大于 250kbps 的 CAN 网段,车身电子系统采用传输速率不小于 125kbps 的低速 CAN 网段,两个子网之间通过中央模块实现互连。 汽车内部网络的解决方案 ( Motorola ) CAN 通信技术 CAN 的通信参考 模型 CAN 的通信模型的分层结构 数据链路层 包括逻辑链路控制子层 LLC LLC 的主要功能是:为数据传送和远程数据请求提供服务,确认由 LLC 子层接收的报文实际已被接收,并为恢复管理和通知超载提供信息 媒体访问控制子层 MAC) MAC 子层主要规定传输规则,即控制帧结构、执行仲裁、
7、错误检测、出错标定和故障界定 物理层 物理层规定了节点的全部电气特性 CAN 节点网络的连接 CAN 总线的显位与隐位 显位 (0) VCANH: 3.5v VCANL 1 1.5v 隐位 (1) VCANH 2.5v VCANL 2.5v CAN 的帧类型 4种不同类型的帧:数据帧、远程帧、出错帧或超载帧 数据帧携带数据由发送器至接收器 远程帧用以请求总线上的相关单元发送具有相同标识符的数据帧 出错帧由检测出总线错误的单元发送 超 载帧用于提供当前的和后续的数据帧的附加延迟 CAN 的帧结构 数据帧由 7 个不同的位场(域)组成: 帧起始( 1个显位),标志帧的起始 仲裁场、控制场、数据场、
8、 CRC 场、应答场和帧结束( 7 个隐位)。 数据场长度可为零 。 CAN 数据帧的组成 CAN2.0A 与 CAN2.0B CAN2.0A: 标识符的长度为 11 位,这些位从高位到低位的顺序发送,最低位为 ID.0,其中最高 7 位( ID.10 ID.4)不能全为隐位。 远程发送请求位( RTR)在数据帧中必须是显位,而在远程帧中必须为隐位 仲裁场由 11 位标识符和远程发送请求位 RTR 组成。 CAN 2.0B: 存在两种不同的帧格式,具有 11位标识符的标准帧, 29 位标识符的扩展帧 标准帧与 CAN2.0A 相同 扩展帧的仲裁场由 29位标识符和替代远程请求 SRR 位、标识
9、位和远程发送请求位组成,标识符位为 ID.28 至 ID.0。 CAN 数据帧的组成 远程帧 远程帧由 6 个场组成: 帧起始、仲裁场、控制场、 CRC 场、应答场和帧结束。远程帧不存在数据场。 远程帧的 RTR 位必须是隐位。 DLC 的数据值是独立的,它可以是 0 8中的任何数值,为对应数据帧的数据长度。 出错帧 出错帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是出错界定符 错误标志具有两种形式: 活动错误标志 (Active error flag),由 6 个连续的显位组成 认可错误标志 (Passive error flag),由 6 个连续的隐位组成 出错界定符
10、包括 8个隐位 超载帧 超载帧包括两个位场:超载标志和超载界定符 发送超载帧的超载条件: 要求延迟下一个数据帧或远程帧 在间歇场检测到显位 超载标志由 6个显位组成 超载界定符由 8 个隐位组成 CAN 通信控制器 CAN 通信控制器 82C200 CAN控制器主要由实现 CAN总线协议部分和与微控制器接口部分电路组成。对于不同型号的 CAN 总线通信控制器, 实现 CAN 协议的电路,其结构和功能大体相同;与微控制器接口,其结构及方式存在一些差异 CAN控制器芯片完成 CAN总线协议的物理层和数据链路层的所有功能,应用层功能由微控制器完成 芯片工作的温度范围为: 40 125,汽车及某些军用
11、领域, 40 80,一般工业领域 CAN 通信控制器 82C200 的功能框图 接口管理逻辑:接收来自微控制器的命令,控制信息缓存器,为微控制器提供中断和状态信息。 发送缓存器 :它有 10个字节存储单元组成,存储由微控制器写入,将被发送到 CAN 的报文。 接收缓存器 0和 1:接收缓存器 0 和 1 均由 10 个字节组成,交替存储由总线接收到的报文,当一个缓存器被分配给 CPU 时,位流处理器可以对另一个进行写操作。 位流处理器:控制发送缓存器和接收缓存器(并行数据)与CAN 总线(串行数据)之间数据流的序列 位定时逻辑:它将 82C200 同步于 CAN 总线上的位流。 收发逻辑:用来
12、控制输出驱动器。 错误管理逻辑:按 照 CAN 协议完成错误界定。 控制器接口逻辑:与外部微控制器的接口, 82C200 可直接与多种微控制器接口 82C200 的寄存器地址分配 1 控制段的 10 个寄存器 控制寄存器( CR) 控制寄存器的内容用于改变 82C200 的状态,使82C200 进入测试或正常工作模式,中断开放或禁止等, 控制寄存器的控制位可被微控制器置位或复位,微控制器将控制寄存器作为读写存储器。 命令寄存器( CMR):用于初始化一种作用。使 82C200 进入睡眠、唤醒状态;清除超载;释放接收缓存器;请求发送报文 状态寄存器( SR 状态寄存器的内容受总线控制器状态的影响
13、。 它表明了 82C200 的总线状态、错误状态、发送状态、接收状态、接收状态、发送完成状态、接收缓存器状态、数据超载状态等 状态寄存器对于微控制器作为只读存贮器出现 中断寄存器( IR) 可用于识别中断源,如唤醒中断、超载中断、发送中断、接收中断等 当一个或多个位被置位时, INT 引脚被激活 在该寄存器被微控制器读出后,所有位被 82C200 复位。该寄存器对于微控制器作为只读存储器出现 接收码寄存器( ACR) 它是 82C200 的接收滤波器的一部分,该寄存器可被访问。 接收码位( AC.7AC.0);报文标识符的最高 8位 (ID.10ID.3);接收屏蔽位 (AM.7 AM.0)
14、若满足下列等式,则予以接收: (ID.10 ID.3 ) = ( AC.7 AC.0 ) OR ( AM.7 AM.0 ) = 11111111B 接收屏蔽寄存器( AMR) 接收屏蔽寄存器是 82C200 的接收滤波器的一部分。该寄存器可被访问, 根据接收屏蔽寄存器认定接收哪些码 总线定时寄存器 0( BTR0) 总线定时器 0 的决定波特率预分频器( BRP)和同步跳转宽度( SJW)的数值, 若复位请求位被置为高,该寄存器可被访问 。 总线定时寄存器 1 总线定时寄存器 1 的内容为周期宽度、采样点位置和在每个采样点获取采样的数目。 若复位请求位被置为高,该寄 存器可被访问。 输出控制寄
15、存器( OCR) 在软件的控制下,输出控制寄存器可建立输出驱动器的不同配置,如正常输出、测试输出、时钟输出、双向输出;输出引脚为悬浮、上拉、下拉、推挽输出等。 若复位请求位被置为高,该寄存器可被访问。 测试寄存器 测试寄存器仅用于生产测试 发送缓存段 用于存储由微控制器送至 82C200 的被发送报文。 分为描述符和数据场。 描述符为两个字节,包括标 识符、远程发送请求位和数据长度码 标识符( ID):标识符由 11 位( ID.10ID.0)构成, ID.10为最高位。在仲裁过程、接收滤波中都要用到。标识符的二进制数值越低,其优先权越高 远程发送请求位( RTR)为高电平时,发送远程帧,否则
16、发送数据帧, 数据场:字节的数目由数据长度码决定。地址单元 12 中的数据字节 1的最高位将首先被发送 发送缓存器可由微控制器写入或读出 描述符:标识符、远程发送请求位和数据长度码 接收缓存段 接收缓 存器各字节定义与发送缓存器同,只是起始地址不同 接收缓存器:两个物理存储区对应同一地址,由内部接口管理决定访问哪一物理区域 CAN 通信控制器 功能框图 控制器由以下几部分构成 : 接口管理逻辑 IML:它接收微处理器的命令 ,控制寄存器的地址 ,并为微处理器提供中断和状态信息。 发送缓冲器 TXB: 它是和位流处理器()之间的接口 , 有字节长。能存储一条将在总线 上发送的完整报文。报文由写入
17、 , 由位流处理器读出。 接收缓冲器( ,) : 是和接收滤波器之间的接口 , 用来存储从总线收到并接收的报文。接收缓冲器 FIFO共字节长。其中有字节的窗口可供访问。在处理一个报文的同时,由这个继续接收其它正在到来的报文 CAN 通信控制器(续) 接收滤波器 ACF: 接收滤波器把收到的报文标识符和接收滤波寄存器中的内容进行比较 ,以判断该报文是否被接收。如果判断结果是肯定的 , 则报文被存入。 位流处理器 BSP: 位流处理器控制发送缓冲器和总线之间数据序列 ,同时它也执行错误检测、仲裁、位填充和总线错误处理功能。 位定时逻辑 BTL: BTL 监视总线上的串行序列,处理与 CAN总线相关
18、的位时间,按收到的报文头与总线上的位流同步。 BTL 还为补偿传输迟延时间和相位跳变提供可编程的时间段。 错误管理逻辑 EML:它按照协议完成错误界定。它接受来自 BSP 的出错通知,并向 BSP 和 IML 提供出错统计 出错 处理功能的增强 仲裁丢失捕捉寄存器():以找到丢失仲裁位的位置 出错代码捕捉寄存器():分析总线错误类型和位置 出错警告限寄存器():定义出错警告极限值 接收出错计数寄存器() 发送出错计数寄存器() 记录发送和接收时出现的错误个数等。可根据从这两个寄存器读取的错误个数来判断目前控制器的出错状态。 出错中断: 出错中断源 :总线出错中断、错误警告限中断 (可编程设置
19、)和被动出错中断。由中断允许寄存器 ( )区分出以上各中断 , 也可直接从中断寄存器 ( )中直接读取中断寄存器的状态来判断出错类型。 出错代码捕捉寄存器 ( ): 当总线发生错误时 , 产生相应的出错中断 ,同时,把对应的错误类型和产生位置写入出错代码捕捉寄存器 (相对地址为 12)。这个代码一直保存到被主控制器读取出来后 ,ECC 才重新被激活工作,捕捉下一个错误代码。 可以从 ECC 读取 的数据来分析属于何种错误以及错误产生的位置,从而为调试工作提供了方便。 SJA1000 的应用电路 加 CPU、晶振、电源、复位电路、总线收发器等,与其它测量控制电路,可构成 CAN 应用节点 SJA
20、1000 的应用电路 其它与 CAN 通信控制器相关的器件 INTEL 82527CAN 通信控制器。支持 CAN 2.0B 规范,包括标准和扩展数据帧和远程帧 带 CAN 通信控制器的 8 位微控制器 P8XC592 适用于自动和通用工业领域的高性能 8位微控制器。它是Philips 现 有微控制器 P8XC552 和 CAN 通信控制器 82C200 的功能组合 带 CAN 通信控制器的 16 位微控制器 87C196CA/CB 及 P51XA-C3 INTEL 82527CAN 通信控制器的功能框图 CAN 总线收发接口器件 82C250 82C250 是 CAN 控制器与物理总线之间的
21、接口,器件可以提供对总线的差动发送和接收功能。 82C250 的主要特性如下: 与 ISO/DIS 11898 标准全兼容 高速性(最高可达 1Mbps) 具有抗汽车环境下 的瞬间干扰,保护总线能力 降低射频干扰的斜率控制 热保护 总线与电源及地之间的短路保护 低电流待机方式 掉电自动关闭输出 可支持多达 110 个节点相连接 CAN 总线收发器 82C250 的功能框图 对于 CAN 控制器及带有 CAN 总线接口的器件, 82C250 并不是必须使用的器件,因为多数 CAN 控制器均具有配置灵活的收发接口并允许总线故障,只是驱动能力一般只允许 20 30 个节点连接在一条总线上。 而 82
22、C250 支持多达 110 个节点,并能以 1Mbps 的速率工作于恶劣电气环境 I/O 功能 16条可配置的数字及模拟 I/O 口线 每条 I/O 口线均可通过 CAN 总线单独配置,包括 I/O 方向,口模式和输入跳变的检测功能 在用作数字输入时,可设置为由输入端变化引起 CAN 报文自动发送 两个分辨率为 10 位的准模拟量(分配脉冲调制 PDM)输出 具有 6路模拟输入通道的 10 位 A/D 转换器 两个通用比较器 CAN 总线 I/O 器件 82C150 82C150 是一种具有 CAN 总线接口的模拟和数字 I/O 器件,可用于传感器、执行器接口。主要功能包括: CAN 接口功能
23、和 I/O 功能 CAN 接口功能 符合具有严格的位定时的 CAN 技术规范 2.0A 和 2.0B 全集成内部时钟振荡器(不需要晶振),位速率为20K125Kbit/s 具有位速率自动检测和校正功能 由 4 个可编程标识符位,在一个 CAN 总线系统上最多可连接16个 82C150 支持总线故障自动恢复 具有通过 CAN 总线唤醒功能的睡眠方式 带有 CAN 总线差分输入比较器和输出驱动器 CAN 总线 I/O 器件 82C150 的应用 汽车内部网络 SAE J1939 CAN 规范只包括了物理层和数据链路层,是一个可以封装在通信控制器集成电路芯片内部的规范。 SAE J1939 以 CA
24、N 为基础,其物理层和数据链路层基本上沿用了 CAN 规范,并增加了网络层、应用层和网络管理规范。 SAE J1939 目前已经发布 的规范如下: J1939/01 卡车、公共汽车控制与通信网络 J1939/12 物理层, 250Kbps, 四线双绞线 J1939/13 物理层,诊断连接器 J1939/31 网络层 J1939/71 车辆应用层 J1939/72 虚拟终端应用层 J1939/73 应用层 -诊断 J1939/81 J1939 网络管理协议 通信参考模型比较 J1939 的物理连接与网络拓扑 总线由 CAN-H、 CAN-L、 CAN-SHLD 导线组成; CAN-H 为黄色、C
25、AN-L为绿色。 网段由屏蔽双绞线对组成,允许用分枝短线将每个 ECU 连接到总线上,不要求每个 ECU 直接接近总线。 网段上的 ECU 数量 SAE J1939 汽车内部网络是将许多电控单元 ECU 连接成的网络的物理实现。 ECU 的数量受到总线上负荷的限制。根据现有规范对电气参数的规定,在一个给定的网段上, ECU 的最大数量被限制为 30 网段以 250 Kbps 的数据传输速 率运行, 为防止信号反射,使网段运行对电子信号的影响最小,在总线的每个终端都应连接终端电阻 每个部件均有终端电阻( 120 ),终端电阻采用支架安装,以便调整。同时,终端电阻同网络线之间通过跳线相连 ,以便灵
26、活搭配。 J1939 网络可以由一个或多个网段组成,网段间由网络互连ECU(如网桥 )连接。 J1939 报文帧的格式与定义 J1939 为采用 CAN 2.0B 扩展帧格式。 J1939 29位 ID 的位定义图 SAE J1993 进一步定义了 CAN 数据帧仲裁域的标识位 SAE J1993 报文帧包含一个单一的协议数据单元 PDU PDU 包括 7个预定的域 优先级、保留位、数据页、 PDU 格式、 PDU 细节(可以是目标地址、组扩展或专有)、源地址和数据域。 CAN 数据帧中的 SOF、 SRR、 IDE、 RTR、部分控制域、 CRC、 ACK和 EOF 没有包括在 PDU 内。
27、因为这些部分完全由 CAN 规范控制,未被 SAE J1939修改 J1939 中 29 位 ID的位定义图 优先级( P)。 这三位用于总线仲裁时优选发送到总线上的报文。它们被接收器完全屏蔽。报文的优先级设置从最高的 0( 0002)到最低的 7( 1112)。 所有面向控制的报文其缺省优先级为 3( 011)。其它报文、专有报文、请求以及 AKC 报文的缺省优先级为 6( 110)。随着参数组号 PGN 的分配情况和总线通信的变化,允许提高或降低优先级。 保留位( R)。该保留位供 SAE 将来使用。不能与 CAN 的保留位混淆。传输时所有的报文应该将 SAE 保留位设为 0。 数据页(
28、DP)。数据页位选择了参数组描述的一个辅助页。在第 0页上可获得的所有参数组号的分配完成后,再作对第 1页的分配。 PDU 格式( PF)。 PDU 格式域是一个 8位域。 J1939 规定了PDU1 和 PDU2 两种格式。 其值低于 240 为 PDU1 格式,其值为 240255 为 PDU2 格式。 PDU1 格式允许将参数组发送给一个指定目标或全局目标。 不能选用 PDU2 格式将 PGN 传送给特定目标。 PDU 细节( PS) -这也是一个 8位的域,它的定义取决于 PDU格式( PF)域的内容。当 PDU 格式( PF)域的值低于 240,则 PDU 细节域表示的是一个目的地址
29、;当 PF 域的值是 240 255 时,则 PDU 细节域表示的是一个组扩展( GE)值 源地址 SA域,共 8 位。网络中仅容许一个设备对应给定的源地址 ,应防止地址重复 数据域为 0 8字节的数据。当某参数组的数据字节等于或小于 8时,数据域的所有 8 个字节都可用。推荐使所有参数组号都保留 8个数据字节 当需要 9 1785 个字节来表达某个参数组时,数据通信将由 多个 CAN 数据帧完成。 在某一时刻需要传输的数据字节数小于 9 时,将在一个单一的将 DLC 设定为 8 的 CAN 数据帧中被发送。 当某一参数组有 9个或多于 9 个数据字节要传输时,则使用 “传输协议功能 “,以启
30、动和关闭多包参数组的通信 J1939 允许在同一网络中使用 11 位 ID的设备 ECU 的设计说明 J1939 规范将工作在网络上的 ECU 分为标准 ECU、网络互连ECU、诊断 /开发工具几种类型。 标准 ECU指用于发动机变速器 ABS系统 虚拟终端仪表盘等的电控单元。标准 ECU 不具备修改其他 ECU 源地址的能力 网络互联 ECU-网络互联 ECU用于网段互连 .它们主要由中继器网桥路由器网关组成 诊断 /开发工具用于分析调试开发、监视在网段上的ECU。 ECU 的名称 SAE J1939 规定,每个 ECU 将至少有一个名称和一个与之关联的地址。 一个电控单元 ECU 中可能有多个名称与多个地址共存。容许多个作相同工作的 ECU 在同一网络上共存,但要为每个 ECU 命名独特的名称。 名称可以用 ECU 的功能来表示 ,例如 ,1#发动机号 2#发动机号 1#变速器 ABS 系统等。通过名称指明在网络上可以找到的任何功能 ECU 的首选地址 为了方便于网络初始化过程,通常使用的设备都有一个由委员会指派的首选地址。采用首选地址可以避免多个设备企图在网络上宣称相同的地址 运用一个在上电之后分配地址的专门程序来解决可能发生的冲突。 每个 ECU 都必须有能力宣布它想要采用的地址,这是地址宣称