LIN总线和K-LINE和L-LINE有何区别

LIN总线和K-LINE和L-LINE有何区别,第1张

K-Lin和L-Line都是总线的一种,都可以通过这种总线实现单片机与电脑的连接,从而作为烧录程序、debug的方式之一。

1信号线及信号

CAN总线以CAN一H和CAN一L两条信号线 (双绞线)工作,舒适CAN总线两条线的电平分别约为0V和5V(隐性时)。

LIN总线只以一条相当于CAN一忱如的信号线工作,隐性时电平接近电瓶电压,并随之浮动;显性时电平接近地电平。使用0·35mmz导线,颜色为紫底白线。 

2组件

CAN总线工作时,电子单元中除了需要相对复杂的收发器外,通常还需要用专门的协议控制器。

LIN总线单元中的收发器较简单,而且由于协议简单,通常不需要专门的协议控制器。

3传输速率

CAN总线的位速率较高,在汽车中使用时通常为5OOkb/s,最低的也达到1OOkb/s。

LIN总线的最高位速率为2Okb/s,通常使用1920Ob/s或9600b/s的速率。

4系统结构

CAN总线为多主机系统,即接人总线的任一电子单元都可通过总线仲裁来获取总线控制权,并向总线系统中发送信息,单元在发出完整的ID时即为主机。

CAN总线使用11位 ID(甚至更多),在一个子系统中可有较多的单元。

LIN总线为单主机多从机系统,每一子系统中有且只有一个主机,所有的信息传送都 由主机控制,从机必须等待主机发出了与它对应的ID后才能发送信息。

LIN总线使用6位 ID,在一个子系统中只能有较少的单元。

5可靠性。

CAN总线采用可靠性很高的CRC校验。

LIN总线采用可靠性相对较差的带进位的和校验。

6成本

CAN总线能用于各种信息传送的场合,但成本较高,工艺性相对差些。

LIN总线只能用于对速率及可靠性要求不是很高的场合,如舒适系统或某些子系统等, 优点是成本低,工艺性好。

扩展资料:

LIN总线协议:

LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。

LIN目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。

LIN总线采用的是单线传输形式,应用了单主机多从机的概念,总线电平一般为12V,传输速率最高限制为20kbps。由于物理层的限制,一个LIN网络最多可以连接16个节点。

LIN报文帧包括帧头(hearder)与应答(response)两部分。主机负责发送至帧头;从机负责接收帧头并作出解析,然后决定是发送应答,还是接收应答或不回复。

LIN总线根据帧ID号的不同,把报文分为信号携带帧、诊断帧、保留帧。

参考资料:

百度百科-Lin入门书

什么是LIN总线

LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。

CAN总线和LIN的区别

LIN报文帧包括帧头(hearder)与应答(response)两部分。主机负责发送至帧头;从机负责接收帧头并作出解析,然后决定是发送应答,还是接收应答或不回复。

帧头结构包括同步间隔段、同步段、PID段(受保护ID)段,应答部分包括数据段与效验和段。其中值“0”为显性电平、“1”为隐性电平,这点与CAN总线相类似。在总线上实行“线-与”:当总线有至少一个节点发送显性电平时,总线呈现显性电平;所有节点均发送隐性电平或者不发送信息时,总线呈隐性电平,即显性电平起着主导作用。

(1)同步间隔段 (表示一个帧的开始,至少有13位显性电平)

同步间隔段至少是由13位的显性电平组成,由于帧中的所有间隙或者总线空闲时总线均保持隐性电平状态。所以同步间隔段可以标志一个帧的开始。其中同步间隔段的间隔符至少为1位隐性电平。

LIN同步以下降沿为判断标志,采用字节0x55(01010101b)进行同步。在从机节点上可以不采用高精度的时钟,由此带来的偏差,需要通过同步段来进行调整。

LIN总线根据帧ID号的不同,把报文分为信号携带帧、诊断帧、保留帧。

PS:从机应答帧是一个完整的帧,与帧结构中的“应答”不同!

(4)数据段 (存放数据)

数据段可以包含1-8个字节,其中包含有两种数据类型,信号(singal)和诊断消息(diagnostic messages)。信号由信号携带帧传递,诊断消息由诊断帧传递。

协议中并没有规定哪一部分显示数据长度码的信息(这点与CAN总线不同),数据的内容与长度均是由系统设计者根据帧ID事先约定好的。

总线上的数据是以广播形式发出,任何节点均可以收到,但并非对每个节点有用(与CAN相同)。具体到发布与接听是由哪个节点进行完成这个取决于应用层的软件配置,一般情况下,对于一个帧中的应答,总线上只存在一个发布节点,否则就会出现错误。事件触发帧例外,可能出现0,1,多个发布节点。

5)效验和段 (对帧的传输内容进行校验,包含数据段字节和受保护ID)

效验和段是为了对帧传输内容进行效验。效验分为标准型效验与增强型效验。采用标准型还是增强型是由主机节点管理,发布节点和收听节点根据帧ID来判断采用哪种效验和。

(1)⭐无条件帧

无条件帧是具有单一发布节点的,无论信号是否发生变化,帧头均会被无条件应答的帧。

