客车网络控制中CAN/CAN网桥设计
扫描二维码
随时随地手机看文章
1 引言
控制器局部网CAN[1][2](Controller Area Network)是德国Robert Bosch公司在20世纪80年代初为汽车业开发的一种车载专用串行数据通信总线,经过多年的发展,现在越来越多的被众多汽车厂商所认可,并在包括BMW、Benz、VOLVO等汽车上使用。 CAN由于其独特的特性,不仅在汽车领域,而且在工业控制领域也得到了广泛的运用,如工业现场控制、小区安防、环境监控等。由于在具体工程运用中,往往需要连接两路CAN子网,因此CAN/CAN网桥是必不可少的,是组网的关键设备之一。本文在将客车网络控制系统划分为底盘和车身的两个网络控制子系统的基础上,利用Philips公司的LPC2119微控制器,从硬件和软件上设计了一个CAN/CAN网桥。
2 客车网络控制中的CAN/CAN网桥
由于目前汽车电子应用的日益广泛,CAN在轿车上应用日益广泛,但是在国内的应用还不是很多,只有在某些高档豪华的车型上才会采用,CAN在国内客车上的应用也仅限于由国外公司帮助实施单总线局部联网。汽车电子技术的网络化是我国汽车电子研究与应用的必然趋势,CAN作为标准车载网络技术,其在汽车网络化应用的进程中将起着桥梁和纽带的作用。由于客车中底盘部分涉及到整车行使的安全性,实时性要求和通信的信息量都明显高于车身部分,因此本文在将客车网络控制系统划分为两个子系统(底盘CAN和车身CAN)的基础上,设计了连接两路CAN的网桥。整个系统框架如图1所示。
该网桥具有实现不同速率的CAN网段连接、不同网段的CAN报文过滤和转发的功能。
使用CAN/CAN网桥的优点[1]主要表现在以下几方面:
(1) 过滤通信量。网桥接收一个子网的报文,只有当报文是发送给网桥所连的另一个子网时才转发,否则不转发;
(2) 扩大了通信距离;
(3) 提高了通信的最大节点数;
(4) 各网段可使用不同的通信速率;
(5) 提高了系统可靠性。当网络出现故障时,一般只影响个别网段;
(6) 整个网络性能得到改善。
当然,使用网桥也有一定的缺点,如:
(1) 由于网桥对接收的帧要先存储后转发,增加了延时;
(2) CAN总线的MAC子层并没有流量控制功能。当网络上的负荷很重时,可能因网桥中缓冲区的存储空间不够而发生溢出,产生帧丢失的现象;
(3) 网桥若出现故障,对相邻两个子网的工作都将产生影响。
3 CAN/CAN网桥的硬件设计
3.1 LPC2119
CAN/CAN网桥是以ARM微控制器LPC2119[3][5]为核心的软硬件系统。LPC2119是Philips公司生产的一款基于支持实时仿真和跟踪的16/32位ARM7 TDMI-S MCU,带有128KB嵌入的高速Flash存储器。独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。LPC2119内部集成2个CAN控制器,为设计CAN/CAN网桥提供了可能。它的主要特性有:单个总线上的数据传输速率高达1Mb/s;32位寄存器和RAM访问;兼容CAN2.0B;全局验收滤波器可以识别所有的11位和29位Rx标识符;验收滤波器为选择的标准标识符提供Full CAN style自动接收。
LPC2119内部集成的CAN控制器与Philips公司的SJA1000 CAN控制器相比较大致相同,只是在验收滤波这一环略有不同,这为习惯SJA1000的开发人员采用LPC2119提供了方便。在传统的SJA1000中,接收过滤只能满足一些规律性较高的ID筛选过滤,或个数较少的ID(一般小于10~15个)进行任意筛选过滤,难以实现更复杂的任意ID进行筛选过滤,这无疑增加了系统软件设计及运行时负担。LPC2000系列32位ARM微控制器中为所有CAN控制器提供了全局的接收标识符查询功能。它包含一个512×32(2k字节)的RAM,通过软件处理,可在RAM中存放1~5个标识符表格。整个AF RAM可容纳1024个标准标识符或512个扩展标识符,或两种类型混合的标识符。由于允许的表格范围有2k字节,所以能容易地满足设计复杂的ID接收过滤要求。
全局接收过滤的工作流程:当CAN控制器的接收端已接收到一个完整的标识符,它将通知接收过滤器。接收过滤器响应这个信号,并读出控制器编号、标识符尺寸(11bit或29bit),然后,接收过滤器搜索AF RAM中的表格进行匹配,以决定接收或放弃这一帧信息。
3.2 基于LPC2119的CAN/CAN网桥的结构设计
CAN/CAN网桥的硬件框图如图2所示。LPC2119分别通过光电耦合电路和高速CAN总线收发器TJA1050与两路总线相连。两路CAN的连接方式基本相同。CAN总线驱动器都采用带隔离的DC/DC模块单独供电。这样,不仅实现了两路CAN接口之间的电气隔离,也实现了网桥与CAN总线的隔离。虽然这在一定程度上增加了网桥硬件的复杂性和成本,但却是值得的。采取隔离措施可使故障局限在某一网段内,而不至于影响其它网段,既便于维护,又保证了系统设备的安全。采用光电耦合电路将CAN收发电路与LPC2119从物理上相隔离,避免了电气上影响LPC2119的工作。
CAN/CAN网桥除了以上主要部分以外还加了LED指示、看门狗电路和复位电路。几个LED主要指示两路CAN的工作状况以及出错报警。LPC2119内置了看门狗电路,当由于程序跑飞或者其他原因导致系统工作不正常时将自动复位。复位电路采用MAX708SD来产生稳定的复位信号。[!--empirenews.page--]
3.3 CAN/CAN网桥的软件设计
CAN/CAN网桥的主要功能是实现两路CAN之间的数据过滤及转发,由于客车网络控制系统中对通讯的实时性的要求,在进行软件设计时要做到数据存储和转发的时间要求尽可能的短。为了达到这一要求,数据的接收采用向量中断(IRQ)方式,而且由于底盘CAN控制子系统的数据通讯量明显要高于车身CAN控制子系统,因此将连接底盘CAN控制子系统的CAN1接收优先级设置为最高,而连接车身CAN控制子系统的CAN2接收优先级次之。同时尽量精简中断服务程序,使系统的响应时间尽量的短。对应两路CAN设置了两个FIFO的环形接收缓冲区,由于CAN1的数据通讯量要高,因此CAN1的FIFO环形接收缓冲区比CAN2的大,这样更适合实际情况。
CAN/CAN网桥的软件设计主要包括:两路CAN控制器的初始化,FIFO环形接收缓冲区的设置,两路CAN控制器的全局验收过滤器的设置,接收中断服务程序,CAN发送程序,主监控程序。
CAN控制器的初始化流程如图3所示。其中全局验收过滤器的配置是一个难点,也是区别于SJA1000独立CAN控制器的一个地方。有5个地址寄存器用来指向验收过滤器RAM中的表格:fullCAN标准地址、标准单个地址、标准地址范围、扩展单个地址和扩展地址范围。这些表格在存储器中必须是连续的。后4个表格的起始地址分别是各自相邻的前一个表格的终止地址。扩展地址范围表格的终止地址在表格终止寄存器中给出。如果一个表格的起始地址等于下一个表格的起始地址或表格终止寄存器的值,则该表格为空。
FIFO环形接收缓冲区中设置一个发送指针、一个接收指针和当前数据帧数frameCount,当frameCount为0时表明FIFO环形接收缓冲区是空的。
接收中断服务程序将接收到的数据放入对应的FIFO环形接收缓冲区中并且修改接收指针和当前数据帧数frameCount。
主监控程序负责监控两路CAN的FIFO环形接收缓冲区中是否有数据,如果其中一路CAN的FIFO环形接收缓冲区中有数据则向另一路CAN发送数据。主监控程序不断查询两路CAN的FIFO环形接收缓冲区中的当前数据帧数frameCount标志,如果非零立即向另一路发送数据,并且在子程序CAN1SendToCAN2()和CAN2SendToCAN1()中修改发送指针和当前数据帧数。主监控程序流程如图4所示。
4 总结
本文在LPC2119的基础上设计了一个CAN/CAN网桥,并从硬件和软件的角度论述了设计过程。作者采用广州周立功单片机发展有限公司的CANalyst-II和USBCAN-II分别模拟客车底盘CAN和车身CAN对网桥进行了大量数据的反复测试,在向两路CAN连续不间断发送100000帧数据的情况下能够准确的转发,说明网桥工作可靠。下一步的研究目标将在网桥上移植实时多任务操作系统μC/OS-II来进一步提高网桥的实时性能。
本文作者创新点: 将客车网络控制系统划分为底盘和车身的两个网络控制子系统,并且设计了CAN/CAN网桥互连两个网络控制子系统。