ISO-TP (ISO 15765-2)

ISO-TP (ISO 15765-2) is a protocol used in automotive networks, specifically designed for transmitting larger data packets across CAN-bus systems. It enables the segmentation of messages into smaller frames, adhering to the CAN frame size limit of 8 bytes. This protocol establishes a method for sending messages that exceed this limit by breaking them into a series of sequential frames, ensuring efficient and reliable communication between electronic control units (ECUs) in vehicles.
Key Features of ISO-TP
Segmentation and Reassembly: ISO-TP breaks down large messages into smaller frames, allowing seamless transmission over the CAN-bus. Each frame is then reassembled into the original message by the receiving ECU.
Flow Control: The protocol includes a flow control mechanism to regulate the transmission rate, ensuring that the sender does not overwhelm the receiver.
Error Handling: ISO-TP provides error detection and recovery processes to maintain data integrity during transmission.
Compatibility: As an extension of the CAN protocol, ISO-TP is widely supported by most ECUs in modern vehicles, ensuring interoperability among different manufacturers' components.
Implementation Considerations
When implementing ISO-TP in an automotive application, engineers must consider the following:
Buffer Size: Ensure sufficient buffer size in the ECUs to handle segmented messages without data loss.
Timing Constraints: Adhere to specified timing intervals for message transmission and acknowledge receipt frames to prevent network congestion.
Network Load: Evaluate network capacity and adjust flow control parameters to optimize communication efficiency in high-traffic scenarios.
Understanding these key aspects of ISO-TP can significantly enhance the robustness and efficiency of in-vehicle networks.
Understanding ISO-TP
As CAN Bus supports only up to 8 bytes per frame. ISO-TP solves this by breaking down larger messages into smaller chunks (frames) and sending them sequentially.
Frame Types and PCI Information
The first byte of every ISO-TP frame contains the PCI, which determines the frame type:
Frame Type
PCI Byte (Hex)
Description
Single Frame (SF)
0x00 - 0x07
Used for payloads ≤ 7 bytes.
First Frame (FF)
0x10 - 0x1F
Starts a multi-frame payload. Contains total payload length in the first two bytes(7 -4095).
Consecutive Frame (CF)
0x20 - 0x2F
Continues the multi-frame payload. Includes a sequence number (0–15).
Flow Control (FC)
0x30 - 0x32
Sent by the receiver to manage flow. Specifies block size and separation time.
How to Identify Frame Types
First Frame (FF)
PCI: The first byte starts with
0x10-0x1F.Length: The total payload length is in the first two bytes.
Upper nibble:
0x10indicates First Frame.Lower nibble + next byte: Total payload length (e.g.,
0x14= 20 bytes).
Payload: Contains the first 6 bytes of the payload.
Example Response of Read by DID(F190):
First Frame starts a 20-byte message:
62 F1 90 31 48 47.
Consecutive Frame (CF)
PCI: The first byte starts with
0x20-0x2F.Sequence Number: The lower nibble increments for each frame (0–15).
Payload: Contains up to 7 bytes of the remaining payload.
Example of 1st Sequence:
Sequence number
1carries the next 7 bytes.Example of 2nd Sequence:
Sequence number 2 carries the next 7 bytes of the first sequence.
Retrieved VIN: "31 48 47 43 4D 38 32 36 33 33 41 31 32 33 34 35 36"
Flow Control (FC)
PCI: The first byte starts with
0x30-0x32.Flow Control Information:
0: Flow Status = "Continue to Send".1: Flow Status = "Wait"2: Flow Status = "Overflow"Next bytes:
Block Size (BS): Number of frames allowed before requiring another FC.
Separation Time (STmin): Minimum time delay (in milliseconds) between frames.
Example:
During UDS testing, use isotpdump to obtain all ISO-TP information for each frame.
Below is the candump result of retrieving VIN as above explained:
candump result of retrieving VIN as above explained:Last updated