基于CAN/LIN总线的汽车混合网关设计

发布者:ching80790最新更新时间:2011-10-20 关键字:CAN  LIN总线  汽车混合网关 手机看文章 扫描二维码
随时随地手机看文章
     引 言

     随着汽车电子的发展,传统的点对点的通信已经不能满足现代汽车通信的要求。汽车电子网络技术正成为实现汽车控制系统的首选,它使汽车电子技术进入一个全新的时代。

  20世纪 90年代,美国汽车工程师协会SAE(Society of AutomoTIve Engineers)将汽车数据传输网分成了A、B、C三类:A类网络主要面向传感器/执行器的低速网络,数据传输位速率一般小于10 kb/s,目前A类网的首选标准为LIN(LocalInterconnect Network)协议;B类网络主要面向独立模块间数据共享的中速网络,数据传输位速率在10~125 kb/s,目前B类网络主要采用低速容错CAN标准ISO11898-3;C类网络则主要面向高速、实时闭环控制的多路传输网,数据传输位速率在 125~1 Mb/s之间,欧洲的汽车制造商主要采用高速CAN标准ISO11898-2来实现该类网络。下面简要介绍一下CAN协议和LIN协议。

  1986 年2月,德国的Bosch公司在SAE大会上提出了CAN串行总线。时至今日,CAN已经形成国际标准,凭借自身的优点,不仅在汽车领域,而且在机械、数控机床及传感器等领域都得到广泛应用。CAN总线的主要特点有:多主机的工作方式;最大传输速率可达1 Mb/s(通信距离最长40 m),直接通信距离可达10 km(速率小于5 kb/s);采用短帧结构,传输时间短;良好的检错能力;非破坏总线仲裁技术;较高的性价比。

  LIN 是1998年由BMW等五家汽车制造商、一家软件工具制造商以及一家半导体厂商联合提出的一个协议。LIN通信是基于SCI(UART)数据格式,采用单主/多从模式以及低成本的单线连接方式,最高传输速率可达20kb/s。LIN的从节点不用晶振或陶瓷振荡器就能实现自同步。出于以上技术特点, LIN总线实现成本较低,且完全能够满足A类网络的通信需求。

  在实际的汽车电子网络中,A、B、C三类网络并不是完全独立的。为了完成车辆的控制及信息共享,不同网络间必须进行相应的数据交换。由于是三种不同的网络,它们之间的通信是不能直接进行的,而必须作相应的协议转换及数据处理后才能实现,这些工作是由网关来实现的。本文提出了一种网关的设计方案,用以实现高速CAN、低速CAN及LIN三种总线网络之间的通信。

  1 网关总体结构

  本文所讨论的网关其主要任务是解决车载网络中A、B、C三类网络的相互通信的问题,实现数据的存储转发及高、低速CAN协议之间或低速CAN与LIN协议之间的协议转换,以便在不同网络之间实现数据通信。网关主要分为4个部分:实现数据存储转发和协议转换的主控制器,用于与高速CAN网络连接的高速CAN 节点模块,与低速CAN网络连接的低速CAN节点模块以及与LIN网络连接的LIN节点模块。网关系统的电路框图如图1所示。


  网关中三个节点电路分别与各自的网络相连,且实现各自对应的网络与主控制器之间的数据交换。这个数据交换过程是双向的,既包括从网络上接收数据并将数据存到主控制器中,又包括从主控制器相应的缓存器中读取数据并将其发送到自己对应的网络中。主控制器主要负责数据的存储及协议的转换,即将各个节点接收来的数据根据其目的网络的不同,分别存入不同的缓冲区,并且根据目的网络的不同,将数据转化为能够在目的网络上传送的数据格式。

  2 网关电路设计

  如上所述,网关的硬件电路主要由主控制器、高速CAN节点模块、低速CAN节点模块、LIN节点模块4部分组成。为了满足网关的正常通信要求,必须考虑主控制器的数据处理能力。另外,由于网关的工作环境为电磁干扰非常严重的汽车内部,故还须考虑网关的抗噪声干扰性能。网关的硬件设计简图如图2所示,


  AT91SAM7A3为网关的主控制芯片,TJA1020为LIN总线收发器,CTM1054为低速CAN收发器,CTM1050为高速CAN收发器。

  2.1 主控制器的选择

  实现数据的高效率、高质量的存储转发是网关的重要目标,而主控制器是网关的核心器件,它的性能好坏直接决定了网关的效率高低。主控器对接收到的数据进行缓存,因此主控制器需要有较高的存储容量。主控器还要对它所接收与转发的数据进行协议转换等数据处理,因此还要有较强的运算能力。

  本设计选用了Atml公司的AT91SAM7A3作为网关的核心控制器。这是一颗基于ARM7TDMI内核的32位RISC处理器,具有执行速度快、效率高的特点,能够满足网关的数据处理要求。该芯片内置32 KB的SRAM和256 KB的高速Flash存储器,存储能力强,能够满足网关对数据存储的要求。另外,该芯片内部集成有2个功能强大的CAN2.OB的控制器,可以处理所有类型的帧结构(数据帧、远程帧、错误帧及过载帧),每个控制器有16个独立的缓存区(mailbox),十分有利于实现网关高速、大容量的数据处理。集成的 CAN控制器还能够减少器件数目和PCB布线数量,有利于提高系统的抗干扰性能。

  2. 2 CAN节点设计

  常用的 CAN节点电路如图3所示,它主要由MCU、CAN控制器及CAN收发器组成。为了增强电路的抗干扰性,还需要在控制器与收发器之间增加一个隔离电路。


  本网关中的CAN节点共有2个:高速CAN节点和低速CAN 节点。由于在汽车中电磁干扰现象非常严重,仅靠单个的CAN收发器难以满足通信品质的要求,需要加上适当的隔离电路以提高电路的抗干扰性。

  2 个节点的MCU的功能由主控制芯片AT91SAM7A3实现,且AT91SAM7A3中集成了两个高性能的CAN控制器,可以分别作为高低速CAN节点的控制器。

  常用的隔离电路采用高速光耦6N137实现CAN节点之间的信号隔离,并且采用电源隔离模块实现高速光耦的两个电源的隔离。但是这种设计无疑增加了PCB的走线,使电路的没计变得复杂,同时隔离电路的隔离效果也受到影响。

  本设计采用广州致远电子有限公司生产的 CTM系列的CTM1050和CTM1054,分别作为高低速CAN收发器。CTM系列的CAN收发器集成了CAN 收发器以及必需的隔离,即在一块芯片上实现了隔离电路和CAN收发器的功能。这样就不必单独设计隔离电路,提高了集成度,使得抗干扰性得到增强。

  高速CAN收发器CTM1050,最高速率可达1 Mb/s,完全符合ISO11898-2标准的高速CAN通信,用它作为高速CAN网络接口的收发器(电路连接方法见图2)。容错CAN收发器 CTM1054,最高通信速率可达125 kb/s,完全符合ISO11898-3标准,用它作为低速CAN网络接口的收发器(电路连接方法见图2)。需要注意的是,在CTM1054的连接中,有 2个电阻R1和R2的阻值要根据低速CAN网络中节点的个数来确定。具体值的算法见CTM1054使用手册。

  2.3 LIN接口设计

  LIN 总线是一主多从的总线连接方式,节点有主从之分。在本设计中,将LIN节点设计为主节点。LIN是一个基于单线串行的通信协议,对于硬件的要求比较简单。通常一个有SCI/UART接口的单片机和一个LIN收发器就可组成LIN节点。本设计利用AT91SAM7A3的UART口和LIN收发器 TJA1020组成一个LIN主节点。

  TJA1020使用的波特率可从2.4~20 kb/s,有较好的保护功能:总线终端和电池引脚可防止汽车环境下的瞬变、总线终端对电池和地的短路保护以及过热保护等,可以作为汽车通信中的LIN通信接口(具体电路连接见图2)。

  3 网关软件设计

  网关的软件系统主要包括主监控程序、数据的发送、数据的接收、数据的处理 (包括协议转换和缓冲区内数据的读写处理)等几部分。

  3.1 主监控程序

  如图4所示,在主控制器AT91SAM7A3中划出4块缓冲区BUF1~BUF4,每一块缓冲区中的数据都有明确而且唯一的来源和目的地。主监控程序主要通过循环依次查询BUF1~BUF4中的存储情况,来决定是否发送数据以及将数据发送给谁。


  当高速CAN网络上有数据需要接收的时候,通过高速CAN模块接收数据,对接收到的数据进行处理后,将其存到缓冲区BUF1中,再由低速CAN模块将其发送到低速CAN网络上;当LIN网络上有数据需要接收时,通过LIN总线模块接收数据,对接收到的数据进行数据格式转换(LIN格式的报文帧转换为CAN 格式的报文帧),再将其存入到缓冲区BUF4中,并由低速CAN模块将其发送到低速CAN网络上;当低速CAN网络上有数据需要接收时,先接收数据,然后判断数据是发送到高速CAN总线,还是发送到LIN总线,根据判断结果对数据进行处理,存入相应的缓冲区(如数据是发往高速CAN总线,则存入BUF2,否则存入BUF3)。

  3.2 数据的发送

  数据的发送由发送子程序完成,网关中主要有3个发送子程序,分别对应两路CAN 控制器以及一路 LIN发送器。高速CAN的发送子程序负责发送BUF1中的数据,LIN的发送子程序负责发送BUF3中的数据,低速CAN的发送子程序负责发送BUF2 和BUF4中的数据。数据的发送采用查询总线状态的发送方式:查询总线的忙闲情况,如果总线忙,则退出发送子程序,进行其他的工作;如果总线空闲,则发送数据。发送完1帧数据后,再检查与之相应的缓冲区的状态。如果为空,则退出发送子程序;如果非空,则再检查总线的忙闲状态。如果忙,则退出发送子程序;如果空闲,则发送数据。然后再开始新一轮的数据查询发送过程。图5为高速CAN向低速CAN发送的流程,其他的发送子程序过程与此类似。


  3.3 数据的接收

  数据接收是从总线上接收数据,进行必要的协议转换,再将转换后的数据存人相应的缓冲区。网关中有3个接收子程序,分别对应两路CAN控制器及一路LIN发送器。数据接收采用中断方式,由于不同网络有不同的实时性要求,因此为3个接收程序设定了不同的中断级别。高速CAN的实时性要求最高,中断级别也设为最高;而LIN总线的实时性在三者中最低,故中断级别也最低。当一个接收中断发生后,进入接收中断子程序,判断相应的缓冲区是否已满(低速CAN的接收程序在接收到数据后需要根据数据的目的网络确定缓存区为BUF2还是BUF3)。如果缓冲区已满,则产生一个溢出错误标志;如果没有满,则将数据进行相应的协议转换,并将转换后的数据存入相应的缓存区,退出中断并完成接收。图6所示为低速CAN数据接收过程的简要流程。


  3.4 数据的处理

  网关的数据处理是指协议的转换和数据在缓冲区的存储与转发。每当接收到一组数据时,首先进行协议转换,然后再将其存入到相应的缓存区。高低速CAN的协议相同,并不需要转换,因此主要是进行CAN协议和LIN协议之间的转换。

  CAN协议和LIN协议都是以帧(frame)为数据单位进行通信的。在进行LIN协议到CAN协议的转换时,首先是将LIN帧分解,从标识符场 (identfield)提取出其中的ID标识符,从数据场(data field)提取出有效数据,然后根据这些信息封装成符合要求的CAN帧格式。CAN协议到LIN协议的转换过程亦是如此。先将CAN帧分解,从仲裁域 (arbitraTIon field)和数据域(data field)中提取出有用信息,然后封装成符合要求的LIN帧格式。

  数据的 4个缓冲区BUF1~BUF4为FIFO(First InFirst Out)缓冲区,本文采用循环队列(circular queue)来实现数据的先进先出。两个指针Read和Write分别指示队头元素和队尾元素在缓冲区空间中的位置,它们的初值在队列初始化时均应置为 0,每读取或写入一次数据,都要对缓冲区的参数进行调整。写数据时,将新元素插入Write所指的位置,然后将Write加1;读数据时,删去Read所指的元素,然后将Read加1并返回被删元素。

  4 网关通信测试

  将网关的高速CAN接口和低速CAN接口分别与单独的 CAN节点电路相连,LIN接口与单独的LIN从节点相连,组成测试网络。测试的主要内容为高速 CAN和低速CAN之间的通信,低速CAN和LIN网络之间的通信。高速CAN网络采用速率为500 kb/s,低速CAN网络采用的速率为100kb/s,LIN网络采用的速率为10 kb/s。利用PC机的串口发送测试数据,同时在另一个串口终端上进行数据的监测。测试结果表明,发送数据内容与监测到的数据内容一致。

  5 总 结

  以AT91SAM7A3为核心设计的一款CAN/LIN混合网关,实现了汽车网络中高速CAN总线、容错CAN总线及LIN总线三类网络之间的通信,使汽车中的各类网络的信息能够有效共享,实现了不同性质网络的互联。

