微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线技术的汽车ECU设计

基于CAN总线技术的汽车ECU设计

时间:05-18 来源:互联网 点击:

  从图2中可以看出,电路主要由3部分组成:单片机AT90CAN128、高速光耦6N137和高速CAN总线收发器。单片机AT90CAN128主要负责传感器信息的采集、内部CAN控制器的初始化并实现数据的接收和发送等通信任务。在ATA6660与CAN总线的接口部分也采用了抗干扰和安全措施,ATA6660的CANH和CANL引脚各自通过5Ω的电阻与CAN总线相连,电阻可起到一定的限流作用,保护ATA6660免受过流冲击。CANH和CANL与地之间并联两个30pF的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。另外,在两根CAN总线与地之间分别接了一个防雷击管,当两输入端与地之间出现瞬变干扰时,通过防雷击管的放电可以起到一定的保护作用。
  3.2软件设计
  系统软件设计主要包括信号采集和CAN接口通信程序。利用AT90CAN128片上集成的ADC模块可以采集一些常规传感器的模拟信号,如油压、水温、气压等信号;利用定时器/计数器模块采集传感器脉冲信号,如转速、行驶里程信号等。对于模拟量信号,在经过放大器处理之后,可以直接控制单片机的ADC模块对其进行采集;对于脉冲信号,在对其进行采集时需要进行整形处理,如转速传感器获取发动机飞轮旋转时轮齿的信号,是正弦交流信号,将其整形为方波信号,利用定时器/计数器模块采集方波的频率来完成速度采集。为提高转速采集的实时性,通常采集脉冲信号的周期(两个脉冲信号上升沿或下降沿之间的时间)来计算其频率,并计算发动机转速,计算公式如如式(1)所示。

式(1)中为系统时钟周期,为分频系数,为发动机飞轮齿圈齿数(对于康明斯发动机为为轮齿脉冲两次上升(或下降)沿的计数器值。

  CAN接口通信程序主要包括CAN控制器的初始化、数据接收和数据发送程序。主程序通过调用函数来实现数据的接收和发送,流程图如图3所示,在数据接收程序中,通过查询方式读取相应消息对象中的数据。

  CAN控制器初始化工作主要包括波特率参数设置、接收屏蔽寄存器及接收代码寄存器的设置、使能允许寄存器的设置等。通过总线定时器寄存器CANBT1、CANBT2、CANBT3来设置波特率参数。AT90CAN128中提供了一组由4个验收码寄存器(CANIDT1~CANIDT4)和4个验收屏蔽寄存器(CANIDM1~CANIDM4)组成的验收滤波器,信息只有通过它的验收滤波才能被接收;所有验收屏蔽寄存器为0的位,验收码寄存器和CAN信息帧的对应位必须相同才能验收通过,而所有验收屏蔽寄存器中为1的位,验收码寄存器对应位的验收滤波功能则被屏蔽。通过设置验收滤波器,既可以实现节点与节点之间的点对点通信,也可以实现一点对多点的广播式通信,使整个数据通信网络更加灵活。
  4、实验
  采用本文设计的汽车ECU对车辆上的模拟信号(水温、压力等),脉冲信号(转速、里程等)进行采集,并通过CAN总线发送和接收数据。采用IXXAT公司的CAN分析仪(USBtoCAN)对CAN总线进行监控,利用计算机与CAN分析仪连接,并通过CAN总线采集ECU传输的数据,CAN总线的通信波特率设定为125kbps,实验中测得的总线状态如图4(a)所示,实验中采用CAN2.0B扩展帧协议,采集某ECU节点的CAN总线数据如图4(b)所示,其中节点204060为脉冲信号采集,节点204061为模拟信号采集,数据长度为8字节,空余字节用FF填补,可用来扩展信息量。

  根据实际测量结果,可以看出总线没有接收到出错帧,接收到数据帧,反映总线工作状态正常。从接收的数据表明,每个ECU节点发送的ID码和数据与预定义的ID码和数据相同,总线接收和发送正常。另外,在软件中加入了异常处理,如果某节点一直向总线发送错误标志,总线会自动终止该节点,其他节点也会检测到错误条件,停止向该节点发送数据,这样可以避免总线瘫痪。
  5、结论
  本文设计的基于AT90CAN128单片机的汽车ECU,由于其本身接口丰富,可以采集多种传感器数据,并集成了CAN接口模块,这样提高了EUC的工作可靠性和CAN接口通信的可靠性,非常适宜于组建汽车CAN总线网络。另外,在硬件上做了优化处理,提高了系统的抗干扰能力。实验表明,该ECU能准确采集数据,并能通过CAN总线进行可靠通信

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

网站地图

Top