LIN总线全称LINLocal Interconnect Net本地连接网络连接方式1根信号线1个主节点最多16个从节点主节点通常既可以接收CAN总线信号也可以接收LIN总线信号从节点可以根据主节点的请求发送信号特点速度不高容错率低速度1-20kbit/s长度最多40米数据长度可变248字节错误检查校验配置数据内容包含工作电压 12V没有信号优先级的概念总线仲裁只有按顺序发送数据应用场景汽车车窗雨刮器空调座椅控制等设备报文格式同步间隔段作用提示整个总线上的设备告诉它们我要发消息了。方法常见连续131或者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位为校验位只能是0123校验位作用保证报文传输正确计算公式p0 ID0 xor ID1 xor ID2 xor ID4 p1 NOT( ID1 xor ID3 xor ID4 xor ID5)从节点读取受保护段数据后分析校验位是否正确以判断报文是否正确。------------上述部分一定是主节点发送------------接下来的部分是主节点或从节点发送帧应答长度248字节校验和段作用对帧传输内容进行校验类型标准型校验增强型校验标准型校验校验数据段各字节计算公式如下忽略所有的进位Checksum_Classic ~(Data_0 Data_1 ... Data_7)比如现在有8个字节的数据02 07 00 00 00 00 00 00根据行数公式计算结果为F6如果存在进位则需要进行自动回卷即当和超过0xFF即255时仅保留低8位并加1处理进位无需额外的进位检查。比如现在有数据如下80 80相加后进行自动回卷其值为0x01取反后的校验和结果为0xFE增强型校验数据段各字节PID计算公式如下忽略所有的进位Checksum_Enhanced ~(Protected_ID Data_0 Data_1 ... Data_n)假设 PID 0x30帧 ID 0x30 经过奇偶校验后得到的值数据为 2 字节0x4A、0x55求和带进位回卷sum 0x30 0x4A 0x55 0xCF无进位sum 0xCF。取反checksum ~0xCF 0x30校验和 0x30进位的例子假设 PID 0x80数据为0x80,0x80求和带进位回卷0x80 0x80 0x80 0x180低 8 位 0x80进位 0x01回卷0x80 0x01 0x81取反~0x81 0x7E校验和 0x7E帧分类及用途无条件帧最常用主节点发送报文头给指定从节点请求信息从节点一定会应答上图是无条件帧的三种情况。这里要说明其核心思想是想要从机做什么则主机发送什么报文例如想要从机1发送报文给主机那么主机1就发送ID0x30的PID想要主机1发送报文给所有主机因为主机即可以发送也可以接收所以主机可以看作masterslave那么发送ID0x31的PID想要从机2向从机1发送报文那么主机发送ID0x32的PID到LIN总线事件触发帧主机不挨个点名而是问“谁有情况”有情况数据更新的从机再自己站出来回答如果有且仅有一个从机有数据更新它就发送。响应数据的第一个字节是它自己的保护IDPID这样主机就知道是谁汇报的如果多个从机同时有数据更新它们会同时发送响应导致总线冲突。当主机检测到冲突时它会暂停当前调度表并跳转到“冲突解决调度表”。这个特殊调度表会依次单独询问所有相关的从机保证不遗漏任何重要数据。偶发帧实际用的很少诊断帧主节点向从节点发送0x3C的PID数据段带上请求让从节点进行某种诊断。紧接着主节点向从节点发送0x3d的PID让从节点将诊断数据发回主节点。