汽车控制器LIMPHOME电路设计
摘要:本文介绍汽车控制器上常用的3种LIMPHOME电路设计方法,用于在单片机复位重启期间仍能保证外部输出正确性,确保行车安全。
在电子电气领域,单片机使用非常广泛,单片机的复位重启是设计时必须面对的一个问题,要求有些功能在单片机复位重启期间不能有任何异常,否则会影响到驾驶员的安全。比如行驶期间发动机不能突然熄火,夜晚行驶期间前照灯不能突然熄灭等。这些输出状态的保持,都需要有独立于单片机之外的电路来保证,即LIMPHOME电路。
常用的LIMPHOME电路有几类:一是用触发器锁存器等组成的门电路;二是用带有LIMPHOME功能的芯片;三是用串行通信锁存芯片。
1 门电路
图1是由RS触发器和或门组成的电路,其中RS触发器的S端和R端都由单片机控制。当需要输出高电平时,单片机控制S端为高电平,R端为低电平。反之当需要输出低电平时,单片机控制S端为低电平,R端为高电平。一旦单片机发生复位,所有IO口都恢复成默认状态,比如低电平,RS触发器的输出会自动保持之前的状态,从而达到档位锁存的目的,实现了LIMPHOME功能,如表左边所示。

不同单片机的复位特性有所不同,如果单片机复位时,IO口的初始状态为高电平,则需要选择特性相反的RS触发器,如表右边所示。
奔腾B90、X80、B70等车型无钥匙起动控制器的供电档位保持功能就是采用的这种电路,保证了车辆行驶期间供电的可靠性。
2 带有LIMPHOME功能的芯片
在汽车控制器领域,越来越多地使用SBC(系统基础芯片),比如NXP公司的UJA 1079,它除了集成电源转换、 CAN收发器、LIN收发器、看门狗等模块之外,还带有一路LIMP输出,见图2。平时UJA 1079通过SPI接口与单片机维持通信,LIMP管脚会输出高电平。在单片机复位重启期间,LIMP管脚会输出低电平。
这个低电平经过一个PNP管转换为高电平,再与单片机的输出管脚通过2个二极管所搭建的“或门”共同控制外部输出,只要有其中一个是高电平,则输出信号就有效,如图3所示。
通过解读电路可以发现,这种方式实现的LIMPHOME功能有一个缺点,即无论MCU在复位前输出的是什么状态,UJA 1079和或门都会使输出处于有效状态,这点在使用的时候需要注意。目前奔腾B90、X80、B70等车型车身控制器的近光灯控制就是采用的这种电路,在夜晚行车期间,保证了近光灯不会异常熄灭。
3 串行通信锁存芯片
如图4所示,采用串行通信锁存芯片也可以实现LIMPHOME功能,比如INFINEON公司的TLE7240系列芯片。单片机通过SPI串行接口向TLE7240芯片发送控制命令,然后TLE7240的8路输出就可以控制外部的继电器、负载等执行动作,同时TLE7240还可以通过SPI串行接口将内部的诊断信息传送给单片机。当单片机复位重启时,无法通过SPI通信控制TLE7240, TLE7240自然就锁存之前的状态,从而实现了LIMPHOME功能。
上述LIMPHOME电路需要配合单片机软件来共同使用,即当单片机控制某路输出状态发生变化时,软件需要将变化后的状态存储在EEPROM中。一旦单片机发生复位重启,软件需要首先执行一段初始化程序,在此期间由LIMPHOME电路来进行输出状态的保持,而初始化完成后,单片机应首先读取EEPROM中的状态量,并将其恢复到输出控制,从而完成软件对LIMPHOME电路的接管。奔腾B90、X80、B70等车型发动机控制单元的起动使能继电器的控制就是采用的这种电路。
4 总结
本文介绍了3种汽车控制器上常用的LIMPHOME电路设计方法,第1种需增加一个RS触发器芯片即可,对控制器无其他需求,方案灵活,成本最低;第2种需要控制器内具有SBC芯片;第3种需要采用串行通信锁存芯片,对于成本要求不高,且单片机IO口资源紧张的控制器适合采用此方案。
汽车控制器LIMPHOME电路设计的更多相关文章
- CAN总线简介:如何以编程方式控制汽车
最近,我正与Voyage公司的朋友合作研究,以实现福特Fusion空调系统(A/C)的编程控制.目前,Voyage公司正努力打造自动驾驶的终极目标:能够以低廉的价格成本和广泛的投放范围,把世界任何地方 ...
- 【2018.05.11 智能驾驶/汽车电子】非技术向:关于Simulink和AutoSar的几种观点
最近看到几篇关于Simulink及AutoSar的Blog和Paper,感觉比较有意思,转载备忘之. 1. 看衰Simulink及AutoSar From:Tumiz的技术天地 https://blo ...
- 浅谈 SSD,eMMC,UFS(转自知乎)
但作为一个计算机体系结构的研究生,在这些名词满天飞的时候,我的好奇心是抑制不住的,想一探这几样技术的究竟.本文不对某一特定事件进行点评,仅从技术角度分析对比一下这三种技术.就算是当做自己的技术储备+科 ...
- MVC模式的介绍(C#)
MVC模式的介绍(C#) Benefits在开发项目中使用“模型-视图-控制器(MVC)”模式的好处在于可以完全消除商业流程和应用表达层之间的相互影响.此外,还可以获得一个完全独立的对象来控制表达 ...
- 第四代自动泊车从APA到AVP技术
第四代自动泊车从APA到AVP技术 前言 自动泊车是指汽车自动泊车入位不需要人工控制,系统能够自动帮你将车辆停入车位,在倒车入库中可谓是驾驶者的一项利器.当我们找到一个理想的停车地点,只需轻轻启动按钮 ...
- 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)
实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...
- [硬件项目] 1、汽车倒车雷达设计——基于API8108A芯片简易智能语音模块的设计与实现
前言 汽车倒车防碰撞系统是一种辅助汽车泊车装置.低配的由超声波收发电路.回波放大电路.语音提示电路.数码显示.报警及温度补偿电路组成,高配的有时会带有后视视频系统.[1] 一.工作原理 如下 ...
- 【转】汽车CAN总线
概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而 ...
- 汽车ABS系统-第一周作业
ABS系统也成防抱死系统(Anti-lock Braking System),由罗伯特·博世有限公司所开发的一种在摩托车和汽车中使用,它会根据各车轮角速度信号,计算得到车速.车轮角减速度.车轮滑移率: ...
随机推荐
- MySQL 性能调优之存储引擎
原文:http://bbs.landingbj.com/t-0-246222-1.html http://bbs.landingbj.com/t-0-245851-1.html MySQ ...
- IdentityServer4【Introduction】之概括
The Big Picture 大多数现代应用看起来都像下面的样子: 大多数的交互是下面这样: 浏览器与web应用之间的通信 web应用和web APIs之间的通信(这两者有时是独立的,有时是有用户参 ...
- C#设计模式之4:装饰者模式
装饰者模式 背景是有一家星巴兹咖啡店,由于客源充足,所以决定重新设计他们的收费系统,以前的收费系统中只定义了一个表示饮料的Beverage的基类,它里面定义了一个Cost的方法用来计算饮料的花费,但是 ...
- npm5踩过的坑!
1. 版本问题导致环境问题 我们第一次npm install时是根据package.json来安装相关依赖的,但是它里面的版本不固定,因此默认会根据最高的版本来安装相关依赖,但是在npm5是根据pac ...
- AngularJS基于MVC的复杂操作案例
AngularJS基于MVC的复杂操作案例 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- mybatis源码分析(一)------------入门
在进行源码分析前,先写一个使用mybatis进行开发的demo,方便我们后面进行分析. 一 关于mybatis的demo pom.xml文件 <project xmlns="http ...
- Linux基础学习笔记3-用户权限
本章内容 用户user 令牌token,identity Linux用户:Uername/UID 管理员:root,0 普通用户:1-65535 系统用户:1-499,1-999(Centos7) 对 ...
- Java Json 数据下划线与驼峰格式进行相互转换
概述 今天遇见一个需求,需要对json数据进行下划线与驼峰格式之间进行转换,在Fastjson.Jackson.Gson都提供了转换的方式,在这里进行一下列举. User类: public class ...
- CentOS7装Tomcat
有两种安装方式:(1)yum 命令 (2)安装包 本次采用第二种方式: 1.windos下载apache-tomcat-7.0.73.tar.gz安装包 2.通过WinSCP传到linux下(本次放 ...
- python之路--面向对象-成员
一 . 成员 在类中你能写的所有内容都是类的成员 class 类名: # 方法 def__init__(self, 参数1, 参数2...): # 属性变量 self.属性1 = 参数1 self.属 ...