4.2 CAN通信网络硬件设计
图3为CAN总线通信接口卡电路原理图,系统采用P87C591芯片作为主控制器。电控单元的微控制器(P87C591)通过数据总线经过光电隔离器(6N137)与CAN总线控制器(SJA1000)直接相连。CAN总线控制器带有一个接收缓冲器和一个发送缓冲器,CAN总线控制器的发送端口Tx0,接受端口Rx0、Rx1分别与CAN总线发送接收器的TxD、RxD、Vref端口直接相连,CAN总线的两条差分接收发送线CAN_L和CAN_H各接一个120 的总线匹配电阻。当CAN总线被某个节点占用的时候,该节点的发送端接CAN_H,电平为3.5V,接收端接CAN_L,电平为1.5V,当CAN总线空闲时,CAN_H和CAN_L上的电平均为2.5V。
图3 CAN总线节点电路原理图
系统采用PCA82C250作为CAN控制器P87C591和物理层总线间的接口,提供对总线发送和接收数据。使用PCA82C250还可以提高系统得抗干扰能力,保护总线,降低射频干扰,实现热防护等。
为了进一步提高系统的抗干扰能力,选用高速光电隔离芯片6N137构成隔离电路,将微控制器P87C591的I/O信号与SJA1000隔离,以提高系统的可靠性。
4.3 LIN通信网络硬件设计
图4 LIN总线节点电路原理图
图4为LIN总线节点电路原理图,LIN节点的硬件接口电路主要包括微控制器P87LPC76X,LIN收发器MC33399和电源调整电路。P87LPC76X采用80C51加速处理器结构,指令执行速度是标准80C51MCU的2倍。微控制器由TX0向MC33399的TXD发送数据,MC33399的RXD向微控制器的RX0发送数据。该电路采用Wake引脚输入开关唤醒方式,其中5V外部稳压器是可控的。由于该电路内部在LIN引脚与电源引脚集成了电阻和串联二极管,所以总线从节点不需要其它外置元件。但对于主节点,则必须在外部增加 的电阻,并且要串联一个二极管以防止电池断电时MC33399通过总线供电。
4.3 CAN/LIN总线软件设计
CAN通信接口模块程序主要包括三部分:初始化子程序、发送子程序(包括中断服务程序)和接收子程序。程序开始时即进入程序初始化,进入初始化程序有三种方式:一是硬件复位;二是软件复位;三是上电复位。初始化程序会对所有的报文对象进行初始化操作(所有值设置为0)。初始化结束之后,程序开始读取开关状态,进入CAN发送子程序,在CAN发送子程序中,只有当发送缓冲器为空时才可以发送数据,否则将会等待直到发送缓冲器为空。接收子程序从接收缓冲器中读取接收数据,经程序处理后即可接收。
LIN通信接口模块程序也主要包括三部分:LIN初始化子程序、发送子程序(包括中断服务程序)和接收子程序。在初始化阶段,对LIN收发器进行配置并将协议处理其变量赋初值。同CAN主节点软件发送子程序一样,只有在发送缓冲器为空时才可以发送数据。中央控制器节点是LIN总线的主节点,其他的都为从节点,所有的LIN帧都由主节点发送,且主节点负责LIN节点的监控和管理。
4 结论
目前,CAN总线作为一种可靠的汽车计算机网络总线已经在许多汽车上得到应用,并且我国许多的学者和厂家也都在研究开发国产的CAN总线。与CAN相比,LIN的成本较低,可作为低速CAN总线的替代产品,在汽车总线控制中也得到了应用。
本文创新点:设计了基于CAN/LIN总线的车身网络控制系统,完成了CAN总线、LIN总线的硬件设计,以及CAN/LIN网关的接口设计,并且设计了CAN/LIN总线的通信软件。