摘要:本文介绍汽车控制器上常用的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电路设计的更多相关文章

  1. CAN总线简介:如何以编程方式控制汽车

    最近,我正与Voyage公司的朋友合作研究,以实现福特Fusion空调系统(A/C)的编程控制.目前,Voyage公司正努力打造自动驾驶的终极目标:能够以低廉的价格成本和广泛的投放范围,把世界任何地方 ...

  2. 【2018.05.11 智能驾驶/汽车电子】非技术向:关于Simulink和AutoSar的几种观点

    最近看到几篇关于Simulink及AutoSar的Blog和Paper,感觉比较有意思,转载备忘之. 1. 看衰Simulink及AutoSar From:Tumiz的技术天地 https://blo ...

  3. 浅谈 SSD,eMMC,UFS(转自知乎)

    但作为一个计算机体系结构的研究生,在这些名词满天飞的时候,我的好奇心是抑制不住的,想一探这几样技术的究竟.本文不对某一特定事件进行点评,仅从技术角度分析对比一下这三种技术.就算是当做自己的技术储备+科 ...

  4. MVC模式的介绍(C#)

    MVC模式的介绍(C#)   Benefits在开发项目中使用“模型-视图-控制器(MVC)”模式的好处在于可以完全消除商业流程和应用表达层之间的相互影响.此外,还可以获得一个完全独立的对象来控制表达 ...

  5. 第四代自动泊车从APA到AVP技术

    第四代自动泊车从APA到AVP技术 前言 自动泊车是指汽车自动泊车入位不需要人工控制,系统能够自动帮你将车辆停入车位,在倒车入库中可谓是驾驶者的一项利器.当我们找到一个理想的停车地点,只需轻轻启动按钮 ...

  6. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)

    实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...

  7. [硬件项目] 1、汽车倒车雷达设计——基于API8108A芯片简易智能语音模块的设计与实现

    前言 汽车倒车防碰撞系统是一种辅助汽车泊车装置.低配的由超声波收发电路.回波放大电路.语音提示电路.数码显示.报警及温度补偿电路组成,高配的有时会带有后视视频系统.[1]      一.工作原理 如下 ...

  8. 【转】汽车CAN总线

    概述 CAN(Controller Area Network)总线协议是由 BOSCH 发明的一种基于消息广播模式的串行通信总线,它起初用于实现汽车内ECU之间可靠的通信,后因其简单实用可靠等特点,而 ...

  9. 汽车ABS系统-第一周作业

    ABS系统也成防抱死系统(Anti-lock Braking System),由罗伯特·博世有限公司所开发的一种在摩托车和汽车中使用,它会根据各车轮角速度信号,计算得到车速.车轮角减速度.车轮滑移率: ...

随机推荐

  1. xmanager 乱码

    xmanager连接后中文显示乱码 - 程序员CC - 博客园http://www.cnblogs.com/aomidata/p/3445075.html Xshell 为什么会出现中文乱码?-Xma ...

  2. 【Python3练习题 020】 求1+2!+3!+...+20!的和

    方法一 import functools   sum = 0 for i in range(1,21):     sum = sum + functools.reduce(lambda x,y: x* ...

  3. [转帖]FORFILES 的简单介绍。

    FORFILES https://blog.csdn.net/sandy9919/article/details/82932460 命令格式: forfiles.exe /p "D:\备份& ...

  4. Redis事物

    redis事物定义: >Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断. >Redis事务的主要作 ...

  5. CDH 6.0.1 集群搭建 「Process」

    这次搭建我使用的机器 os 是 Centos7.4 RH 系的下面以流的方式纪录搭建过程以及注意事项 Step1: 配置域名相关,因为只有三台机器组集群,所以直接使用了 hosts 的方法: 修改主机 ...

  6. ssm框架整合配置,用maven配置依赖jar包

    1.创建maven project 首先在pom.xml中指定工程所依赖的jar包 <project xmlns="http://maven.apache.org/POM/4.0.0& ...

  7. 谈谈对C#中反射的一些理解和认识(下)

    在上一篇中我们列举了一些反射的常规的使用,这一篇我们将介绍一些关于关于反射的高级属性,这些包括创建对反射的性能的总结以及如何优化反射性能,以及通过InvokeMember的方法如何去调用反射等等,通过 ...

  8. python数据结构与算法第十四天【二分查找】

    1.二分查找的原理 对于已经排序的列表进行最快速度的查找 2. 代码实现 (1)递归实现 def binary_search(alist, item): if len(alist) == 0: ret ...

  9. Java多线程之线程状态转换图

    说明:线程共包括以下5种状态.1. 新建状态(New)         : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread().2. 就绪状态(Runn ...

  10. gevent监测单线程下的io进行切换

    from gevent import monkey;monkey.patch_all() import gevent import time def eat(name): print('%s eat ...