LIN总线

LIN总线

全称

LIN:Local Interconnect Net

本地连接网络

连接方式

1根信号线

1个主节点,最多16个从节点

主节点:通常既可以接收CAN总线信号,也可以接收LIN总线信号

从节点:可以根据主节点的请求,发送信号

特点

  1. 速度不高,容错率低

    速度:1-20kbit/s

    长度:最多40米

  2. 数据长度可变

    2,4,8字节

  3. 错误检查,校验,配置

    数据内容包含

  4. 工作电压 12V

  5. 没有信号优先级的概念(总线仲裁),只有按顺序发送数据

应用场景

汽车车窗,雨刮器,空调,座椅控制等设备

报文格式

同步间隔段

作用:提示整个总线上的设备,告诉它们我要发消息了。

方法:常见连续13+1或者20个0表示

注意

复制代码
在LIN总线中,0用低电平0V表示,1用高电平12V表示。整个总线上的显性电平是0V,如果同时遇到12V和0V,则以0V表示

同步段

由于时序等原因,不同设备间的信号读取可能不同步,因此设置同步段使得各设备之间实现同步读取

通常同不断使用0x55表示,即二进制01010101。LIN主节点发送同步段信号是从低位向高位发送,即首次应发送1.

这里注意,对照上图中发现第一位是0,这是因为同步段发送的第一位是起始位 ,这一位不算。必须从第二个开始计算。同时,最后一位也不算,同步段将其定义为停止位

受保护段(PID)

全称:Protected ID

长度:8位

组成:6位ID和2位校验

作用:告诉总线上的设备,现在要干什么

ID定义
ID值 帧类型
0x00~0x3B 信号携带帧:无条件帧,事件触发帧,偶发帧
0x3C 诊断帧:主机请求帧
0x3D 诊断帧:从机应答帧
0x3E 用户定义帧
0x3F 保留帧

其中,低4位组成了设备在总线中的ID值,6位中的高2位为校验位,只能是0,1,2,3

校验位

作用:保证报文传输正确

计算公式:

assembly 复制代码
p0 = ID0 xor ID1 xor ID2 xor ID4
p1 = NOT( ID1 xor ID3 xor ID4 xor ID5)

从节点读取受保护段数据后分析校验位是否正确以判断报文是否正确。

------------上述部分一定是主节点发送------------

接下来的部分是主节点或从节点发送

帧应答

长度:2,4,8字节

校验和段

作用:对帧传输内容进行校验

类型:标准型校验,增强型校验

  • 标准型校验:校验数据段各字节,计算公式如下,忽略所有的进位
mathematica 复制代码
Checksum_Classic = ~(Data_0 + Data_1 + ... + Data_7)

比如,现在有8个字节的数据

bash 复制代码
02 07 00 00 00 00 00 00

根据行数公式计算结果为F6

如果存在进位,则需要进行自动回卷 ,即当和超过0xFF(即255)时,仅保留 低8位加1(处理进位),无需额外的进位检查。

比如,现在有数据如下

mathematica 复制代码
80 80

相加后进行自动回卷,其值为0x01,取反后的校验和结果为0xFE

  • 增强型校验:数据段各字节+PID,计算公式如下,忽略所有的进位
mathematica 复制代码
Checksum_Enhanced = ~(Protected_ID + Data_0 + Data_1 + ... + Data_n)

假设 PID = 0x30(帧 ID 0x30 经过奇偶校验后得到的值)

数据为 2 字节:0x4A0x55

  1. 求和(带进位回卷)
    sum = 0x30 + 0x4A + 0x55 = 0xCF
    无进位,sum = 0xCF
  2. 取反
    checksum = ~0xCF = 0x30

校验和 = 0x30

进位的例子

假设 PID = 0x80

数据为 0x80, 0x80

  1. 求和(带进位回卷)

0x80 + 0x80 + 0x80 = 0x180

低 8 位 = 0x80,进位 = 0x01

回卷:0x80 + 0x01 = 0x81

  1. 取反

~0x81 = 0x7E
校验和 = 0x7E

帧分类及用途

无条件帧(最常用)

主节点发送报文头给指定从节点请求信息,从节点一定会应答

上图是无条件帧的三种情况。这里要说明,其核心思想是想要从机做什么,则主机发送什么报文

例如:

想要从机1发送报文给主机,那么主机1就发送ID=0x30的PID

想要主机1发送报文给所有主机,因为主机即可以发送也可以接收,所以主机可以看作master+slave,那么发送ID=0x31的PID

想要从机2向从机1发送报文,那么主机发送ID=0x32的PID到LIN总线

事件触发帧

主机不挨个点名,而是问"谁有情况?",有情况(数据更新)的从机再自己站出来回答

如果有且仅有一个从机有数据更新,它就发送。响应数据的第一个字节 是它自己的保护ID(PID),这样主机就知道是谁汇报的

如果多个从机同时有数据更新,它们会同时发送响应,导致总线冲突 。当主机检测到冲突时,它会暂停当前调度表,并跳转到"冲突解决调度表"。这个特殊调度表会依次单独询问所有相关的从机,保证不遗漏任何重要数据。

偶发帧

实际用的很少

诊断帧

主节点向从节点发送0x3CPID,数据段带上请求让从节点进行某种诊断。紧接着主节点向从节点发送0x3dPID,让从节点将诊断数据发回主节点。

相关推荐
不脱发的程序猿12 小时前
AI Coding时上下文不够用咋办?
单片机·嵌入式硬件·嵌入式
leoFY12314 小时前
SGM3209(圣邦微 高压负压电荷泵)(与TP7660可只修改4脚,7脚即可替换)
单片机·嵌入式硬件
zlinear数据采集卡14 小时前
基准电压电路深度解析:从理论参数到ZLinear采集卡的精准参考实战
c语言·单片机·嵌入式硬件·fpga开发·自动化
下午写HelloWorld14 小时前
GD32F4系列微控制器上电启动流程
单片机·嵌入式硬件
daad77714 小时前
记录一次ardupilot_sitl调试longitude的输入数据流
单片机·嵌入式硬件
搁浅小泽14 小时前
电子负载的作用
单片机·嵌入式硬件
周周记笔记16 小时前
【元器件专题】MOS管上下桥设计详解(死区时间)
单片机·嵌入式硬件
RFID舜识物联网17 小时前
耐高温RFID:让喷涂线从“数据断点”走向“全链贯通”
大数据·人工智能·嵌入式硬件·物联网·汽车
2601_9583529017 小时前
A-59双麦模块实战:打造面对面双人独立拾音与实时翻译系统,全双工无串扰
人工智能·嵌入式硬件·语音识别·回音消除·音频处理模块
天月风沙17 小时前
基于机器视觉的实验室器件仓储系统设计——内蒙古自治区国家级大创——使用指南
嵌入式硬件