基于CAN总线的汽车前照灯多路传输系统
控制器SJA1000, CAN 总线收发器82C250; 第二块是上位机,包括CAN 总线适配卡以及数据显示部分; 第三块是前照灯的用电器电路部分, 主要包括的也是微控制器89C51 单片机、独立CAN 通信控制器SJA1000, CAN总线收发器82C250。需要说明一点的是, 本系统用4 个发光二极管来代替具体的汽车前照灯中的近光灯,远光灯, 示宽灯, 雾灯。
![2.jpg](../img/eep/emb/emb-494931kcehvf4vo0.jpg)
图3 系统硬件电路原理图
微处理器89C51 负责SJA1000 的初始化, 通过控制SJA1000 实现数据的接收和发送等通信任务。
SJA1000 的AD0 ~ AD7 连接到89C51 的P0 口,SJA1000 的连接到89C51 的P2. 0, P2. 0 为0 时,CPU 片外存储器地址可选中SJA 1000, CPU 通过这些地址可对SJA1000 执行相应的读/ 写操作。SJA1000的ALE 分别与89C51 的引脚相连, 接89C51 的, 89C51 也可以通过中断方式访问SJA1000。
82C250 与CAN 总线的接口部分采用了一定的安全和抗干扰措施。82C250 的CANH 和CANL 引脚各自通过一个5 的电阻与CAN 总线相连, 电阻可起到一定的限流作用, 保护82C250 免受过流的冲击。
CANH 和CANL 与地之间并联了2 个30 pF 的小电容, 可以起到滤除总线上的干扰和一定的防电磁辐射的能力。82C250 的Rs 脚上接有一个斜率电阻, 电阻大小可以根据总线通信速度适当调整, 一般在16~ 140 k 。
2. 3 微处理器的选择
汽车电子控制系统的实时性是建立在微处理器的高速运算功能上的, 因此微处理器的选择是系统设计的重要环节, 与一般的电子设备相比较, 汽车电子控制系统的微处理器特点在于经常处理大量的输入和输出信号, 而且要实现高精度和实时控制, 因此必须能够同时进行多种独立的操作。为了满足这些要求, 微处理器必须具有高速计算、高速实时输入和输出以及多种中断响应等特性。由于通用电子计算机电子控制系统的控制功能较为简单, 所以大多数电子控制单元( ECU ) 中主要使用8 位微处理器。在选择微处理器上, 不仅要注重满足技术要求, 还要综合考虑成本和实用因素, 不应片面追求微处理器的高速和高位数。
本研究是对按钮开关的逻辑信号进行处理, 对微处理器的控制核心CPU 的要求不高, 选用AT89C51 即可满足要求。
基于CAN总线的汽车前照灯多路传输系统
3 汽车前照灯CAN 总线多路传输系统的软件设计
多路传输系统的软件设计包括CAN 节点的初始化、CAN 报文的发送和接收、PC 机与CAN 适配卡的通信。
3. 1 初始化
系统节点初始化包括: 自检、CAN 通讯初始化、A/ D初始化、各种系统标志初始化以及看门狗初始化等。其中89C51 的CAN 控制器初始化流程如图4所示。
![\](../img/eep/emb/emb-49494mgbec4wogbd.jpg)
图4 CAN 初始化流程图。
3. 2 CAN 子节点收发软件设计
子节点主要功能是实现对按键信号进行采集, 并响应主控节点命令, 通过CAN 总线向主控节点发送检测点信息。在软件设计上, 子节点采取命令应答方式, 即等待命令—分析命令类型—发回相应数据。
系统中子节点在上电复位后主要工作为:
( 1) 对系统进行初始化;( 2) 向主控节点发出加入请求;( 3) 主控节点接受请求, 并给该子节点一个网络编号;( 4) 等待主控节点命令;( 5) 根据命令将监测点的相关数据通过CAN 总线发送给主控节点。
因此, 子节点的主要流程如图5 所示。
![\](../img/eep/emb/emb-4949511l5geqfsxl.jpg)
3. 3 主控节点软件设计
主控节点软件采用事件驱动方式, 事件信号由各种中断信号产生; CPU 在进入中断处理程序后, 仅仅判断事件类型, 设置相应的事件标志位, 并不对事件做任何处理; 主控节点主程序将循环读取事件标志, 并转入相应的事件处理程序。
主控节点具有两种工作模式。一种是系统中存在上位机, 上位机作为命令发出点, 主控节点处于被动控制模式。此时, 主控节点的工作是通过RS 232 接收上位机的命令, 分析命令的目的节点, 并将命令通过CAN网络发送给目的节点; 同时, 主控节点检测CAN 网络上的节点数据, 将节点发出的数据通过RS 232 发送给上位机; 重复以上流程直到工作方式发生改变。在这种方式下主控节点的主要工作流程如图6 所示。
![2.jpg](../img/eep/emb/emb-49496z0zi0mr1kfk.jpg)
图6 被动控制状态流程。
当系统中不存在上位机或上位机发出脱离系统命令后, 主控节点进入主动控制工作模式。在这种状态中, 命令发送者为主控节点, 主控节点可通过定时器事件轮循查询各节点工作状态; 响应键盘事件, 并根据用户输入的命令向目标节点发出命令或响应相应子节点的数据; 通过LED 灯显示子节点工作状态。
两种工作模式间可以通过上位机发出命令、用户通过键盘输入命令以及主控节点查询上位机工作状态异常( 如在被动状态中, 上位机长时间没有命令) 等
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)