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参考资料

使用 MSPM0 UART/UNICOMM UART 测量位宽的过程

响应器节点可计算当前波特率,方法是测量同步字节中每个上升沿的位时间 (Tbit),上升沿的距离为 1、3、5、7 和 STOP 位时间,如下图所示。

在自动波特率检测中,要计算同步域位时序,可在 MSPM0/UNICOMM 上使用以下寄存器:

  1. 在检测到有效的中断域后,将 LIN 计数器初始化为 0 (LINCNT = 0)。
  2. 在 RX 上升沿启用中断 (CPU_INT.IMASK.RXPE = 1)
  3. 设置 LIN 计数控制 (LINCTL) 寄存器
    1. 在 RX 下降沿启用 LIN 计数器清零 (LINCTL.ZERONE = 1)
    2. 当 RX 上的信号为低电平时启用计数 (LINCTL.CNTRXLOW = 1)
    3. 在 RX 上升沿启用 LIN 计数器捕捉 (LINCTL.LINC1CAP = 1)
    4. 启用 LIN 计数器 (LINCTL.CTRENA = 1)

 LIN 同步域验证图 4-1 LIN 同步域验证

在同步域期间,在 RX 线的每个上升沿执行的操作如下。

  1. LIN 计数器在每个 RX 下降沿复位为 0,并在 RX 为低电平时在 Tbit 持续时间内开始计数。
  2. LINCNT 值将由 LINC1 寄存器在每个 RX 上升沿捕获。
  3. 在五次迭代中触发 RX 上升沿中断 (RXPE)。
    • 在每次 RX 上升沿中断服务例程 (ISR) 迭代中,都会读取 LINC1 捕获寄存器。捕获的值表示 Tbit 时间,因为 LIN 计数器配置为仅在 RX 为低电平时计数。