汽车LIN总线协议分析及使用PICmicro器件实现LIN总线从节点的教程

2019-02-12 10:18:03 来源:网络
标签:

 

LIN协议适用于汽车内进行低成本、短距离、低速网络通信,其用途是传输开关设置状态以及对开关变化响应。本文详细分析了LIN总线协议的特性、消息协议的组成、检错机制等,并介绍如何基于PICmicro器件来实现LIN总线从节点。

 

LIN协议是由欧洲车辆制造商协会开发用来进行低成本、短距离、低速网络通信,其用途是传输开关设置状态以及对开关变化响应,因此通信事件是在百毫秒以上时间内发生,而不像引擎管理等其它速度快得多的汽车应用。此协议支持在单根线上进行双向通信,使用由RC振荡器驱动的低成本微控制器,这样可以省去晶振或陶瓷振荡器的成本。另外,此协议实际上是以时间和软件上的代价换取硬件上成本的节约。LIN协议的每一条消息都包含自动波特率步进的数据,最高可以支持波特率为20k,同时低功耗睡眠模式可以关断总线,以避免产生不必要的功耗。总线可以由任意一个节点提供电源。


LIN总线特性
LIN总线融合了I2C和RS232的特性:像I2C总线那样,LIN总线通过一个电阻上拉到高电平,而每一个节点又都可以通过集电极开路驱动器将总线拉低;像RS232那样通过起始位和停止位标识出每一个字节,每一位在时钟上异步传输。

 

图1给出了典型的LIN协议配置。当任意一个节点将总线拉低时,总线处于低电平,标识着总线进入占用状态;而当所有节点都使总线浮空时总线处于电池的电压(9-18V),则意味着总线处于非占用状态(Recessive state);在空闲状态下浮空的总线通过电阻被上拉到高电平。

 

 

总线工作在9到18伏的电压下,但所有连接到总线上的器件必须能承受40V的电压。一般情况下,微控制器通过线路驱动器或接收器与总线隔离。总线在每一个节点上被端接到Vbat,主节点通过一个1kΩ的电阻端接而从节点则通过一个20kΩ到47kΩ的电阻端接。总线最大长度为40米。

 

总线上传输的每一个字节都是与起始位和停止位一起组成帧。起始位的状态与空闲状态相反(即为0),而停止位则与空闲状态同为1。在每个字节中,首先传输的是最低有效位。

 

消息协议
主节点控制总线的方式是轮询各个从节点并与总线上其余部分共享从节点的数据。从节点仅在接到主节点的命令时才进行数据传输,这样就可以进行双向传输并且无需进一步的仲裁。消息传输是以主节点发出一次同步中断开始,紧接着是消息的同步字段和消息字段。通过在每条消息的起始处传送的同步字段还设定了整个总线的时钟,每个从节点用该字节来调整其波特率。

 

同步中断使总线进入占用状态,该状态保持时间为13位数据的传输时间,紧接着是一个停止位(非占用状态),这告知从节点即将有消息传输。主节点与从节点的时钟漂移最大允许在15%,因此从节点接收的同步中断可能只有11位或长达15位数据位的传输时间。

 

每一条消息的第二个字节是标示字节,用来告知总线在该字节后面传输的是什么数据和哪一个节点应该应答,以及应答的长度(标示字段如图2所示)。一条命令仅会有一个从节点对其进行响应,从节点仅在主节点的指示下才发送数据。数据只要出现在总线上,每一个节点都可以接收到。因此,无须主节点专门控制从节点之间的通信。

 

 

由于设计中采用廉价的RC振荡器,从节点必须在每一次传输时检测主节点的波特率并调整其自身当前的波特率。因此,每一次通信都由一个由交替的“0”和“1”组成的同步字节开始。标识字段紧跟在同步字段的后面,它告知总线后面传输的内容是什么。标识字段又分为三个子字段,最低4位(0-3位)是寻址总线上的器件,中间两位(4-5位)是后面传输的消息的长度,最高两位(6-7)用作奇偶校验位。

 

