1 引言
CAN(Controller Area Network,即控制器局域网)是上世纪80年代初由德国Bosch公司提出专用于汽车的串行总线。由于其数据传输率高,传输距离远,实时性好,可靠性高等众多优点已在汽车工业、航空工业、工业测控等领域广泛应用。在某些通信性能要求不高的场合为了降低网络控制的成本,1998年由汽车制造商奥迪、宝马等汽车公司、火山通信技术公司以及半导体生产商摩托罗拉(Motorola)公司共同创建了LIN协会,其目的是为汽车网络系统提供一个开放的A类(低速率、低成本)串行总线通信标准。由于LIN总线性价比极高,非常适合用于车灯、车门、座位等对通信要求不高,对成本敏感的部件。
目前,高级汽车一般采用分级网络控制,对发动机、传动系统、制动系统等重要,且对通信性能要求高的部件采用CAN总线控制;对车身,如车灯、车门等对通信性能要求不高,而对成本敏感的部件采用LIN总线控制,CAN总线与LIN总线间通过CAN/LIN网关数据转换以实现CAN设备与LIN设备的相互访问。这种分级网络控制模式也适用于工业控制、安全防护等领域。本文讨论一种基于实时操作系统Salvo的通用CAN/LIN网关。
2 网关模型
网关是连接两个通信协议和结构不同的网络设施。对于CAN/LIN网关,它的工作就是对信息拆除封装和重新封装,以使它们能被CAN总线和LIN总线上的网络节点读取,即实现CAN总线和LIN总线之间协议数据单元(PDU)的转换。CAN/LIN网关的模型如图1所示。
依照国际标准化组织制定的开放系统互连参考模型OSI/RM,CAN总线和LIN总线都包括物理层和数据链路层。应用层由各种应用系统各自定义,其中CAN总线已有一些应用较广的高层协议,如CANOpen、NetDevice等。CAN/LIN网关的分层结构如图2所示。
3 网关硬件
CAN总线和LIN总线协议数据单元的数据量小,系统采用高速8位微处理器――Microchip新型增强FLASH单片机PIC18F4680。PIC18F4680片内集成64KB FLASHROM作为程序存储器、3KB RAM作为数据存储器,能满足处理CAN总线和LIN总线协议数据单元转换所需的程序代码和数据存储的需求;PIC18F4680片内集成1KB EEPROM可用于存放系统状态信息,即使掉电重启也能恢复到掉电前状态。另外,PIC18F4680片内集成支持CAN2.0B的CAN控制模块,CAN数据链路层协议可由CAN控制模块执行,从而减轻MCU处理CAN协议的数据处理压力;PIC18F4680还集成可支持LIN1.3的USART,进一步减轻MCU处理LIN协议的数据处理压力。
为增强CAN总线的抗干扰能力,CAN总线驱动器MCP2551与PIC18F4680间采用高速光偶6N137隔离,并且独立供电,PIC18F4680采用LIN总线驱动器MCP201的电源模块供电;MCP2551采用专用DC/DC变换器供电。
实时多任务系统对于相同优先级任务采用以时隙为单位的时间片循环方式(round-robin)切换。为提高时隙精度,从而提高切换时间精度,PIC18F4680的定时计数器1(TMR1)外接标准时钟晶振32768Hz。系统时基由TMR1通过标准时钟晶振振荡产生。网关硬件电路如图3所示。