基于Microchip单片机及收发器实现的低成本LIN总线

出处:维库电子市场网 发布于:2023-06-30 09:27:48

     摘  要: 介绍了几款Microchip单片机及收发器实现低成本的汽车子网LIN总线节点。基于Microchip单片机内带的增强型通用同步/异步收发器(EUSART)实现LIN的控制器,并用Microchip的MCP2021作为LIN的电平转换器,终实现一主多从的低成本的LIN网络。

随着汽车总线应用的日益普及以及对汽车成本的要求越来越严格,LIN总线的市场占有率越来越高。本文从低成本的角度来实现LIN总线的节点,具有非常高的实用价值。

 1 LIN的基本知识与发展

  1.1 LIN的基本知识

局域互连网络LIN(Local Interconnect Network)是低成本的串行通信网络,用于实现汽车中的分布式电子系统控制,是现有多种汽车网络在功能上的补充;同时它也是一个开放的标准,作为CAN总线的子总线,能缓解CAN总线数据拥挤的现状。

由于LIN总线是可靠、低成本、开放标准的网络解决方案,它可以简化现存的多点解决方案,并且能降低在汽车电子领域中的开发、生产、服务和后勤成本。

 1.2 LIN的起源与发展

LIN联盟成立于1999年,并发布了LIN 1.0版本。2000年,LIN联盟再次发布了1.1版本。2001年,辆采用LIN1.1版本的量产汽车面世。2003年,2.0版本出现。2006年,2.1版本面世并沿用至今。

 1.3 LIN的市场

LIN总线产品已经成为汽车总线的第二大市场,预计将成为未来增长快的一个市场。大市场是CAN总线,其在2006年已经达到顶峰。

2 LIN的基本概念

LIN在物理层是单线实现的,一般电压范围在8 V~18 V。LIN网络是单主多从结构,由于只有一个主节点,所以不存在总线仲裁。总线的速度一般在2.4 kbd~19.6 kbd之间。典型节点数为2~10个,由于阻抗匹配的原因,多不能超过16个。


LIN总线为串行通信方式,编码采用非归零码,8N1(8个数据位,没有校验位,1个停止位)方式。每帧的数据字节数可变,为2~8 B。在数据字节结束后,会发一个校验和来进行校验。

在LIN网络中,主节点的时钟由高的晶振产生,从节点一般用RC震荡器产生。在本文中,从节点的时钟可以用Microchip单片机的内部RC震荡器来实现。

 3 LIN协议的基本知识

LIN的报文分为两部分,一是主任务,也叫报文头;另一个部分是从任务,也叫响应场。


主任务位于主机节点内部,都是由主节点发出,它负责报文的进度表、发送报文头(HEADER)。从任务位于所有的(即主机和从机)节点中,其中一个(主机节点或从机节点)发送报文的响应(RESP*E)。

3.1 报文头

报文头分为三部分,按顺序分别叫同步间隔、同步字段、标识符字段。

同步间隔是一个长时间的低电平(显性总线电平),低电平时间要大于10个位定时时间,通常为13个位定时时间。在长时间的低电平之后,要跟着一个短时间的高电平(隐性总线电平),一般为1~4个位定时时间。

同步字段包含了时钟的同步信息。它的内容为0x55,表现在8个位定时中有5个下降沿(隐性跳变到显性的边沿)。从节点通过同步字段,可以使自己的总线速率与主节点同步。

标识符字段定义了报文的内容和长度。其中,内容是由6个标识符位和2个奇偶校验位组成。标识符位的第5位和第6位(ID4和ID5)定义了报文数据场的长度。


 3.2 响应场

响应场包含数据字段和校验和两部分。

数据字段由8 bit数据的字节组成,传输由位(LSB)开始。校验和按照带进位加的方式计算,每个进位都被加到本次计算结果的位。

3.3 保留的标识符

标识符为0x3C和0x3D的标识符被用做诊断。其中0x3C是主机请求帧,它可以从主机向从机节点发送命令和数据。0x3D是从机响应帧,它触发一个从机节点(由一个优先的帧编址)向主机节点发送数据。

标识符为0x3E是由用户定义的自由用法,标识符为0x3F是为将来使用而严格保留的。

 4 Microchip单片机的软硬件实现

  4.1 硬件实现

主节点一般采用Flash比较大的Microchip中档8位单片机,或者采用带CAN控制器的8位单片机或16位单片机作为控制器。时钟采用高石英晶振。物理层的电平转换采用Microchip的收发器MCP2021。

从节点可用低成本的Microchip中、低档8位单片机。时钟用单片机内部自带的RC震荡器。内部RC震荡器在常温25 ℃时,为1%,全温度范围(-40 ℃~+125 ℃)内为5%[1]。物理层的电平转换采用Microchip的收发器MCP2021。

 4.2 软件实现

  4.2.1 主节点

主节点完全按照LIN规范实现。主节点的任务就是发送报文头和发送接收数据,实现一个网关的作用。另外,单片机的剩余功能,可以用来做一些A/D和开关量的采集,还可以驱动一些蜂鸣器、小电机或者LED和LCD等器件。主节点发送流程。


LIN总线的通信可以通过配置单片机的EUSART来实现。每次通信都由主节点启动,此处不考虑从节点到从节点的通信。总线的配置也由主节点来实现,具体波特率可以通过波特率控制寄存器来实现。这里采用9 600的波特率。

标识符不是一个节点的地址,而是一个报文的描述符。当主节点发送一个0x3C的命令后,再发送8 B的00H,总线就进入休眠模式。在休眠模式下,总线处于空闲状态,因此任何一个从节点都可以唤醒总线。

主节点采用高的石英晶振作为时钟源,可以产生低误差的时钟信号。在这里,要把主节点设置为异步半双工通信模式,8 bit数据模式。时钟选择为内部时钟。

由于EUSART有“发送间隔字符位(SENDB)”,可以在每次发送数据前发送同步间隔字符,这样可以省掉不少软件开销,使单片机可以致力于其他逻辑的运算。

4.2.2 从节点

从节点不需要系统配置的信息,所有从节点接收所有报文,然后再判断是否需要执行。

从节点不需要外接石英晶振,可以用单片机内部自带的RC震荡器实现。Microchip的中端8位单片机大多数都内带高的RC震荡器,在常温下(25℃),经过校准可以达到±1%的。

每个单片机在出厂时都经过校准,并把校准字写在Flash空间的一位。在程序开始运行时,会把校准值装载到W寄存器里。在程序的条指令中执行MOVWF OSCCAL,即可将W寄存器里的值送到内部RC震荡器的校准寄存器里,从而实现校准。

从节点先检测总线电平,当长时间的隐性电平结束,出现大于10个位定时的显性电平后,开始数5个下降沿的时间,用时间值除以8,就可以算出波特率。然后从总线上读取数据,解码ID,处理响应。

EUSART支持波特率的自动检测和校准,可以使软件代码大量简化。从节点可以在总线空闲时进入休眠状态,当从节点检测到主节点发出的同步间隔时,可以从休眠状态唤醒。

当从节点被其他外部中断唤醒时(例如A/D转换完成,外部IO电平变化等),从节点可以唤醒休眠的总线。

如果从节点的功能比较简单,工作电流比较小,可以通过收发器MCP2021的参考电压输出端来供电。MCP2021有两种型号,参考电压的输出分别为5 V和3.3 V,适应5 V和3.3 V的单片机。这个参考电压的输出电流为50 mA,所以不适合工作电流比较大的场合。

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

相关技术资料
广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!