LIN 协议层
LIN 帧结构
LIN 实例
用lin调试器的主机读模式发送ID = 0x04 数据内容可以为空,此处发的0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88不会发送到总线上。也就是主机读只发送帧头(13位低电平+0x55+0xC4[PID])。从机返回8个字节0x00 0x10 0x00 0x00 0x00 0x00 0x00 0x00 和一个增强校验和0x2B。 主机写就更简单,主机发送帧头+数据+校验,从机负责解析就行,和串口类似。
LIN 波形
LIN 发送顺序
除了同步间隔段外发送顺序和串口数据一样 发送单个数据是低位先发,发送一个数组是地址小的字节先发,然后依次发完,每个byte都有独立的开始位0、停止位1。所以如果使用8N1格式,那就是发送1个字节需要10bit,而不是8bit。
LIN 实际波形
上述主机读报文在示波器上的波形,波特率19200
LIN 从机唤醒主机
当总线处于休眠状态时,主/从机节点都可以向总线上发送唤醒信号,唤醒信号持续 250μs~5ms。其余节点(除发送唤醒信号以外的节点)以大于 150μs 为阈值判定唤醒信号。每个从机节点必须在唤醒信号显性脉冲的结束处算起 100ms 以内准备接收来自主机的命令(帧头);主机节点也必须被唤醒100ms 之内主机节点发送帧头开始通信。主机节点的同步间隔段也可以充当唤醒信号,由于从机节点需要作初始化处理,因此主机节点所发的这个帧有可能不会被正常接收。如果节点发送出唤醒信号后,在 150ms~250ms 之内没有接收到总线上的任何命令(帧头),则可以重新发送一次唤醒信号。唤醒信号最多可以发送 3 次,3 次之后,必须等待至少 1.5s 之后才可以再次发送唤醒信号。
唤醒信号波形
唤醒信号可以发送一个字节0xF0,这样加上起始位一个就有5个低电平, 波特率19200情况下大约250us,如下图。
唤醒逻辑波形
示波器波形不断唤醒逻辑 150ms间隔发送三次后再间隔1.5s以上发送
|