有了CAN为什么还会有LIN,CAN和LIN的区别,LIN的优势在哪?
一些关于LIN总线基础的内容,把其中的关键点提取了出来,在这里分享给大家。在这里你可能要问“不都有CAN总线了吗?这个LIN总线又是从哪里来的?”其实理由很简单,就是CAN总线太贵啦!处处都用CAN总线的话,那整车的总线架构成本将会变得很高!在一些比如车身电子配件的地方(如车窗、后视镜、大灯、车锁等),我们不需要报文像CAN总线上传输的那样“高速”!各大厂商一拍脑门就研究了这个LIN总线!本文关注点:有了CAN为什么还会有LIN,CAN和LIN的区别,LIN的优势在哪?
1. 什么是LIN总线?LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。其目标定位于车身网络模块节点间的低端通信,主要用于智能传感器和执行器的串行通信,而这正是CAN总线的带宽和功能所不要求的部分。



- 调度总线上帧的传输次序
- 监测数据,处理错误
- 作为标准时钟参考(不是异步通信?)
- 接收从机节点发出的总线唤醒命令
- 发送应答
- 接收应答
- 既不接收也不应答
- 网络由一个主节点与若干个从节点构成
- 使用LIN总线可以大幅度削减成本(CAN和Lin都需要收发器,但是Lin属于单线制在线束上节省)
- 传输具有确定性,传播时间可以提前计算
- LIN具有可预测的EMC(电磁兼容性)性能,为了限制EMC的强度,LIN协议规定最大传输速率为20kbps
- LIN总线提供信号的配置、处理、识别和诊断功能(这些都是UART不具备的,可LIN是怎么实现的呢?)






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

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



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

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

数据段所包含的数据字节数等长 使用相同的效验与类型 数据段的第一个字节为该无条件帧的受保护ID,这样才能够知道应答是哪个关联的无条件帧发送出来的 由不同的从机节点发布 不能与时间触发帧处于同一个进度表中
5.2.1.偶发帧偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过预先设定的的优先级来仲裁。与事件触发帧类似,偶发帧也定义了一组无条件帧。规定偶发帧只有由主机节点发布。
偶发帧的传输可能出现三种情况:
- 当关联的无条件帧没有信号发生变化,这是主机连帧头也不需要发送。
- 当关联的一个无条件帧信号发生变化则发送该帧。
- 当有多个无条件帧发生信号变化时,则按照事先规定要的优先级依次发送。

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




白话 LIN总线
总线原理:
物理上就一根线,关联节点都接上,有且仅有一个主设备,N多从设备,每个节点要通信的内容都事先编号号。
这就好比大家开晚会,话筒就一个,主持人一个,N个嘉宾,每人的话题都有一个编号。

晚会开始前,大家睡觉的睡觉,闲的闲
1 主持人,把话筒对着大鼓,敲-停-, 敲-停-, … 敲-停-
这样大家都被吵醒了,晚会开始了
晚会都是谈话内容,都是下面步骤的重复
t1 主持人把话筒同音闭了一会,--LIN总线的Break
t2 主持人试了试话题,呼呼呼呼--LIN总线的同期
t3 主持人说,下面是由 PID编号的人讲话--LIN总线的PID
t4 有PID的人,就开始说了 D0,D1,D2,D3,D4,D5,D6,D7 --LIN总线的数据
t5 有PID的人,接着说了就这样了--LIN总线的 CRC
就这样重复了多次之后,主持人
e1 主持人把话筒同音闭了一会,--LIN总线的Break
e2 主持人试了试话题,呼呼呼呼--LIN总线的同期
e3 主持人说,下面是由 PID编号是睡眠的人讲话(就他自己)--LIN总线的PID
e4 有PID的人,就开始说了 Go to sleep --LIN总线的数据,最多8个Byte
e5 有PID的人,接着说了就这样了--LIN总线的 CRC
就这样,晚会结束了,大家睡觉的睡觉 休息的休息
搞笑的结束了,稍微来点关键词
. 物理上就一根线,多节点送信,又没有冲突检测,怎么办,主设备调度啊
. 速度怎么样,和CAN相比,十几kbps不算高,不过连接上的设备就那么大信息量,正好啦
. 价额怎么样,便宜啊,一个物理tranceiver,一个带UART的CPU,再来的点软件,搞定了
. 安全系数怎么样,PID带校验,数据带CRC校验,能发现错误,报告
. 扩展性怎么样,用两个特定的PID,做数据链路层,创送上层的大包TP层,
TP层上面在支持个诊断功能,能做些其他事情了
. 各版本兼容性怎么样,主设备版本高,就能管理协调好
反之,从设备版本高,有些浪费
本文转自网络。
附:
一分钟带你了解奥迪LIN总线
https://new.qq.com/omn/20200320/20200320A0AL4Z00