如上图中帧ID=0x30应答部分的发布节点为从机节点1,收听节点为主机节点,应用在从机节点向主机节点报告自身状态;帧ID=0x31中,应答部分为主机节点,收听部分为从机节点,应用在主机节点向从机节点发送消息;帧ID=0x32中应答部分的发送节点为从机节点2,收听节点为从机节点1,应用与从机节点之间的通信。

(2)事件触发帧

事件触发帧是主机节点在一个帧间隙中查询各从机节点的信号是否发生变化时使用的帧。当存在多个发布节点时,通过冲突解决进度表来解决冲突。

当从机节点信号发生变化的频率较低的时候,主机任务一次次地查询各个节点信息会占用一定的带宽。为了减小带宽的占用,引入了事件触发帧的概念。其主要原理就是:当从机节点信息状态没有发生变化的时候,从机节点可以不应答主机发出的帧头;当有多个节点信息同时发生变化的时候,同时应答事件触发帧头会造成总线的冲突。当主机节点检测到冲突时,便会查询冲突解决进度表来依次向各个节点发送无条件帧(无条件帧只有能1个节点应答)来确定从机节点的信息状态。

与事件触发帧关联的多个无条件帧需要满足以下5个条件:

★数据段所包含的数据字节数等长

★使用相同的效验与类型

★数据段的第一个字节为该无条件帧的受保护ID,这样才能够知道应答是哪个关联的无条件帧发送出来的

★由不同的从机节点发布

★不能与时间触发帧处于同一个进度表中

(3)偶发帧

偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过预先设定的的优先级来仲裁。

与事件触发帧类似,偶发帧也定义了一组无条件帧。规定偶发帧只有由主机节点发布。偶发帧的传输可能出现三种情况:1)当关联的无条件帧没有信号发生变化,这是主机连帧头也不需要发送。2)当关联的一个无条件帧信号发生变化则发送该帧。3)当有多个无条件帧发生信号变化时,则按照事先规定要的优先级依次发送。

(4)⭐诊断帧

诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断。主机请求帧ID=0x3c,应答部分的发布节点为主机节点;从机应答帧ID=0x3d,应答部分的发布节点为从机节点。数据段规定为8个字节,一律采用标准效验和。

(5)保留帧

保留帧的ID=0x3e与0x3f,为将来扩张需求用。

进度表

进度表是帧的调度表,规定了总线上帧的传输次序以及传输时间。进度表位于主机节点,主机任务根据应用程需要进行调度。进度表可以有多个,一般情况下,轮到某个进度表执行的时候,从该进度表的入口处开始执行,到进度表的最后一个帧时,如果没有新的进度表启动则返回到当前进度表的第一个帧开始执行;也有可能在执行到某个进度表时发生中断,跳到另一个进度表后再返回,如事件触发帧就是一个典型的例子。

1进入你的内核源码文档,创建一个DoneLin_Driver文件夹来存放你的驱动,于是文件夹路径:drivers/DoneLin_Driver/:

2复制你的范例驱动到刚刚建立的DoneLin_Driver文件夹中,我的范例名字叫global_mem_twoc:

3在DoneLin_Driver文件夹中建立两个新文本文件:Kconfig 和 Makefile

4修改DoneLin_Driver文件夹下的Kconfig文件,输入以下内容:

menu "DoneLin-driver "

comment "global_mem_two-driver "

config GLOBAL_MEM_TWO tristate "global_mem_two DriTst" help this is global mem 2 test programming

endmenu

5接着修改DoneLin_Driver的另一个文件Makefile,输入以下内容:

obj-$(CONFIG_GLOBAL_MEM_TWO) += global_mem_twoo

6修改上一层目录(Driver目录)中的Kconfig文件,声明自己的源代码:在"menu "Device drivers""下面加入如下内容:

source "drivers/DoneLin_Driver/Kconfig"##add my tst driver module

7修改arch/arm/Kconfig

同样,跟在driver/Kconfig一样,在"menu device drivers"下面加入同样的语句:

source "drivers/DoneLin_Driver/Kconfig"

就是说:在arch/arm/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/DoneLin_Driver/Kconfig"

在drivers/Kconfig menu "Device Drivers" endmenu之间添加source "drivers/hello/Kconfig"(不知为什么arch/arm/Kconfig中竟然含有Drivers里Kconfig内容的一个复本,实验证明只对drivers/Kconfig中修改内容无效。)

8修改Drivers目录下的Makefile,在如图位置,加入:

obj-$(CONFIG_GLOBAL_MEM_TWO) += DoneLin_Driver/#ADD FOR TEST add_for_test add for test测试的驱动

8都修改好,保存好之后,回到linux内核根目录,make menuconfig,奇迹出现了,我自己的linux驱动程序出现在内核的device drivers选项里面了:

选择global_mem_tow_DriTst为m,表示编译成模块,编译成ko文件

然后,保存退出,make, make zImage, make modules即可生成新的内核和新的modules,

完成了,

以上就是关于LIN总线和K-LINE和L-LINE有何区别全部的内容,包括:LIN总线和K-LINE和L-LINE有何区别、LIN总线基础、如何将linux驱动程序添加到内核中 / 蓝讯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9529759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存