【芯片测试篇】:LIN总线
文章目录
- 前言
- 1. LIN 总线架构
- 2. 报文帧格式
- 3. 物理层
前言
- 在项目中遇到了用93K与MCU通过LIN总线通信的测试需求,现将LIN总线的理论知识总结如下。
- 本地互连网络 (LIN) 是汽车中采用的一种易于实现的低成本多点通信总线。在大多数应用中,它用作控制器局域网的子总线。
- LIN 总线可以以高效而直接的方式管理汽车中组件和系统之间的通信,因为在这类场合中无需 CAN 的高带宽和多功能性;不过,在多数情况下,LIN 都是 CAN 总线的子总线。
1. LIN 总线架构
- LIN 每个仪表组中都存在两种类型的节点:1个指挥官节点,以及最多 16 个后续响应者节点。指挥官节点负责管理总线与每个响应者之间的通信。
- 微控制器 (Microcontroller) 通过 LIN 协议进行编程,并用于通过串行接口 (SCI) 将通信驱动至收发器 (Transceiver) 。
- 串行通信接口 (SCI) 已经在大多数 LIN 应用中取代了 UART,一个 LIN 报文由多个 SCI 帧组成,而一个 SCI 帧是:开始位,然后是最低有效位至最高有效位,然后是停止位。
- LIN 总线传输只需一根线,并且采用较慢的通信速度 (比如:19200 bps)。
- 指挥官/响应者原理:指挥官节点负责控制总线上的所有通信,并包含要发送的指挥官和响应者任务。响应者节点无法互相通信,仅包含响应者任务,并只有在报文针对的是自己时,才会响应指挥官,有以下两种通信情况:
- 指挥官以报头(帧开头)形式将请求发送到指定的响应者,然后对应的响应者以响应帧形式响应指挥官。
- 指挥官向响应者发送报头和响应帧,而响应者只会侦听,但不作出响应。
2. 报文帧格式
- 每个 LIN 报文都采用特定的结构:第一部分是令牌,第二部分是数据。
- 令牌始终通过指挥官任务发送,并分为同步中断、同步域和受保护标识符 (PID)。
- 同步中断和同步域用于将 LIN 总线上的所有响应者与指挥官的时序进行同步,同步中断位至少需要 13 个 bit ,然后跟1 个定界位 (DEL) ;同步域包含10 个位(1 个开始位、8 个同步位和 1 个停止位),同步位数据一般发送 0x55。
- PID 用于定义哪个响应者将响应、接收或忽略所发送的报文头,标识符位包含 10 个 bit(1 个开始位、6 个标识符位、2 个奇偶校验位和 1 个停止位)。
- 报文的数据部分通过响应者任务发送,而响应者任务可由指挥者或响应者节点发送,具体取决于 PID“指令”,。响应分为多个数据字节(最多 8 个)和一个校验和。
- 响应总共包含每个数据字节各 10 位(1 个开始位、8 个数据位和 1 个停止位,最多 8 个数据字节)以及 10 个校验和位(1 个开始位、8 个校验和解位以及 1 个停止位)。
3. 物理层
- LIN 收发器将来自微控制器的位逻辑转换到更高的电压电平并通过总线传输,LIN 收发器的 TXD(发送)和 RXD(接收)通过电压转换促进总线的进出通信,其中电压转换发生在信号通过收发器时。
- TXD 连接到微控制器,负责发送并在 LIN 总线上广播报文。
- RXD 会监测总线并将 LIN 总线上的报文转换为微控制器可以解析的电压电平,然后响应总线上发生的通信。
- TXD 和 RXD 的典型电压电平是大多数微控制器的典型电平:3.3V 和 5V。LIN 总线和 LIN 收发器通常采用 9V 至 18V 范围内的电压工作,但有些器件最高可以采用 30V 电压。汽车系统通常采用 12V 电池,但有些大型汽车最高会采用 24V 电池。
- 当收发器的 TXD 控制处于关闭状态时,上拉电阻确保总线上的电压电平达到或接近电池电压电平,也就是“隐性”状态;在收发器被激活且 TXD 控制晶体管导通后,总线会驱动为低电平,接近接地电平,并且高电平状态会被覆盖,也就是“显性”状态。
- 电压阈值:
- 对于显性脉冲(低电平),发送器必须将电压电平向下驱动至电池电压电平的 20%,而接收器将在其终端电压电平达到 40% 时解析显性位。对于隐性脉冲(高电平),发送器必须将电压驱动至电池电压的 80%,而接收器会在总线上的电压电平达到 60% 时解析隐性位。