2020年国家级科技企业孵化器名单公布,江苏占比13%
06-18
1概述 LIN协议是出现的一种新型低成本串行通信总线。
它的全称是Local Interconnect Network,即本地互联网络。
它最早出现在汽车行业。
它是为了解决汽车智能化、网联化发展要求与降低汽车制造成本之间的矛盾而提出的串行总线协议。
主要用于门、灯等需要简单控制但又需要智能控制的场合。
其主要特点是:采用单主控制器/多从设备的通讯方式;基于普通UART/SCI接口硬件实现,协议简单;网络传输速率不高,最多20kb/s。
由于LIN协议的突出特点是协议对硬件依赖性低,可以基于普通微控制器的常用串口等硬件资源用软件实现,成本较低。
因此,它可以广泛应用于汽车行业以外的其他领域,例如智能家居网络。
数据传输、节点控制等场合。
本文在对LIN协议分析的基础上,研究讨论了该协议在普通单片机上具体实现的可行性,即如何利用单片机有限的硬件资源来实现主节点和从节点LIN 的节点。
2 LIN协议简介 LIN协议的最新版本是LIN规范包修订版2.O,包括协议规范、节点诊断配置规范、物理层规范、API规范等,从硬件配置到详细指定了node配置语言。
下面对其协议规范进行简单介绍和分析。
LIN数据传输以消息帧的形式进行。
一个完整的消息帧由主机节点发送的消息头和主机或从机节点发送的响应组成,如图1所示。
消息头包括中断字段(break)、同步字节字段(synch)和受保护的标识符字节字段PID(受保护的标识符)。
间隔字段由至少持续13位的显性电平和持续至少1位的隐性电平组成;它由主机节点生成,标志着数据通信过程中消息帧的开始。
同步字节字段包含时钟同步信息。
同步字节字段的格式为0x55,体现在8位时序中有5个下降沿,即隐性跳变到显性边缘。
所有从节点应能够在主节点发布消息头后检测到间隔字段的存在,并在正确接收到同步字节字段后,准确计算出主节点要发送的数据的波特率,并以此波特率作为下一步发送或接收数据的波特率设置值。
这样,所有从节点收到间隔字段和同步字节字段后,就已经与主节点达到同步了。
下一步,所有从节点以计算出的波特率接收消息头的保护标识符字节字段。
受保护的标识符字节字段PID(Protected IDentifier)与标准串行通信数据帧的格式相同。
它由 1 个起始位、1 个停止位和 8 个数据位组成。
它属于数据字段,如图2所示。
受保护的标识符字节字段由两部分组成:标识符和标识符奇偶校验。
ID0~ID5是标识符,决定了标识符的内容,可以取0到63的值。
其中0~59(0x3b)用于信号传输帧,60(0x3c)和61(0x3d)是用于传输诊断数据,62(0x3e)保留用于用户定义的扩展,63(0x3f)保留用于未来协议。
升级。
奇偶校验位P0和P1是对标识符位ID0至ID5的奇偶校验,作为接收到的ID的验证措施,以保证接收到的ID的正确性。
消息帧的响应由3至9个字节字段(数据字段)组成,其中包括2、4或8字节的数据字段(数据字段)和1个校验和字段(校验和)。
它们由发送数据的节点(主节点或从节点)发送的数据和验证场所组成,都属于数据字段。
校验和字段有两种类型:通用校验和字段和增强校验和字段。
通用校验和是数据字段中所有字节之和的反码。
总和是根据加法进位(ADDC)方法计算的。
所有数据字节总和与校验和字节的补码之和必须为“0xFF”。
增强型校验和与普通校验和的区别在于,在计算数据字段和时添加了保护标识符字节字段。
3 LlN协议在普通微控制器上的实现 现在的微控制器种类繁多,硬件资源不同,功能也千差万别。
一般来说,基于普通单片机软件实现LIN协议的方法可以分为两类:一类是基于单片机通用串口的实现方法,另一类是基于两种普通单片机软件的位操作实现方法。
微控制器的端口位。
3。
1 基于单片机通用串口的LlN协议的实现 基于单片机通用串口的LIN协议的实现方法主要针对具有通用串口的单片机端口。
这类单片机的代表无疑是最常用的51系列单片机,如Atmel的AT89C51/52。
(1)基于单片机串口的LlN主节点实现 从LIN协议分析可以看出,在一帧通信过程中,主从节点采用标准串行通信的形式数据帧大部分时间都是为了交换数据??,这就是为什么LIN协议可以基于单片机的通用串口来实现。
帧通信的关键是实现主节点和从节点之间的同步。
在同步过程中,主节点和从节点执行的操作是不同的:主节点的任务是发送消息头,从节点的任务是接收并判断消息头以实现与主节点的同步。
主节点。
包头中的间隔字段是基于主机节点时钟频率的大于13位时间且至少1位时间的间隔定界符。
对于主节点来说,这部分是实现主节点功能的关键。
间隔字段和间隔定界符的实现可以通过改变串口波特率,使用串口输出具体数据来实现。
例如,正常情况下,单片机使用19.2kb/s的波特率来传输数据。
可以先将串口的波特率设置为9.6kb/s,然后传输一个0xc0这样的数据,就可以达到19.2kb/s的波特率。
波特率用于计算位时同步间隔以及同步间隔定界符的位时长度要求(因为如果用19.2kb/s的传输速率传输00数据,则只需10个位时同步间隔可以达到,13不能达到职位要求)。
后续PID字段的发送以及数据字段的发送或接收可以基于单片机的通用串口以19.2.kb/s的正常波特率进行操作。
串口LlN主节点的硬件原理如图3所示。
在一个帧通信过程中,主节点必须根据不同的阶段将串口设置为不同波特率的发送或接收状态在通信过程中完成消息头间隔字段和同步字节字段的发送。
保护标识符字节字段的传输以及下一阶段接收或发送数据。
(2)基于单片机串口的LlN从节点实现 从节点实现的关键是能够正确、实时地接收报文头,实现与主节点的同步,并做好准备以进行下一步的数据交换。
基于单片机通用串口的LIN从节点的实现方案有两种:一种是查询方式,另一种是中断方式。
两种方法的区别在于判断消息头接收的方法。
查询方法的硬件原理如图4所示。
同样,从节点也需要准确的波特率和时序,对时钟要求较高。
建议使用22.MHz晶振。
在查询模式硬件电路中,为了及时感知主节点报文头的初始阶段,可以将串口接收数据端和RXD端连接到主节点的外部中断触发端口(INTl或INT0)。
微控制器。
这样,当主节点发送的间隔字段的下降沿到来时,可以实时触发从节点进入消息头的接收查询程序段。

