接口/总线/驱动
文章内容:
什么是CAN总线
CAN总线的工作原理
CAN总线帧组成
CAN总线结构
CAN总线协议结构
CAN总线解析的实测案例
什么是CAN总线
控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。
汽车CAN总线由CAN控制器、CAN收发器、数据传输线、数据传输终端等组成。CB311的ECU(发动机控制单元)、TCU(变速器控制单元)、FEPS(无钥匙进入和无钥匙启动系统)、组合仪表四个电控单元通过CAN总线连接,CAN控制器、CAN收发器均集成在电控单元中。CAN总线的结构如图1所示。
图1 CAN总线的总体结构
CAN协议的特性包括完整性的串行数据通讯、提供实时支持、传输速率高达1Mb/s、同时具有11位的寻址以及检错能力。
CAN总线的工作原理
CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且在这种总线上总线协议支持多主控制器。
CAN与I2C总线的许多细节很类似,但也有一些明显的区别。当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。
当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。
CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的部分有物理目的地址。它允许分布过程同步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。
现代汽车的电控单元主要有主控制器、发动机控制系统、悬架控制系统、制动防抱死控制系统(ABS牵引力控制系统、ASR控制系统、仪表管理系统、故障诊断系统、中央门锁系统、座椅调节系统等)。
所有这些子控制系统连接起来构成1个实时控制系统,即:指令发出去之后,必须保证在一定时间内得到响应,否则,就有可能发生重大事故。这就要求汽车上的cAN通信网络有较高的波特率设置。另外,汽车在实际运行过程中,众多节点之间需要进行大量的实时数据交换。若整个汽车的所有节点都挂在1个CAN网络上,众多节点cAN总线进行通信,信息管理配置稍有不当,就很容易出现总线负荷过大,导致系统实时响应速度下降。
这在实时系统中是不允许的,因此在对汽车上各节点的实性进行了分析之后,根据各节点对实时性的要求,设计了高、中、低速3个速率不同的CAN通信网络,将实时性要求严格的节点组成高速CAN通信网络,将其它实时性要求相对较低的节点组成中速CAN通信网络,将剩下实时性要求不是很严格的节点组成低速CAN通信网络。并架设网关将这3个速率不同的3个通信网络连接起来,实现全部节点之间的数据共享。
CAN总线帧组成
CAN总线信号就是CAN总线中传输的帧,CAN总线中的帧类型分为5种,分别是数据帧、远程帧、错误帧、过载帧、帧间隔。
1.数据帧:用于发送节点向接收节点传送数据的帧。
2.远程帧:用于接收节点向具有相同ID的发送节点传送数据的帧。
3.错误帧:用于当检测出错误时向其他节点通知错误的帧。
4.过载帧:用于接收节点通知其尚未做好准备的帧。
5.帧间隔:用于将数据帧及远程帧与前面的帧分隔开来。
标准帧和扩展帧:
数据帧和远程帧都可以使用标准帧格式或者扩展帧格式
RTR:远程发送请求位,数据帧为显性,远程帧为隐性。
SRR:代替远程请求位(在扩展格式中在RTR位置,所以得此名),该位为隐性位。在这个地方占个位以保持标准帧和扩展帧IDE对齐,便可以判断标准帧优先于扩展帧。
IDE:标识符扩展位,标准帧为显性,扩展帧为隐性。
R0、R1:保留位。
DLC:数据长度位。
CRC:校验位。
CRC分隔符:隐性位
ACK:应答位和应答界定位。在应答域中,发送器发出两个隐性位。接收器接收到报文后,在应答位期间,用显性位填充应答位作为回应,应答界定则为保持隐性。
帧结束:由7个隐性位组成。
数据帧:
SOF帧起始:数据帧开始的段。
仲裁场:该帧优先级的段。
控制场:数据的字节数以及保留位。
数据场:数据内容。
CRC场:校验数据。
应答场:确认正常接收的段。
帧结尾:数据帧结束的段。
远程帧:
通过发送远程帧,作为数据接收器的节点可以发起各自数据源的数据传送请求,即向数据发送器请求发送具有相同ID的数据帧。远程帧没有数据段。
错误帧:
错误类型:应答错误,填充错误,CRC错误,格式错误
错误帧由错误标志的叠加和结束符组成。错误标志有主动(积极)错误标志和被动(消极)错误标志。主动(积极)错误标志为6个显性位,被动(消极)错误标志为6个隐性位。
错误积极节点:如果检测到一个错误条件,就会发送积极错误标志。这将引起其它节点检测到填充错误,并开始发送错误标志。因此错误标志叠加在6~12位之间。节点发送完错误标志之后就发送一个隐性位,并监控总线,直到总线上出现一个隐性位,然后再发送7个隐性位。这样一个错误帧就发送完毕了。
消极错误节点:如果检测到一个错误条件,会试图发送一个消极错误标志进行指示。这个消极错误节点会一直等待6个具有相同极性的连续位,等待从消极错误标志起始开始,当检测到6个相同极性的连续位时,消极错误标志发送完成。
过载帧:
过载条件:接收器要求延迟下一次数据帧或远程帧的到达;在帧间隔间歇场的第一位和第二位检测到显性位;如果CAN节点在错误界定符或过载界定符的第8位采样到一个显性位,则节点会发送一个过载帧,错误计数器不会增加。
帧间空间:
数据帧和远程帧的前面必然有帧间空间。对于主动错误节点和被动错误节点,帧间空间的结构稍有不同。对于主动错误节点,帧空间由3个显性位的间歇字段和总线空闲组成。在间歇字段不允许发送数据帧和远程帧。总线空闲的长度任意,当有显性位时就被认为是帧起始。被动错误标志除了上边两部分外,在间歇字段后还有8个显性位的挂起传输。在挂起传输阶段被动错误节点不可以发送数据帧与远程帧。
CAN总线结构
下图中,左边是高速CAN总线的拓扑结构,右边是低速CAN总线的拓扑结构。
如图中所示,CAN总线包括CAN_H 和 CAN_L 两根线。节点通过CAN控制器和CAN收发器连接到CAN总线上。
CAN总线协议结构
CAN标准分为底层标准(物理层和数据链路层)和上层标准(应用层)两大类。CAN底层标准主要是ISO 11898系列的国际标准,也就是说不同厂商在CAN总线的物理层和数据链路层定义基本相同;而上层标准,不同应用领域或制造商会有不同的做法,所以在这一块没有统一的国际标准。
根据OSI参照机型,定义数据链路层与物理层。
OSI规格化以外,SAE J2284, J2411等规格也有类似分层。
CAN总线解析的实测案例
汽车控制系统测试案例
ECU(Electronic Control Unit)电子控制单元,又称“行车电脑”、“车载电脑”等。从用途上讲则是汽车专用微机控制器。它和普通的电脑一样,由微处理器(MCU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整流、驱动等大规模集成电路组成。用一句简单的话来形容“ECU就是汽车的大脑”。为保证车辆运行通畅,在汽车的开发与检测中,一般需要进行以下项目的测试:
• 多路ECU控制信号的时序关系• 多路转速、喷油脉冲、曲轴转角等传感器信号• 进行CAN总线的解码分析
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !