微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于CAN/LIN息线的混合网关设计

基于CAN/LIN息线的混合网关设计

时间:07-08 来源:互联网 点击:

本网关中的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数据接收过程的简要流程。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top