在报文头的接收和查询过程中,当总线电平下降沿到来时,从节点对总线显性电平(低电平)的持续时间进行累加计算,直至发现总线返回到隐性水平。
(高水平)。
如果该周期的持续时间大于11个主节点工作比特时间,则从节点断定这是一个帧通信的开始。
然后从节点准备好接收同步字节字段。
从同步字节字段起始位的第一个下降沿开始,不断累加同步字节字段的最后四个下降沿的时序。
最后,将得到的时序时间除以8,得到主节点发送数据时的比特时间,即主节点下一步进行数据通信的波特率。
从节点以此作为串口波特率设置值,通过串口与主节点交换数据。
后续串口发送或接收数据可以通过串口查询或中断 来进行。
间隔字段和同步字节字段有两种计时方法:一种方法是用软件模拟一个位时间,通过统计每个阶段调用位时间程序的次数来间接计算时间;另一种方法是将定时器TO设置为一位时间后中断。
查询各阶段定时器T0中断的数量。
通过计算TO中断次数的差异,也可以间接计算出每个阶段的持续时间。
该查询方法硬件电路简单,系统中断类型和次数少,程序运行比较稳定;但缺点是系统大部分时间都在等待查询帧头,系统资源利用率较低。
中断方法改进和改进了查询方法的缺点。
其硬件原理如图5所示。
中断模式 间隔字段和同步字节字段的接收完全在中断模式下进行。
由于普通单片机的外部中断触发端只有下降沿和低电平两种触发方式,因此报文头间隔字段的起始阶段和同步字节字段的下降沿都可以触发从节点,但报文头间隔字段的上升沿可以触发从节点。
消息信号不能。
让从节点感知。
改进的方法是让接收到的数据流经过一个三态门和一个三态非门后才进入单片机的串口。
两个三态门由微控制器的两个端口控制。
正常情况下,三态门导通,三态非门关闭,数据流正常进入单片机串口。
当间隔场的下降沿触发单片机时,程序控制三态门截止,三态非门导通,数据流反相进入单片机。
间隔场的上升沿经过三态非门,变成下降沿。
同样可以触发微控制器中断。
在后续同步字节字段的接收中,可以按照正常的中断方式进行,即同步字节字段的5个下降沿触发单片机中断接收5次。
由于采用中断方式,各阶段的定时只能通过查询定时器T0的中断次数来实现。
中断方式的优点是对主程序的运行影响相对较小,系统资源利用率较高。
缺点是增加了单片机的外围电路,硬件稍复杂。
3.2 基于单片机公共端口位的LIN协议实现 对于没有通用串口的单片机,??必须采用端口位操作方法来实现LIN协议。
这类微控制器的硬件资源一般都非常有限。
有的只有一个定时器,不具备外部中断功能,如Microchip的PIC18F系列。
这类微控制器的突出特点是价格低廉,生产出来的LIN节点将具有无可比拟的价格优势。
(1)基于公共端口位的LIN主节点的实现 1IN基于单片机公共端口位的主节点在报文头和数据域的实现中必须采用位操作方法。
其硬件组成原理图与基于单片机通用串口的LIN主节点的硬件原理图完全相同。
不同的是,前者的数据收发端和TXD端可以是单片机的任意通用端口位,而后者必须使用单片机的通用串口。
报文头间隔字段的实现可以设置定时器TO在定时一位时中断,将LIN数据发送端TXD设置为显性电平(低电位),启动定时器T0中断显性电平。
平坦持续时间是定时的,当达到13位以上时,LIN后发送数据端TXD为隐性电平(高电位),从而完成间隔场的发送。
后续的区间字段定界符和同步字段的实现也采用同样的方法。
在数据字段的接收和发送中,也需要定时器TO的配合来完成。
发送数据时,从待发送的数据存储区中一一取出数据,转换为10bit类型的位数据。
定时器T0在为1位时也中断一次,在中断处理程序中改变定时变量值。
数据发送程序根据时序变量的不同,从数据发送端TXD端依次发送10个bit类型的位数据,持续1个bit时间;接收数据时,需要使用定时器T0来计时半位时间。
,检测1字节的起始位,然后当定时器TO置1位时恢复定时中断设置。
这样,在后续的数据位检测中,可以保证在数据位的中间时刻检测到数据位,从而保证数据位接收的正确性。
接收到10bit类型的位数据后,必须将其转换为字节类型的数据并存储在相应的数据缓冲区中。
(2)基于公共端口位的LIN从节点实现 基于单片机公共端口位的LIN从节点硬件电路与基于通用端口位的LIN从节点硬件电路基本相同单片机的串口查询方法。
不同的是没有使用微控制器。
通用串行端口。
由于没有外部中断功能,主节点发送的报文头的接收只能依靠从节点主动等待查询。
考虑到从节点程序不能一直查询并等待与主节点同步,因此从节点应时常查询并等待主节点的消息头。
开始时,定时器设置为无限期长期中断模式。
时间到后,从节点将查询主节点等待发送的消息帧。
当检测到同步信息时,定时器设置为标准位时间中断模式,以位时间定义从从节点接收或发送数据的过程。
从节点按照上述的位操作方法接收PID字段并转换为字节类型数据,确定下一个数据字段的发送或接收方向,然后根据位操作方法实现数据的发送或接收。
定时器的两种工作模式在查询等待和消息通信过程中交替切换。
消息通信过程完成后,定时器重置为无限长中断模式,等待下一次消息通信过程,如此循环。
。
由于从节点采用不定期查询等待方式与主节点同步,通信成功率不高;但对于数据通信速率和实时性要求不是很高的场合,仍然可以满足要求。
如果单片机具有外部中断能力,则从节点可以不定期查询,利用外部中断来查询主节点发送的消息。
这样,就可以大大提高沟通的成功率。
结论 与增强型微控制器相比,普通微控制器的功能要简单得多,资源也非常有限,但具有价格低廉的优势。
LIN总线的特点是协议简单并且可以用软件实现。
特别适用于数据通信速率不高、控制简单的场合。
如果能够利用普通微控制器有限的资源来实现LIN通信协议,无疑将为低端串行通信领域提供一个很好的选择。
基于普通微控制器的LIN节点必将在生产生活相关应用领域大有作为。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-17
06-17
06-06
06-18
06-18
最新文章
PCBA质检员的日常工作内容
美国法院裁定VoIP不属于电信服务,需征税
雷达嵌入式工控主板如何使用?工控主板故障分析
摩托罗拉在西班牙促销Z8手机
中宇买下了一台三星机型,品牌和规模是合作的主要原因
舰载军用加固计算机热设计
谷歌开始对仍由HTC生产的谷歌手机进行内部测试
英国EE分享LTE发展经验教训,面临终端-语音-回传三大挑战