关键字:CAN  LIN总线  汽车混合网关 引用地址:基于CAN/LIN总线的汽车混合网关设计

上一篇:利用FPGA实现低成本汽车多总线桥接
下一篇:基于MSP430单片机的Profibus-DP通信接口的开发

推荐阅读最新更新时间:2024-05-02 21:39

保时捷Taycan对标特斯拉意欲何为?
昨天Taycan发布了,看到这个价格,我们都需要仔细问一下,为什么价格比之前披露的各种媒体猜测价格差这么多 备注:现在检索正式发布的价格,我们可以得到这样的信息:A Porsche executive revealed that the Taycan will like carry a starting price of €80,000 or around $92,500 based on current exchange rates. That said, top-spec versions of the Taycan aren’t going to come cheap, potentially reaching €2
[嵌入式]
保时捷Tay<font color='red'>can</font>对标特斯拉意欲何为?
AD8138驱动CAN收发器电路图
图 .用AD8138驱动CAN收发器 该电路采用5 V单电源供电,配置为单位增益单端转差分放大器,共模设置为中间电压值。R1、R2和R3组成了直流偏置电路,可将输出信号调节至CAN电平。通过将R4和R5保持在相对于R2的较小值,电位计可轻松调整两个输出信号之间的差值,不会显著影响其各自的幅度,能够向DUT提供具有可变共模电平的CAN信号。由于R1和R3相等,输出端的交流共模也不会在调整R2时受到影响。R4、R5和R2共同组成了AD8138放大器输出端分压器的一部分。R4和R5尽可能选用最小值,以便最大程度地减小输出衰减,以及最大程度的降低每个输出端的峰-峰电平在调节R2时受到的影响。若R2短接,R4和R5也能提供最小负载,以
[电源管理]
AD8138驱动<font color='red'>CAN</font>收发器电路图
在LabVIEW下使用ZLGCAN接口函数库
1、概述 Virtual CAN Interface (VCI) 函数库是专门为ZLGCAN 设备在PC 上使用而提供的应用程序接口。库里的函数从ControlCAN.dll 中导出,在LabVIEW7.0 中可以直接使用这些库函数而无需额外的操作。VCI 函数的使用流程如图 1.1 所示。 图 1.1 VCI 函数使用流程 2、使用VCI 函数 2.1 数据结构 VCI 函数库中定义了一些数据结构用于数据交换,在使用VCI 函数前应该先创建这些数据结构。在LabVIEW 中创建这些结构时应该使用簇——Cluster。一个簇就是一个由若干不同的数据类型的成员组成的集合体,类似于C 语言中的结构。其成员
[测试测量]
基于LPC2119的RS485-CAN总线转换器设计
1.RS485及CAN总线简介 RS485是工业控制领域中一种传统的总线技术。然而,随着工业控制的复杂度提高,RS485总线在系统容量,通讯距离,不能支持多主结构等方面的缺陷开始逐渐显现。 CAN总线是从20时纪80年代初发展起来的一种新型现场总线技术,它的总线长度最远可达10千米(速率5Kbps以下),数据传输速率最高可达1Mbps(通讯距离40米以内)。它在多主方式下工作,不分主从;节点数的数目主要取决于总线驱动电路,目前可达110个。采用非破坏总线仲裁技术,即使网络负载很重也不会出现网络瘫痪现象。此外,CAN的每帧信息都有CRC校验和其它检错措施,有很好的检错效果 。 由于CAN总线具备以上优点,它目前已经被广泛应用到
[单片机]
基于LPC2119的RS485-<font color='red'>CAN</font>总线转换器设计
CAN通信基础知识介绍
一。什么是CAN? (二)CAN协议的特点 (三)我们使用ISO11898标准,物理层特征如图所示 125K-1Mbps的高速标准 电路图 通过TJA1050收发芯片 逻辑电平指的是CAN_RX和CAN_TX上的电平 CAN_H和CAN_L的电平指的是指经过电平转换芯片TJA1050以后转换出来的电平,是通过差分信号来传输信号的。 隐形电平:指CAN_H与CAN_L相等,都等于2.5V的时候,它们之间的压差是0V,对应逻辑“1”。 显性电平:指CAN_H与CAN_L有2V左右的压差,CAN_H是3.5V,CAN_L是1.5V,对应逻辑“0”。 总线上的电平必居其一,要么是显性要么是隐形。 (四)
[单片机]
<font color='red'>CAN</font>通信基础知识介绍
基于82527的CAN总线智能传感器节点设计
摘要:介绍一种以8051微控制器和82527独立CAN总线控制器为核心组成的CAN总线智能传感器节点的设计方法,并给出其硬件原理图和初始化程序。 关键词:CAN总线 82527 单片机 数据采集 智能节点 引言 CAN(Controller Area Network,控制局域网)属于工业现场总线,是德国Bosch公司20世纪80年代初作为解决现代汽车中众多的控制与测试仪器间的数据交换而开发的一种通信协议。1993年11月,ISO正式颁布了高速通信控制局域网(CAN)的国际标准(ISO11898)。CAN总线系统中现场数据的采集由传感器完成,目前,带有CAN总线接口的传感器种类还不多,价格也较贵。本文给出一种由8051单片机和
[传感技术]
CAN 总线波特率计算
作为青出于485总线而胜出485总线的 CAN总线,波特率的计算总是那么恼人。搜集了下网上的几种关于CAN波特率计算的文章,最后使用 飞思卡尔KE06 实测了一下,总结如下: 1. Nominal Bit Time: 位时间,继 波特率分之一,有以下几个部分组成: 其中,各部分定义如下,tQ是时间基分量:   只要将上表带入 第一个公式计算即可。
[嵌入式]
ATA6628/ATA6630:LIN总线汽车电子收发方案
  Atmel公司的ATA6628是全集成LIN总线收发器,兼容LIN2.0、LIN2.1和SAEJ2602-2标准。它具有3.3V/50mA输出的低压降稳压器和视窗看门狗。ATA6630具有和ATA6628相同的功能,但是它采用5V/50mA稳压器。稳压器可采用50mA的电流源,利用外部NPN晶体管可以将输出电流升高。这样的芯片组合使其可为LIN总线系统开发便宜、简单且强大的主从节点。   ATA6628/ATA6630用于处理在交通工具中的低速数据通信。LIN驱动器上经过改进的斜率控制确保了高达20kBaud的安全数据通信。睡眠模式和静音模式保证了极低的电流消耗。 图1ATA6628/ATA6630方框图 图
[汽车电子]
ATA6628/ATA6630:<font color='red'>LIN总线</font><font color='red'>汽车</font>电子收发方案
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved