响应器节点可计算当前波特率,方法是测量同步字节中每个上升沿的位时间 (Tbit),上升沿的距离为 1、3、5、7 和 STOP 位时间,如下图所示。
在自动波特率检测中,要计算同步域位时序,可在 MSPM0/UNICOMM 上使用以下寄存器:
- 在检测到有效的中断域后,将 LIN 计数器初始化为 0 (LINCNT = 0)。
- 在 RX 上升沿启用中断 (CPU_INT.IMASK.RXPE = 1)
- 设置 LIN 计数控制 (LINCTL) 寄存器
- 在 RX 下降沿启用 LIN 计数器清零 (LINCTL.ZERONE = 1)
- 当 RX 上的信号为低电平时启用计数 (LINCTL.CNTRXLOW = 1)
- 在 RX 上升沿启用 LIN 计数器捕捉 (LINCTL.LINC1CAP = 1)
- 启用 LIN 计数器 (LINCTL.CTRENA = 1)
在同步域期间,在 RX 线的每个上升沿执行的操作如下。
- LIN 计数器在每个 RX 下降沿复位为 0,并在 RX 为低电平时在 Tbit 持续时间内开始计数。
- LINCNT 值将由 LINC1 寄存器在每个 RX 上升沿捕获。
- 在五次迭代中触发 RX 上升沿中断 (RXPE)。
- 在每次 RX 上升沿中断服务例程 (ISR) 迭代中,都会读取 LINC1 捕获寄存器。捕获的值表示 Tbit 时间,因为 LIN 计数器配置为仅在 RX 为低电平时计数。