ZHDA035 January   2026 MSPM0G3519

 

  1.   1
  2.   摘要
  3.   商标
  4. 1LIN 协议简介
    1. 1.1 中断域
    2. 1.2 SYNC 字节域
    3. 1.3 PID 域
    4. 1.4 数据
    5. 1.5 校验和
  5. 2初始波特率设置
  6. 3LIN 协议 MSPM0 UART/UNICOMM UART 的实现
    1. 3.1 LIN 发送
      1. 3.1.1 中断域
      2. 3.1.2 同步域
      3. 3.1.3 PID 域
      4. 3.1.4 数据域
      5. 3.1.5 校验和
    2. 3.2 LIN 接收
      1. 3.2.1 中断域检测
      2. 3.2.2 同步域验证
    3. 3.3 LIN 收发器
  7. 4自动波特率检测
    1. 4.1 使用 MSPM0 UART/UNICOMM UART 测量位宽的过程
    2. 4.2 计算正确的波特率
      1. 4.2.1 响应器节点处的晶体误差
  8. 5同步后波特率偏差
  9. 6参考资料

校验和

LIN 协议用取反校验和计算来实现 8 位错误检测机制。校验和计算包含连续字节求和,对于超过 0xFF 的值、进位管理、然后对最终总和进行一补码运算。

指定了两种校验和方法:

  1. 经典校验和:计算仅包含数据字节
  2. 增强校验和:计算包含同数据字节连接的受保护标识符 (PID)

校验和算法:

  • 顺序字节累积
  • 如果总和超过 0xFF,则执行加法
  • 结果反转(一补码)

实现示例:

受保护标识符:0x0D

数据域: [0xAB, 0xBC, 0xCD, 0xDE, 0xEF]

增强型校验和计算序列:

第 1 步:0x0D

初始值为 = 0x0D

第 2 步:添加 0xAB

0x0D + 0xAB = 0xB8

(由于总和小于 256,因此无需减去 255)

第 3 步:添加 0xBC

0xB8 + 0xBC = 0x174

当总和 ≥ 256 (0x100) 时,减去 255 (0xFF)

0x174 - 0xFF = 0x75

第 4 步:添加 0xCD

0x75 + 0xCD = 0x142

当 sum ≥ 256 时,减去 255

0x142 - 0xFF = 0x43

第 5 步:添加 0xDE

0x43 + 0xDE = 0x121

当 sum ≥ 256 时,减去 255

0x121 - 0xFF = 0x22

第 6 步:添加 0xEF

0x22 + 0xEF = 0x111

当 sum ≥ 256 时,减去 255

0x111 - 0xFF = 0x12

最后步骤:对结果取反

校验和 = 0xFF - 0x12 = 0xED

 校验和传输图 3-4 校验和传输

下面随附的代码部分演示了计算及发送 LIN 校验和的过程。

 传输校验和的软件序列图 3-5 传输校验和的软件序列