除了睡眠命令,LIN协议并没有定义每一条消息的内容。其它命令是由具体应用来定义的。

 

检错机制
下面描述的错误必须被检测出,并且在每个节点内进行计数。

 

位错误-传输节点必须将它认为应该传输的数据位与总线上实际出现的数据位进行比较。由于总线需要响应时间,控制器必须在检测数据位之前等待足够长的时间。假设最小的电压翻转速率为1V/μs,而总线最高电压为18V,则发送器必须等待18μs才能检测总线上的数据位是否正确。

 

校验和错误-每一条消息的内容都是由校验和字节进行保护。

 

奇偶校验错-命令字节的6个数据位由两个奇偶校验位进行保护,需要重新进行计算这些位并比较。如果错误出现,应当忽略当前命令并且记录下错误。LIN协议中没有直接的错误报告机制,但每一个从节点应当跟踪其自身的错误,主节点可以要求从节点将错误状态作为正常消息协议的一部分来传输。

 

LIN总线与CAN总线
LIN协议并不直接与CAN总线兼容,但人们期望两者进行相互操作。CAN总线可能用在整个汽车内来实现通信,而LIN总线仅用在汽车的局部电路内,如车门。为了连接两种总线,需要采用CAN-LIN协议接口节点,该节点从LIN总线节点收集信息然后传送到CAN总线上。

 

低功耗睡眠模式
主节点通过发送标识码0x80指示所有节点进入睡眠模式,睡眠命令后面跟随的数据字节的内容没有定义。收到睡眠命令的从节点应当对本身进行设置,以便当总线发生改变时能唤醒,并关闭自身的电压以使电流消耗最低。当处于睡眠模式时总线将处于高电平并且不消耗电流。

 

任意一个节点都可以通过发送唤醒信号来唤醒总线。当收到唤醒信号后,一般情况下所有的节点应当激活并等待主节点开始总线轮询。

 

硬件示例

图3给出了有两个按钮和三个LED组成的硬件示例。每按动十下按钮1 LED1改变一次状态。同样,每按动十下按钮2,LED2改变一次状态。作为标识为ID1的响应,按钮的按动次数被传送到总线上。作为标识为ID4的响应,按钮的按动次数的刷新被传送到总线上。

 

 

软件操作
LIN协议程序工作在由RB0触发的中断下以实现总线的睡眠/唤醒。在触发中断时,程序对低电平数据位的长度进行计数,然后读同步字节并确定数据位时间,最后再将其与最初的数据位时间进行比较,以确定最初的低电平时间是否大于10个数据位的时间,大于10为同步中断,小于10为唤醒信号。如果是唤醒信号,程序退出并继续等待同步中断;如果是同步中断,程序就读取命令字节,检查奇偶位并检查动作表(acTIon table)来确定接下来的动作。动作表定义了总线上数据的来源或目的地。

 

为了初始化LIN协议的从节点句柄(Slavehandler),用户必须调用InitLinSlave程序,这个程序初始化RB0中断引脚和TMR0寄存器。TMR0寄存器用来测量数据位的长度并生成波特率。初始化完成之后,用户可以执行自己的程序。一旦检测到RB0引脚上的下降沿,用户程序就将被中断。当检测到下降沿时,程序就跳转到中断服务程序。必须禁止除了TMR0和RB0中断之外所有的中断源,以便对同步字段进行精确测量。计算出波特率之后,中断服务程序就退出执行。

 

在下一次RB0中断发生时,LIN协议Slavehandler自动进入接收模式,以接收标识字段或数据字节。如果检测到标识字段的起始位,就对标识字段进行接收和解码。然后,根据收到的标识执行相应的代码,例如存储数据或点亮LED。总线上一个帧传输完成之后,标志FCOMPLETE被置位。这个标志指示所有的数据都已正确接收完毕并可以进行后续的处理。此标志由用户固件清除。

 

