CAN总线技术及其在汽车仪表中的应用
扫描二维码
随时随地手机看文章
0 引言
控制局域网CAN (controllerareanetwork)是国际上应用最广泛的现场总线之一,是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种通讯协议,它作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入CAN控制装置。CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN仍可提供高达50 kbit/s的数据传输速率。它是一种有效支持分布式控制或实时控制的串行通讯网络。CAN的应用范围遍及从高速网络到低成本的多线路网络。在自动化电子领域的汽车发动机控制部件、传感器、抗滑系统等应用中,CAN的位速率可高达1 Mbps。CAN网络具有反映快,可靠度高的特性,应用于要求实时处理的场合,例如汽车刹车防锁死系统安全气囊等。今天此项通信协议已得到广泛应用,成为现代汽车设计中必须采用的装置,奔驰、宝马、大众、沃尔沃及雷诺汽车都将CAN作为控制器联网的手段。
1 CAN总线的特点及通讯协议
1.1 CAN总线的特点
CAN总线是一种有效支持分布式控制或实时控制的串行通信网络。其通讯介质可以是双绞线、同轴电缆或光纤。在汽车发动机控制部件、传感器等应用中,总线的位速率最大可达1Mbit/s。CAN总线具有以下主要特性:
a. 无破坏性的基于优先权竞争的总线仲裁
b. 可借助接收滤波的多地址帧传送
c. 具有错误检测与出错帧自动重发功能
d. 数据传送方式可分为数据广播式和远程数据请求式
1.2 CAN总线帧格式[1]
CAN总线通信协议包括CAN2.0A和CAN2.0B两种,它们的帧格式如下:
(1)CAN2.0A通信协议规定了4种不同的帧格式:
数据帧 用于节点间传递数据,是网络信息的主体,其帧格式依次包括: 帧起始、仲裁场、控制场、数据场、CRC场、ACK场和帧结束。其中数据段长度可编程0~8个字节。
远程帧 由在线单元发送,用于请求发送具有相同标识符的数据帧,其帧格式与数据帧基本相同,但没有数据场。]
出错帧 出错帧是检测总线出错的一个信号标志,由两个不同的场构成。第一个场由来自不同节点的错误标志叠加,第二个场为错误界定符。CAN协议采用CRC检验并可提供相应的错误处理功能,保证数据通讯的可靠性。
超载帧 由超载标识和超载界定符组成,表明逻辑链路控制层要求的内部超载状态,并将由媒体访问控制层的一些出错条件而被启动发送。用于扩展帧序列的延迟时间。
(2)CAN2.0B通信协议分为两种帧格式:
① 标准帧
标准帧信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。
<1>字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR) 表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。
<2>字节2、3为报文识别码,11位有效。
<3>字节4~11为数据帧的实际数据,远程帧时无效。
② 扩展帧
<1>扩展帧信息为13个字节,包括两部分,信息和数据部分。前5个字节为信息部分。字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF = 1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。
<2>字节2~5为报文识别码,其高29位有效。
<3>字节6~13为数据帧的实际数据,远程帧时无效。
2 系统总体方案设计
该系统以摩托罗拉16位单片机MC9S12DP256为中央控制器,并含有CAN通信模块、LIN通信模块、数据采集模块及数据存储模块等。发动机及底盘部分通过CAN总线与中央控制器相连,仪表板部分及车身模块通过LIN总线与中央控制器相连,本文重点介绍的是CAN通信模块的设计。
2.1 CAN通信模块硬件设计
中央控制器MC9S12DP256内部带有5路CAN控制器,msCAN是Motorola Scaleable CAN的缩写,而msCAN12模块则是在MC9S12系列MCU上的具体实现。它服从CAN2.0A/B 协议,集成了除收发器外CAN总线控制器的所有功能。
msCAN12基本特点如下[2]:
(1) 模块化结构
(2) 实现了CAN2.0A/B协议,支持标准和扩展帧格式
(3) 支持远程请求帧
(4) 双缓冲接收存储方案
(5) 带有本地优先级排队机制的三缓冲区发送存储方案
(6) 可屏蔽、可重组标识符验收过滤器
(7) 内置低通滤波器的可编程唤醒功能
(8) 可编程环路检测模式支持模块自检
(9) 时钟源可程控选择CPU总线时钟或晶体振荡器时钟
采用msCAN12的CAN总线系统如图1所示:
图1 含有MC9S12及其他节点的典型CAN总线网络系统
CAN收发器采用摩托罗拉的CAN通信物理接口芯片MC33388,它的主要特点是:
● 静态电流低至15uA;
● 波特率范围为10~125 kbps;
● 发生总线错误时可自动调整至单线模式,错误消失后可自动恢复正常状态;
● 支持单总线传输模式;
● 总线对地、电源具有短路保护功能;
● 具有总线驱动器过热保护功能;
● 支持无遮蔽双绞线传输;
● 无功节点不影响总线状态;
● 工作温度范围为-40℃~125℃。
MC33388与MCU应用电路如图2所示:
图2 MC33388与MCU应用电路
2.2 CAN数据通信接口模块软件设计
通信接口模块程序主要包括三部分:初始化子程序、发送子程序和接收子程序。初始化程序主要是通过CAN控制器控制段中的寄存器写入控制字,从而确定CAN控制器的工作方式等。有三种方式进入初始化程序:一是上电复位,二是硬件复位;三是软件复位,即在运行期间通过给CAN控制器发一个复位请求,置复位请求位为1。在复位期间必须初始化的寄存器有控制寄存器CTL、发送控制寄存器TCR、接收中断允许寄存器RIER、总线定时寄存器BTR、验收控制寄存器IDAC、验收寄存器IDAR、验收屏蔽寄存器DMR等。
主节点CAN数据接收采用中断方式,MCU内部的CAN控制器具有双缓冲接收结构,对总线数据具有一定的缓存能力,通常系统采用主程序查询方式对接收数据进行处理,并用广播方式发送,对特殊数据采用远程帧申请方式,这样更有利于程序对多个任务的结构化管理,其程序流程图如图3所示。
CAN总线以报文为单位进行数据传输,节点对总线的访问采取位仲裁方式。报文起始发送节点标识符可分为功能标识符和地址标识符。CAN协议的最大特点是打破了传统的节点地址编码方式,而扩展了对通讯数据进行编码的方式。采用这种方式可使不同的节点同时接收到相同的数据。总线采用CAN2.0B协议,数据标识符用29位二进制表示,即可定义229个不同的数据类型,即使对未来更复杂的汽车控制网络其容量也足够了。标识符的值越小,帧数据的优先级越高。通过数据链路控制,每个接收器完成帧接收滤波确定此帧数据是否有效。CAN控制器监听总线电平决定发送接收是否有效,实际汽车应用中一般采用不冗余的通讯线路,而CAN协议提供强大的出错诊断机制,在保证数据通讯的可靠性方面起了重要作用。
图3 CAN通信程序流程图
3 结束语
CAN总线技术,是工业控制与计算机网络两者边缘的产物。无论是从网络的结构、协议、实时性、还是适应性、灵活性、可靠性乃至成本等,工业控制的底层都有它的特殊性,特别是汽车工业中,要传输的信息帧都短小,要求实时性很强、可靠性高,CAN总线协议作为一种简单而可靠的通讯协议,在车用电控单元和仪表上有很好的应用前景。本文介绍的CAN接口电路与通讯软件结构对其他微处理器系统来说,加以适当的修改也是适用的。由于在实际的车用电气环境中,需要考虑温度、电磁干扰、电源等因素,设计时应考虑软、硬件的抗干扰能力。