LIN bus
1.1 Purpose
of the document
1.2 Acronymous
1.3 Related
documents
1.4 Reference
documents
This document is intended to give a general introduction to the LIN. It’s
a compilation of informations from the lin specifications. It describes
the features and highlights the main advantages of this communication bus.
CAN Control Area Network
CPLD Complex Programmable Logic Device
ECU Electronic Control
Unit
ISO International
Standard Organisation
LIN Local Interconnect
Network
LSB Lower Significant
Bit
MSB Most Significant
Bit
OSI Open Systems Interconnections
SCI Serial Communication
Interface
UART Universal Asynchronous
Receiver Transmitter
LIN was designed by the LIN
consortium and the first specification has been published in 1999. The consortium
members are mainly European cars constructors : Audi AG, BMW AG, Daimler
Chrysler AG, Volkswagen AG, Volvo Cars Corporation AB, Motorola and Volcano
Communications Technologies.
Many car constructors are currently
implementing LIN in their vehicles like PSA.
![]() |
You may find several LIN busses
not interconnected between them as shown in the figure below. This is a
major difference with other low-cost busses as K-line which was intended
to link all the ECUs to an external analyse tool for diagnosis purpose.
![]() |
A LIN bus length is limited
to 40 meters and up to 16 ECUs could be connected.

The LIN master knows the sequential
order of all data to be transmitted and sends requests to slaves. These
requests are achieved by sending a header.
The recessive and dominant level are defined like this :
![]() |
|
The bus is in recessive level when not busy.
A message contains the following
fields :
The data are INTEL coded which
means that LSB are sent first.

A slave can detect a synchronization
break by measuring the low phase duration which is higher than a databyte
length.
|
SYNCH. BREAK FIELD |
LEVEL |
NAME |
MIN [TBIT] |
NOM [TBIT] |
MAX [TBIT] |
|
Synch. Break
low phase |
dominant |
TSYNBRK |
13a |
|
- |
|
Synch. Break
delimiter |
recessive |
TSYNDEL |
1a |
|
- |
|
Synch. Break
threshold slave |
Dominant |
TSBRKTS |
|
10b |
|
|
|
9c |
|
Clock timing
from : (a) master, (b) slave with crystal or resonator, (c) slave without
crystal or resonator
The identifier byte defines the containt and length of the following data.
There is 64 identifiers sorted in 4 groups of 16 messages.
This is the message identifier. There is identifiers from the specification
which covers the LIN protocol. Some identifiers are reserved for future
extension and custom messages.
This is the length of the following data bytes.
|
ID4 |
ID5 |
data length |
|
0 |
0 |
2 bytes |
|
0 |
1 |
2 bytes |
|
1 |
0 |
4 bytes |
|
1 |
1 |
8 bytes |
The parity is computed on the identifier bits only.
P0 is the even parity bit, P1 is the odd parity bit.
P0 = not (ID1 Å ID3 Å ID4 Å ID5)
P1 = ID0 Å ID1 Å ID2 Å ID4
The data length is defined by ID5 and ID6 from the identifier field. It
can be 2, 4 or bytes. The data can be transmitted either by the master or
the slave.
The checksum (CRC) is computed only on the data field. All other fields
are not included.

This means : Checksum = (1 - ådata ) mod 256.
The carry of the previous addition is added to the LSB of the next addition.
The LIN protocol allows to be in sleep mode to be compliant with the standards
and the environmental constraints. When the vehicle isn´t used, the consumption
of the whole vehicle have to be less than a few milliamps in order to not
discharge the battery. So, each ECU has to enter in sleep mode. Thus, strategies
have been implemented to manage the sleep/wake-up modes on the communication
busses.
The master has to send three times the sleep mode request : identifier
0x3C and data byte 0x00. The slaves have to enter in sleep mode in less
than 25000 BitTime and then the bus remains to the recessive level.

When the bus remains in the recessive level during a specified time, the
ECUs have to enter in sleep mode.
If an event occurs, a slave can awake the master and the communication
will start again. It will use the wake-up identifier 0x80. The master has
to manage a bad wake-up signal. When the bus becomes dominant, it’s a wake-up
condition. However, the master has to check the wake-up message validity
to start again the normal operation.

The master can awake the slaves by sending the wake-up message 0x80. Once
the request has been sent, the master starts again its normal communication.
There is no error diagnosis thru the LIN. This means that the detected
errors are not sent on the LIN. However, the following errors have to be
managed by the ECUs :
The master has to manage most of the errors recovering. It means that it
has to apply a specified faliure mode when needed.
During transmission the master has to detect the following errors :
When receiving messages from slaves, the master has to detect :
When transmitting a message, the slave has to monitor the follwing error
:
bit error
When receiving, the slave has to detect :