Lin协议介绍

LIN总线

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

总线简介

Lin总线是一主多从的单总线,总线电平12V,位传输速率最高20kbps,最大连接数为16个节点,其中有一个主机节点,其它都为从机节点,主机节点包含主机任务和从机任务,而从节点只有从机任务。

在Lin协议中,信息是以帧为基本单元进行传输的,帧结构包含帧头和应答两个部分,值得注意的是,帧头和应答组成一个完整的帧结构,但是帧头和应答并不一定是同一个节点发出,帧头是由主机任务发出,而主机任务只有主节点有,所以帧头也可以说是只能由主节点发出,应答是由从机任务在收到帧头,对帧头进行解析后决定是否发送应答或接收应答,还是不作反应,所以应答由从机任务给出:

这种传输机制反映在单总线上就是总是一个完整的帧结构,但是对于各节点应答的接收发送则是根据主机任务类型而定:

主节点:

发送帧头+发送应答数据

发送帧头+接收应答数据

(若帧头发出后无响应则会触发报警机制)

从节点:

接收帧头+接收应答数据

接收帧头+发送应答数据

帧头包含同步间隔段,同步段,受保护ID段,应答包含数据段,校验和段,其共同组成了一个完整的帧。

帧结构

同步间隔段用来标识一个帧的起始,其长度大于等于13个显性电平("0"为显性电平,"1"为隐性电平)。

同步段用来给从节点进行统一通信速率的,不同节点之间可能存在时钟偏差,同步段是以主节点自身时钟为基准,通过UART格式发送的字节0x55,从节点可以根据该字节对自身位速率进行调整。

受保护 ID 段的前 6 位叫作帧ID,加上两个奇偶校验位后称作受保护 ID。 帧 ID 的范围在 0x00~0x3F 之间,共 64 个。帧 ID 标识了帧的类别和目的地。从机任务对于帧头作出的反应(接收/发送/忽略应答部分)都是依据帧 ID 判断的。如果帧 ID 传输错误,将会导致信号无法正确到达目的地,因此引入奇偶校验位。 这个帧ID在不同协议版本有所区别,1.2版本的ID4和ID5用来标识应答数据长度,后面的版本可能是为了扩展ID范围将这个功能取消了。

数据段是在应答中包含的,数据段长度为1~8字节,由设计者提前根据帧ID事先约定。

校验和段也是在应答中包含,是对一帧数据内容所做的校验。

协议版本不同,所使用到的校验和标准有所区别:

帧类型

协议根据帧ID划分了不同类型的帧,不同类型的帧包含的信息和作用也不相同:

无条件帧即当帧头发送到总线时,必须有从机任务对该帧头进行应答,当帧头发送到总线,此时从机任务必须对此帧头做出应答,从机任务可以是主节点的,也可以是从节点的。

事件触发帧是减少带宽占用引入的一个概念,当从节点信号变化频率较低时,如果主节点每次想要获取从节点状态时,采用轮询的方式会占用相当一部分带宽,所以采用事件触发帧,事件触发帧帧头发出后,当从机节点状态无变化时不作应答,但是当多个节点状态变化并进行应答后,主机节点则需要轮询各个节点状态。

偶发帧是主机节点自身状态变化后向总线启动发送的帧,偶发帧帧头和应答都由主节点进行发布。

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

保留帧的帧 ID 为 0x3E 和 0x3F,为将来扩展用。

相关推荐
m0_377108142 小时前
51单片机串口
单片机·嵌入式硬件·51单片机
Deitymoon2 小时前
STM32——I2C协议
stm32·单片机·嵌入式硬件
YangWeiminPHD2 小时前
金水32051编译器:人与单片机CPU之间的桥梁
c语言·单片机·编译器
YONYON-R&D2 小时前
KSZ8863RLLI 与STM32F407接口
单片机·嵌入式硬件
Psyduck_ing3 小时前
从MCU到Linux开发的思维破壁
linux·网络·单片机
LingLong_roar3 小时前
使用 ESP8266 + Arduino IDE + ST7789 240*240 OLED 显示屏实现显示“Hello World!”
单片机·嵌入式硬件
星夜夏空993 小时前
STM32单片机学习(1)——keil5安装以及环境部署
stm32·单片机·学习
kaikaile19953 小时前
STM32 + ADS1256 24位高精度ADC驱动测试程序
stm32·单片机·嵌入式硬件
搁浅小泽4 小时前
PCBA生产工艺流程
单片机·嵌入式硬件·可靠性工程师