LIN summary
Lin两种帧:
【1】 信号帧(帧ID范围0x00~0x3B),用于在运行状态传递上层发生的事件,如温度传感器的测量结果等。
【2】 诊断帧(帧ID范围为0x3C~0x3D),具有固定格式,最大长度不超过4095bytes
Frame Type
帧的类型 | 帧ID | |
信号携带帧 | 无条件帧 | 0X00~0X3B |
事件触发帧 | ||
偶发帧 | ||
诊断帧 | 主机请求帧 | 0X3C |
从机应答帧 | 0X3D | |
保留帧 | 0X3E,0X3F | |
无条件帧(Unconditional Frame):单一发布节点,无论信号是否变化,帧头被无条件应答;
事件触发帧(Event Triggered Frame):用来查询各从机节点的信号是否发生变化,当存在多个发布节点时,通过冲突解决进度表来解决冲突(例如查询时有冲突,再进行轮询);
偶发帧(Sporadic Frame):偶发帧是主机节点再同一帧时隙中当自身信号发生变化时向总线启动发送的帧,当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁;
诊断帧(Diagnostic Frame):诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。
- 主机请求帧(Master Request Frame,MRF),帧 ID = 0x3C,应答部分的发布节点为主机节点;
- 从机应答帧(Slave Response Frame, SRF),帧 ID = 0x3D,应答部分的发布节点为从机节点。
- 数据段规定为 8 个字节,一律采用标准型校验和。
保留帧(Reserved Frame):保留帧ID 0x3E与0x3F
总线电平12V,最高速率20kbps
Break Filed(at least 13 bits “0”):
- Master:下限为13bits,上限应保证帧的最大传输时间THeader_Maximum在规定范围内
- Slave:接收break字段并识别
– 当从机节点选择的时钟(精度不高的时钟)在容限范围内(±14%)时,最差情况(时钟最慢)下:(13 - 11.18) / 13= 14%,从机任务按照自身时钟测量到的显性电平不会低于11.18 位,若识别阈值高于11.18 位,那么worst case就会出现主机发送同步间隔,而从机检测不到的情形。由于协议规定在除同步间隔段以外,帧中任何其余部分都不会发送超过9位的显性电平,(10.26 - 9) / 9 = 14%,即是说判断阈值必须大于10.26位,否则可能把帧中其余部分误判作为同步间隔段。综上,识别阈值在【10.26,11.18】之间,取值为11 位显性电平。
– 当从机节点选择的时钟(精度较高的时钟)在容限范围内(±1. 5%)时,按照上面的计算,识别阈值应在9.135 位(由(9.135 - 9) / 9 = 1.5%计算而来)到12.805 位(由(13 – 12.805) / 13 =1.5%计算而来)之间。具体设定阈值会随着所选时钟的精度,取值范围在9.135 位到12.805 位之间浮动。
Break Delimiter(at least 1 bit “1”):
Sync field(55H):
Protected Identifier field(PID):
- ID field(ID+Parity)
- Start bit + ID(6 bits) + Parity bit(2 bits:P0,P1) + Stop bit
- ID range(0x00~0x3F)
- P0=ID0 xor ID1 xor ID2 xor ID4
- P1=^( ID1 xor ID3 xor ID4 xor ID5)
- PID区域不可能全0或全1,因此0X00,0XFF均是错误
Inter-byte space(Header):
Response space:
Response field:
Checksum Field:
- Classic Checksum
- Enhanced Checksum
校验和类型 | 校验对象 | 使用场合 |
---|---|---|
Classic Checksum | 数据段各字节 | 诊断帧,与LIN1.x从机节点通讯 |
Enhanced Checksum | 数据段各字节及PID段 | 与LIN2.x从机节点通讯(诊断帧除外) |
wakeup transmission&reception: Transmission 260us,Reception 130us
Timeout time=[number of data bytes+1]*14[Tbit]
TFrame_Maximum | THeader_Maximum | TResponse_Maximum | ||||||
THeader_Norminal | THeader_Rest | TResponse_Norminal | TResponse_Rest | |||||
同步间隔 (最小值) | 同步间隔段间隔符 (最小值) | 同步段 | PID Field | 40% x THeader_Norminal | 数据段 | 校验和 | 40% x THeader_Norminal | |
时间(Tbit) | 13 | 1 | 10 | 10 | 10 x NData | 10 | ||
进度表
进度表是帧的调度表,规定总线上帧的传输次序以及各帧在总线上的传输时间。进度表位于主机节点 ;一般情况顺序执行,可能在执行某个进度表当中发生中断,执行另一个进度表后再返回 。 进度表除规定了帧 ID 的传输次序外,还规定了帧时隙(Frame Slot)的大小。帧时隙是进度表规定的一个帧的帧头起始到下一个的帧的帧头起始的时间。每个帧的帧时隙都可以不同,一个帧时隙对应了进度表的一个入口。
时基(Time Base)为LIN子网的最小计时单位,通常设定为5ms或10ms。帧时隙必须是时基的整数倍,且起始于时基的开始时刻,切换进度表时要在时隙结束处。
从机任务
节点在任何状态下都能识别出sync段,包括已经检测到序列或是进入帧处理的状态中
网络管理
网络管理主要指休眠与唤醒管理
唤醒
- 当总线处于休眠状态时,主/从机节点都可以向总线上发送唤醒信号,唤醒信号持续 250μs~5ms。其余节点(除发送唤醒信号以外的节点)以大于 150μs 为阈值判定唤醒信号。每个从机节点必须在唤醒信号显性脉冲的结束处算起 100ms 以内准备接收来自主机的命令(帧头);主机节点也必须被唤醒, 100ms 之内主机节点发送帧头开始通信。
- 主机节点的同步间隔段也可以充当唤醒信号,由于从机节点需要作初始化处理,因此主机节点所发的这个帧有可能不会被正常接收。
- 如果节点发送出唤醒信号后,在 150ms~250ms 之内没有接收到总线上的任何命令(帧头),则可以重新发送一次唤醒信号。唤醒信号最多可以发送 3 次, 3 次之后,必须等待至少 1.5s 之后才可以再次发送唤醒信号
休眠
- 指令进入:
– 利用诊断帧中的主机请求帧 0x3C 作休眠命令,要求数据段的第一个字节为 0x00,其余字节为 0xFF。
– 休眠命令由主机节点发出,总线上的从机节点只判断数据段的第一个字节,其余字节忽略。
–从机节点在接收到休眠命令后,不一定要进入低功耗模式, 根据应用层需要设置 。 - 静默进入:当总线静默(没有显性和隐性电平之间的切换)4s~10s 时,节点自动进入休眠状态 。
Chip side Configuration
Data Field configuration
- Response Field Length select[3:0]:0(+checksum) ~8bytes(+checksum)
- Response Field Communication Direction Select: Transmission/Reception
- Checksum Select: Enhanced checksum mode/ Classic checksum mode
- Frame Separate Mode: Separate or not
- Transmission/Reception continuation Select:
Frame Field configuration
Inter-Byte space :0~3bits
Error status
- BER: Bit Error Flag
- PBER: Phsical Bus Error Flag
- FTER: Timeout Error
- Flag FER: Framing Error Flag
- CSER: Checksum Error Flag
- RPER: Response Preparation Error Flag
Slave mode error: Bit error; Timeout error; Framing error; Sync field error; Checksum error; ID parity error; Response preparation error;
Auto baudrate
1bit time=(第7位的下降沿时刻-起始位的下降沿时刻)/8
① 信号通过信号携带帧通信
② 配置服务通过传输层,以单帧的形式通信
③ 识别服务通过传输层,以单帧的形式通信
④ 基于信号的诊断服务
⑤ 诊断传输层,通过传输层通信,需要使用复帧的形式通信
⑥ 用户自定义的诊断
传输层
NAD(Node Address):PDU第一个字节,用来区分不同从机节点的地址
地址范围 | 定义 |
---|---|
0x00 | 用于休眠指令 |
0x01~0x7D | 从机系欸但地址,即NAD |
0x7E | 功能节点地址 |
0x7F | 广播节点地址 |
0x80~0xFF | 用户自定义 |
PCI(Protocol Control Information):PDU第二个字节,包含了单元类型和消息字节长度
类型 | PCI类型[B7 B6 B5 B4] | 附加信息[B3 B2 B1 B0] | Notes |
---|---|---|---|
SF(单帧) | 0’b0000 | length | 附加信息length表示消息字节数加1 |
FF(首帧) | 0‘b001 | length高4位 | 低8位在LEN中表示,最大长度位4095[0xFFF] |
CF(续帧) | 0’b0010 | 帧计数器 | 表示首帧后跟随续帧的编号,第一个续帧编号1,之后累加1,如果超过15,则在第16个续帧时从0重新计数 |
SID(Service Identifier):表示从机节点应完成的服务请求。节点配置服务的SID区间为0xB0~0xB7;诊断服务的SID区间为0x00 ~ 0xAF, 0xB8 ~ 0xFE;
RSID(Response Service Identifier):表示从机节点应答的内容,值是SID+0X40;
应用层
信号处理功能是指应用层可以不经过传输层,直接从协议层获取或修改网络中的信号。这些信号由NCF(Node Capability File,节点性能文件)定义,既可以是工作参数(例如温度、压力的测量值、继电器的开合状态等),也可以是状态标志(例如某信号携带帧的收发状态)
配置功能是指 LIN 的主机节点能自动地给所有逻辑节点选择配置项,消除 NAD 和 PID 分配中存在的冲突,使网络正常工作。 (配置功能是确保各节点协调运作的内部功能,包含分配 NAD、分配 PID 等服务。配置功能通过传输层完成配置服务。 )
- NAD 和 PID 分别与逻辑节点建立了一种映射关系, LIN 规范把 NAD 和 PID 的这样一种组合称为逻辑节点的配置项(Configuration) ;一个逻辑节点可以有一个以上的配置项,但在网络运行期间,每个逻辑节点只能有一个配置项有效。
- LIN产品代码(LIN Product Identification),保存在ROM或NVRAM中
存储格式:
D1 | D2 | D3 | D4 | D5 |
---|---|---|---|---|
厂商ID LSB | 厂商ID MSB | 功能ID LSB | 功能ID MSB | 可变ID |
另外,从机节点还可以有一个序列号,用于识别特殊的节点,大小为4字节。
从机节点配置 | 重启后配置 | 存储配置 |
---|---|---|
无配置节点 | 无 | 有 |
预配置节点 | 有 | 无 |
全功能节点 | 有 | 有 |