LIN协议从节点句柄Slavehandler最高可以工作在20K的波特率下,需要420字的程序存储空间以及23字节的数据存储空间。

 

由于其低成本,LIN协议具有在汽车应用中广泛采用的潜力。可以使用内置的RC振荡器并且运行在4MHz的时钟频率下的诸如Microchip的各种器件的微处理器,使得设计师们能以最低的可能成本设计应用系统。

 

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
顺络电子:提供5G产业所需的射频电感、功率电感、滤波器等产品

2019年是5G产业化元年,目前尚处于起步阶段,公司产品布局在通讯网络设备端、智能化终端应用上,可以提供5G产业所需要的射频电感、功率电感、滤波器等产品。

一场围绕自动驾驶、智能网联汽车的“头脑风暴”即将开始——共同探索汽车电子“芯”未来

自动化、电气化、多模共享化和互联化将是汽车电子行业未来的必经之路,汽车电子智能化和电动化已成为全球汽车产业技术领域的发展重点和产业战略的增长点,同时也极大地提高了汽车电子的需求与未来机遇,汽车制造商正迎来一场改变产业格局的新革命。

半导体行业格局新突破:汽车电子、人工智能等新兴行业有望迎来爆炸式增长

当前,我们使用的许多前沿数字化设备背后的技术都要依靠半导体才能实现。由于无人驾驶、人工智能、5G和物联网等新兴技术的发展,以及对技术研发的持续投入和市场主要参与者间的激烈竞争,未来十年全球半导体行业有望持续稳定增长。

MCU市场领域需求提高,杰发科技搞了大动作?

捷豹路虎的工程师Tomar曾在公开演说中提到,该公司的汽车通常配备超过70个ECU(电子控制单元,其核心部件为MCU)。从全球市场来看,汽车电子是MCU最大的应用,在汽车领域,MCU的应用范围较广,既可用于车载信息娱乐产品,也可用于雨刷、车窗、电动座椅等车身控制领域。

为什么总线英文叫“BUS”而不是“CAR”?一文带你读懂该技术

总线,英文叫作“BUS”,即我们中文的“公共车”,这是非常形象的比如,公共车走的路线是一定的,我们任何人都可以坐公共车去该条公共车路线的任意一个站点。如果把我们人比作是电子信号,这就是为什么英文叫它为“BUS”而不是“CAR”的真正用意。

更多资讯
2030年自动驾驶将改变出租车行业

瑞银集团(UBS Group AG)分析师表示,2030年全球自动驾驶出租车市场价值可能超过2万亿美元,自动驾驶汽车的大规模应用也将会对许多现有行业产生重大的积极影响。

人工智能+机器视觉让自动驾驶识别驾驶员意图
人工智能+机器视觉让自动驾驶识别驾驶员意图

本篇文章提出了一种利用深度神经网络来检测视频序列中信号的方法,采用该方法对超过一百万帧视频资源进行实验,实验结果表明,采用该方法,每帧的精度都很高。

BLE让胎压监测变得智能
BLE让胎压监测变得智能

“联网汽车”这个词一般让人联想到自动驾驶汽车。但联网汽车其实可以提供多种功能,其中一项是胎压监测系统(TPMS)。

苹果新专利曝光:高级加密汽车门锁系统,为你出行安全保驾护航

近日美国专利商标局正式公布了苹果新获得的 59 项专利。其中与汽车相关的一个专利是高级加密汽车门锁系统,该系统能够阻止黑客入侵。

利用传感器系统或将有望改善自动驾驶,实现正确导航和定位

麻省理工学院的一个科学家团队正在研究一种利用GPS之类的地图和可视化数据的方法,使自动驾驶汽车能够学习人类的驾驶模式,并将学到的知识应用到以前从未见过的复杂规划路线中。

电路方案