Diagnostics over CAN

Diagnostics over CAN (DoCAN) also known as CAN Transport Protocol (CAN-TP, ISO 15765-2), is the transport layer protocol used by UDS and several other diagnostic protocols (e.g., SAE J1979, KWP2000) for message segmentation on CAN networks. In other words, DoCAN provides the adaptation that allows UDS to operate on CAN. It is illustrated in the UDS OSI Model.

CAN Bus Versions

CAN Bus was released in multiple version over the years.

Classic CAN

Classic CAN, also called CAN 2.0.

  • supports DLC values 0-8

CAN FD

CAN version with Flexible Data-Rate.

  • supports DLC values 0-15 (0-8 linear, 9-15 discrete: 12, 16, 20, 24, 32, 48, 64 bytes)

  • faster transmission of data field

  • backward compatible with Classic CAN

CAN XL

To be released in the near future.

  • supports up to 2048-bytes payload

  • backward compatible with Classic CAN and CAN FD

CAN Frame

DoCAN (and therefore UDS) uses only CAN data frames. A CAN data frame consists of several fields, but for DoCAN communication the most relevant are:

  • CAN Identifier (CAN ID)

    CAN ID is a field that informs every receiving CAN node about a sender and a content of frames. CAN nodes shall filter out and ignore CAN frames that are not relevant for them.

    There are two formats of CAN ID:

    • Standard - 11-bit long

    • Extended - 29-bit long

  • Data Length Code (DLC)

    DLC is a field that informs about number of data bytes that a CAN frame contains.

  • CAN Data Field

    Data Field contains the payload. Its length is determined by the DLC value, as shown in the table:

    DLC

    Number of CAN Data bytes

    Supported by CLASSICAL CAN

    Supported by CAN FD

    0x0

    0

    YES

    YES

    0x1

    1

    YES

    YES

    0x2

    2

    YES

    YES

    0x3

    3

    YES

    YES

    0x4

    4

    YES

    YES

    0x5

    5

    YES

    YES

    0x6

    6

    YES

    YES

    0x7

    7

    YES

    YES

    0x8

    8

    YES

    YES

    0x9

    12

    NO

    YES

    0xA

    16

    NO

    YES

    0xB

    20

    NO

    YES

    0xC

    24

    NO

    YES

    0xD

    32

    NO

    YES

    0xE

    48

    NO

    YES

    0xF

    64

    NO

    YES

Note

To learn more about CAN bus and CAN frame structure, we encourage you to read CAN bus specification and visit e-learning portal of Vector Informatik GmbH.

CAN Packet

CAN Packets are CAN Frames exchanged during DoCAN communication.

Data Field

In DoCAN, a CAN Packet must use a DLC of 8 (Classical CAN and CAN FD), or greater than 8 (CAN FD only). The only exception is when CAN Frame Data Optimization is applied.

DLC

Description

<8

Valid only for CAN frames using data optimization

Values in this range are only valid for Single Frame, Flow Control and

Consecutive Frame that use CAN frame data optimization.

8

Configured CAN frame maximum payload length of 8 bytes

For the use with CLASSICAL CAN and CAN FD type frames.

>8

Configured CAN frame maximum payload length greater than 8 bytes

For the use with CAN FD type frames only.

where:

Note

Number of bytes that carry diagnostic message payload depends on a type and a format of a CAN packet as it is presented in the table with CAN packets formats.

CAN Frame Data Padding

If the payload of a CAN Packet is shorter than the available bytes in the frame’s data field, the sender must pad the unused bytes.

Padding applies only to:

Unless specified otherwise, the padding value shall be 0xCC, which minimizes bit stuffing and signal distortion on the bus.

Note

CAN frame data padding is mandatory for CAN frames with DLC>8, optional for frames with DLC=8 and forbidden for frames with DLC<8.

CAN Frame Data Optimization

CAN frame data optimization is an alternative to CAN Frame Data Padding. If a number of bytes specified in a CAN Packet is shorter than a number of bytes in CAN frame’s data field, then the sender might decrease DLC value of the CAN frame to the smallest DLC that can still accommodate the payload.

Note

CAN Frame Data Optimization might always be used for CAN Packets with less than 8 bytes of data to send.

Warning

CAN Frame Data Optimization might not always be able to replace CAN Frame Data Padding when CAN FD is used. This is a consequence of DLC values from 9 to 15 meaning as these values are mapped into CAN frame data bytes numbers in a non-linear way (e.g. DLC=9 represents 12 data bytes).

Example:

When a CAN Packet with 47 bytes of data is planned for a transmission, then DLC=14 can be used instead of DLC=15, to choose 48-byte instead of 64-byte long CAN frame. Unfortunately, the last byte of CAN Frame data has to be * *padded as there is no way to send over CAN a frame with exactly 47 bytes of data.

CAN Packet Types

According to ISO 15765-2, CAN bus supports 4 types of Packets.

List of all values of Network Protocol Control Information supported by CAN bus:

The format of all CAN packets is presented in the table below.

CAN N_PDU

Byte #1

Byte #2

Byte #3

Byte #4

Byte #5

Byte #6

Bits 7-4

Bits 3-0

Single Frame

DLC ≤ 8

0x0

SF_DL

Single Frame

DLC > 8

0x0

0x0

SF_DL

First Frame

FF_DL ≤ 4095

0x1

FF_DL

First Frame

FF_DL > 4095

0x1

0x0

0x00

FF_DL

Consecutive Frame

0x2

SN

Flow Control

0x3

FS

BS

ST_min

N/A

N/A

N/A

N/A

where:

Single Frame

Single Frame (SF) is used to transmit an entire diagnostic message that fits into one CAN Packet. Payload length is defined by SF_DL.

Single Frame Data Length

Single Frame Data Length (SF_DL) is 4-bit (for CAN packets with DLC<=8) or 8-bit (for CAN packets with DLC>8) value carried by every Single Frame as presented in the table with CAN packet formats. SF_DL specifies number of diagnostic message payload bytes transmitted in a Single Frame.

Note

Maximal value of SF_DL depends on Single Frame addressing format and DLC of a CAN message that carries this packet.

First Frame

First Frame (FF) marks the start of a segmented diagnostic message which could not fit into a Single Frame. Payload length is given by FF_DL.

First Frame Data Length

First Frame Data Length (FF_DL) is 12-bit (if FF_DL ≤ 4095) or 4-byte (if FF_DL > 4095) value carried by every First Frame. FF_DL specifies number of diagnostic message payload bytes of a diagnostic message which transmission was initiated by a First Frame.

Note

Maximal value of FF_DL is 4294967295 (0xFFFFFFFF). It means that CAN bus is capable of transmitting diagnostic messages that contains up to nearly 4,3 GB of payload.

Consecutive Frame

Consecutive Frame (CF) carries the remaining payload after a First Frame. Order is indicated by Sequence Number.

Sequence Number

Sequence Number (SN) is 4-bit value used to specify the order of Consecutive Frames.

The rules for assigning Sequence Numbers are:

Flow Control

Flow Control (FC) is used by receiving CAN entities to instruct sending entities to stop, start, pause or resume transmission of Consecutive Frames.

Flow Control packet contains following parameters:

Flow Status

Flow Status (FS) is 4-bit value that is used to inform a sending network entity whether it can proceed with a Consecutive Frames transmission.

Values of Flow Status:

  • 0x0 - ContinueToSend (CTS)

    ContinueToSend value of Flow Status informs a sender of a diagnostic message that receiving entity (that responded with CTS) is ready to receive a maximum of Block Size number of Consecutive Frames.

    Reception of a Flow Control packet with ContinueToSend value shall cause the sender to resume ConsecutiveFrames sending.

  • 0x1 - wait (WAIT)

    Wait value of Flow Status informs a sender of a diagnostic message that receiving entity (that responded with WAIT) is not ready to receive another Consecutive Frames.

    Reception of a Flow Control packet with WAIT value shall cause the sender to pause ConsecutiveFrames sending and wait for another Flow Control packet.

    Values of Block Size and STmin in the Flow Control packet (that contains WAIT value of Flow Status) are not relevant and shall be ignored.

  • 0x2 - Overflow (OVFLW)

    Overflow value of Flow Status informs a sender of a diagnostic message that receiving entity (that responded with OVFLW) is not able to receive a full diagnostic message as it is too big and reception of the message would result in Buffer Overflow on receiving side. In other words, the value of FF_DL exceeds the buffer size of the receiving entity.

    Reception of a Flow Control packet with Overflow value shall cause the sender to abort the transmission of a diagnostic message.

    Overflow value shall only be sent in a Flow Control packet that directly follows a First Frame.

    Values of Block Size and STmin in the Flow Control packet (that contains OVFLW value of Flow Status) are not relevant and shall be ignored.

  • 0x3-0xF - Reserved

    This range of values is reserved for future extension by ISO 15765.

Block Size

Block Size (BS) is a one byte value specified by receiving entity that informs about number of Consecutive Frames to be sent in a one block of packets.

Block Size values:

  • 0x00

    The value 0 of the Block Size parameter informs a sender that no more Flow Control packets would be sent during the transmission of the segmented message.

    Reception of Block Size = 0 shall cause the sender to send all remaining Consecutive Frames without any stop for further Flow Control packets from the receiving entity.

  • 0x01-0xFF

    This range of Block Size values informs a sender the maximum number of Consecutive Frames that can be transmitted without an intermediate Flow Control packet from the receiving entity.

Separation Time Minimum

Separation Time minimum (STmin) is a one byte value specified by receiving entity that informs about minimum time gap between the transmission of two following Consecutive Frames.

STmin values:

  • 0x00-0x7F - Separation Time minimum range 0-127 ms

    The value of STmin in this range represents the value in milliseconds (ms).

    Meaning of example values:

    0x00 -> 0ms

    0x20 -> 32ms

    0x7F -> 127ms

  • 0x80-0xF0 - Reserved

    This range of values is reserved for future extension by ISO 15765.

  • 0xF1-0xF9 - Separation Time minimum range 100-900μs

    The value of STmin in this range represents the value in microseconds (μs) according to the formula:

    (STmin - 0xF0) * 100μs
    

    Meaning of example values:

    0xF1 -> 100μs

    0xF5 -> 500μs

    0xF9 -> 900μs

  • 0xFA-0xFF - Reserved

    This range of values is reserved for future extension by ISO 15765.

CAN Addressing Formats

CAN addressing formats define how Network Address Information is encoded within a CAN Packet. ISO 15765 specifies the following three addressing formats:

Note

Regardless of addressing format used, to transmit a functionally addressed message over CAN, a sender is allowed to use Single Frame packets only.

See also

ISO 15765-4 contains detailed information about CAN addressing formats.

Normal Addressing

Normal CAN Addressing is typically used when a client (Diagnostic Tester) communicates directly with servers (ECUs) in the same CAN network.

In this format, the CAN Identifier itself carries the complete Network Address Information. The CAN Identifier alone provides sufficient information to identify the addressing type, as well as the transmitting and receiving nodes.

Note

With normal addressing, both 11-bit (standard) and 29-bit (extended) CAN Identifiers are allowed.

In Normal Addressing Format, the Network Address Information is contained in the CAN ID, which indicates the addressing type as well as the transmitting and receiving nodes.

ISO 15765-4 specifies the following CAN Identifiers as examples for Normal CAN Addressing:

  • 0x7DF - functionally addressed request message

  • 0x7E0 - physical request to Engine Control Module

  • 0x7E8 - physical response from Engine Control Module

  • 0x7E1 - physical request to Transmission Control Module

  • 0x7E9 - physical response from Transmission Control Module

  • 0x7E2 - physical request to ECU#3

  • 0x7EA - physical response from ECU#3

  • 0x7E3 - physical request to ECU#4

  • 0x7EB - physical response from ECU#4

  • 0x7E4 - physical request to ECU#5

  • 0x7EC - physical response from ECU#5

  • 0x7E5 - physical request to ECU#6

  • 0x7ED - physical response from ECU#6

  • 0x7E6 - physical request to ECU#7

  • 0x7EE - physical response from ECU#7

  • 0x7E7 - physical request to ECU#8

  • 0x7EF - physical response from ECU#8

Note

Interpretation of CAN Identifier values is left open for a network designer unless Normal Fixed Addressing sub-format is used.

Note

Network Protocol Control Information is placed in the first byte of CAN frame data field when Normal CAN Addressing format is used.

Normal Fixed Addressing

Normal Fixed CAN Addressing is a specialized variant of Normal Addressing, where the mapping of Network Address Information into the 29-bit CAN Identifier is strictly predefined by ISO 15765-4.

Note

With normal fixed addressing, only 29-bit (extended) CAN Identifiers are allowed.

Following parameters contain Network Address Information for Normal Fixed CAN Addressing Format:

  • CAN ID (with embedded Target Address and Source Address) - informs about addressing type, transmitting and receiving nodes - Source Address identifies the transmitting node - Target Address identifies the receiving node

CAN Identifier values used for UDS communication using normal fixed addressing:

  • For physical addressed messages, CAN Identifier value is defined as presented below:

    Priority

    Reserved Bit

    Data Page

    Protocol data unit format

    Target Address

    Source Address

    Data

    Bits number

    3

    1

    1

    8

    8

    8

    16-512

    Content

    0 - 7

    0

    0

    218

    N_TA

    N_SA

    N_PCI, N_Data

    CAN field

    CAN Identifier

    CAN Data

    CAN ID bits

    28-26

    25

    24

    23-16

    15-8

    7-0

    CAN data bytes

    1-64

    # assuming priority parameter equals 0
    CAN_ID = 0xDATTSS
    
    # assuming priority parameter equals 6 (default value)
    CAN_ID = 0x18DATTSS
    
    # assuming priority parameter equals 7
    CAN_ID = 0x1CDATTSS
    
  • For functional addressed messages, CAN Identifier value is defined as presented below:

    Priority

    Reserved Bit

    Data Page

    Protocol data unit format

    Target Address

    Source Address

    Data

    Bits number

    3

    1

    1

    8

    8

    8

    16-512

    Content

    0 - 7

    0

    0

    219

    N_TA

    N_SA

    N_PCI, N_Data

    CAN field

    CAN Identifier

    CAN Data

    CAN ID bits

    28-26

    25

    24

    23-16

    15-8

    7-0

    CAN data bytes

    1-64

    # assuming priority parameter equals 0
    CAN_ID = 0xDBTTSS
    
    # assuming priority parameter equals 6 (default value)
    CAN_ID = 0x18DBTTSS
    
    # assuming priority parameter equals 7
    CAN_ID = 0x1CDBTTSS
    

where:

  • CAN_ID - value of CAN Identifier

  • TT - two (hexadecimal) digits of a 8-bit Target Address value

  • SS - two (hexadecimal) digits of a 8-bit Source Address value

  • N_TA - Network Target Address parameter

  • N_SA - Network Source Address parameter

  • N_PCI - Network Protocol Control Information

  • N_Data - Network Data Field

ISO 15765-4 recommends to use following parameters for Normal Fixed Addressing:

  • N_TA = 0xF1 and N_SA = 0xF1 - diagnostic tester parameters

  • CAN ID = 0x18DB33F1 (N_TA=0x33, N_SA=0xF1) - functionally addressed request message

  • CAN ID = 0x18DA??F1 (replace ?? with ECU’s target address) - physically addressed request messages

  • CAN ID = 0x18DAF1?? (replace ?? with ECU’s source address) - physically addressed response messages

Extended Addressing

The Extended CAN Addressing Format is typically used when direct communication with servers is not possible. In this case, a client (Diagnostic Tester) is not connected to the same CAN network as the server(s), and one or more ECU Gateways forward diagnostic messages.

In Extended CAN Addressing, the first byte of the CAN frame data field contains the Network Target Address (N_TA), which identifies the receiving node. The remaining Network Address Information (the transmitting entity and the addressing type) are derived from the CAN Identifier.

Note

Extended addressing may be used with both 11-bit (standard) and 29-bit (extended) CAN Identifiers.

In Extended CAN Addressing Format, the following parameters define the Network Address Information:

  • CAN ID – encodes the addressing type and transmitting node

  • Target Address – contained in the first data byte of the CAN Frame, identifies the receiving node

Note

In Extended CAN Addressing, the Network Protocol Control Information is located in the second byte of the CAN frame data field.

Mixed Addressing

Mixed CAN Addressing Format is used in cases where direct communication with servers is not possible. A client (Diagnostic Tester) is not connected to the same CAN network as the server(s), and messages are therefore forwarded by one or more ECU Gateways.

When the Mixed CAN Addressing Format is used, the first byte of the CAN frame data field contains an Address Extension (N_AE), which forms part of the Network Address Information. The value of this Address Extension must remain consistent across all packets exchanged between the same sender and receiver for a given addressing type.

Note

Network Protocol Control Information is placed in the second byte of CAN frame data field if mixed addressing format is used.

Following parameters specify Network Address Information for Mixed CAN Addressing Format:

  • CAN ID - informs about addressing type, transmitting and receiving nodes within the network

  • Addressing Extension (located in the first data byte of a CAN Frame) - provides an additional 8-bit addressing field (N_AE) extending the information in the CAN Identifier

Mixed CAN Addressing Format has two sub-types, depending which CAN ID format is used:

Mixed Addressing with 11-bit CAN Identifier

It is a subtype Mixed Addressing when only 11-bit (standard) CAN Identifiers are used.

Mixed Addressing with 29-bit CAN Identifier

It is a subtype Mixed Addressing when only 29-bit (extended) CAN Identifiers are used. The mapping of Network Address Information into the CAN identifier is further specified.

CAN Identifier values used for UDS communication using mixed 29-bit addressing:

  • For physical addressed messages, CAN Identifier value is defined as presented below:

    Priority

    Reserved Bit

    Data Page

    Protocol data unit format

    Target Address

    Source Address

    Data

    Bits number

    3

    1

    1

    8

    8

    8

    8

    16-504

    Content

    0 - 7

    0

    0

    206

    N_TA

    N_SA

    N_AE

    N_PCI, N_Data

    CAN field

    CAN Identifier

    CAN Data

    CAN ID bits

    28-26

    25

    24

    23-16

    15-8

    7-0

    CAN data bytes

    1

    2-64

    # assuming priority parameter equals 0
    CAN_ID = 0xCETTSS
    
    # assuming priority parameter equals 6 (default value)
    CAN_ID = 0x18CETTSS
    
    # assuming priority parameter equals 7
    CAN_ID = 0x1CCETTSS
    
  • For functional addressed messages, CAN Identifier value is defined as presented below:

    Priority

    Reserved Bit

    Data Page

    Protocol data unit format

    Target Address

    Source Address

    Data

    Bits number

    3

    1

    1

    8

    8

    8

    8

    16-504

    Content

    0 - 7

    0

    0

    205

    N_TA

    N_SA

    N_AE

    N_PCI, N_Data

    CAN field

    CAN Identifier

    CAN Data

    CAN ID bits

    28-26

    25

    24

    23-16

    15-8

    7-0

    CAN data bytes

    1

    2-64

    # assuming priority parameter equals 0
    CAN_ID = 0xCDTTSS
    
    # assuming priority parameter equals 6 (default value)
    CAN_ID = 0x18CDTTSS
    
    # assuming priority parameter equals 7
    CAN_ID = 0x1CCDTTSS
    

where:

  • CAN_ID - value of CAN Identifier

  • TT - two (hexadecimal) digits of a 8-bit Target Address value

  • SS - two (hexadecimal) digits of a 8-bit Source Address value

  • N_TA - Network Target Address parameter

  • N_SA - Network Source Address parameter

  • N_AE - Network Addressing Extension parameter

  • N_PCI - Network Protocol Control Information

  • N_Data - Network Data Field

Segmentation on CAN

This chapter describes segmentation rules specific to CAN networks and Diagnostic Communication over CAN (DoCAN), as defined in ISO 15765-2.

Unsegmented message transmission

An unsegmented message transmission occurs when a complete Diagnostic Message fits entirely within a single CAN Packet. In this case, the sender shall use a Single Frame (CAN Packet) to transmit the message.

Unsegmented Message on CAN

Transmission of an unsegmented Diagnostic Message on CAN bus.

A sender transmits a Single Frame (CAN Packet) that contains an entire Diagnostic Message.

Segmented message transmission

If the payload of a Diagnostic Message exceeds the capacity of a Single Frame, the message shall be segmented and transmitted using multiple CAN Packets. The first packet shall be a First Frame (CAN Packet), followed by a sequence of Consecutive Frames (CAN Packets).

The receiving node manages the transmission flow by sending Flow Control (CAN Packets) after the First Frame and after each block of Consecutive Frames.

Note

The size of Consecutive Frames block is determined by Block Size parameter provided in Flow Control.

Note

The minimum time between two Consecutive Frames is determined by Separation Time Minimum parameter provided in Flow Control.

Segmented Message on CAN

Transmission of a segmented Diagnostic Message on CAN bus.

A sender initiates Diagnostic Message transmission with a First Frame (CAN Packet) Then, a receiver controls the stream of incoming Consecutive Frames (CAN Packets) by transmitting Flow Controls (CAN Packets).

See also

Only the typical use case of Flow Control was described here. Check Flow Status parameter and meaning of its values to learn about other use cases.

Performance and Error Handling

ISO 15765-2 defines the following network layer timing parameters for Diagnostics over CAN (DoCAN):

Diagnostic on CAN timings

Network layer time values (N_As, N_Ar, N_Bs, N_Br, N_Cs, N_Cr) present during UDS on CAN communication.

Note

The example uses segmented diagnostic message transmission as it enables to present all CAN timing parameters. For unsegmented diagnostic message transmission though, the only applicable time parameter is N_As.

N_As

N_As is the time parameter of a CAN Packet transmission on the sender side. It is measured from the start of the CAN frame transmission until the transmission confirmation is received from the data link layer.

Timeout value:

1000ms

Error handling:

If N_As timeout is exceeded, the transmission of the diagnostic message shall be aborted.

Affected CAN Packets:

N_Ar

N_Ar is the time parameter of a CAN Packet transmission on the receiver side. It is measured from the start of the CAN frame transmission until the transmission confirmation is received from the data link layer.

Timeout value:

1000ms

Error handling:

If N_Ar timeout is exceeded, the reception of the diagnostic message shall be aborted.

Affected CAN Packets:

N_Bs

N_Bs is the time parameter related to Flow Control (CAN Packet) reception by a sender. It is measured from the end of the last CAN Packet transmission (either transmitted First Frame, Consecutive Frame, or received Flow Control) until the reception of Flow Control.

Timeout value:

1000ms

Error handling:

If N_Bs timeout is exceeded, the reception of the diagnostic message shall be aborted.

Affected CAN Packets:

N_Br

N_Br is the time parameter related to Flow Control (CAN Packet) transmission by a receiver. It is measured from the end of the last CAN Packet transmission (either received First Frame, Consecutive Frame, or transmitted Flow Control) until the start of Flow Control transmission.

Performance requirement:

A receiving entity shall transmit the Flow Control packet before N_Br reaches its maximal allowed value.

[N_Br] + [N_Ar] < 0.9 * [N_Bs timeout]
[N_Br max] = 900ms - [N_Ar]

Affected CAN Packets:

N_Cs

N_Cs is the time parameter related to Consecutive Frame packet transmission by a sender. It is measured from the end of the last CAN Packet transmission (either received Flow Control or transmitted Consecutive Frame) until the start of Consecutive Frame transmission.

Performance requirement:

A sending entity shall transmit the Consecutive Frame packet before N_Cs reaches its maximal allowed value.

[N_Cs] + [N_As] < 0.9 * [N_Cr timeout]
[N_Cs max] = 900ms - [N_As]

Affected CAN Packets:

N_Cr

N_Cr is the time parameter related to Consecutive Frame packet reception by a receiver. It is measured from the end of the last CAN Packet transmission (either transmitted Flow Control or received Consecutive Frame) until the reception of Consecutive Frame.

Timeout value:

1000ms

Error handling:

If the N_Cr timeout is exceeded, the reception of the diagnostic message shall be aborted.

Affected CAN Packets:

Unexpected Packet handling

According to ISO 15765-2:2016:

As a general rule, arrival of an unexpected N_PDU from any node shall be ignored, with the exception of SF N_PDUs and physically addressed FF N_PDUs; functionally addressed FirstFrames shall be ignored. When the specified action is to ignore an unexpected N_PDU, this means that the network layer shall not notify the upper layers of its arrival.

Depending on the network layer design decision to support full- or half-duplex communication, the interpretation of “unexpected” differs: a) with half-duplex, point-to-point communication between two nodes is only possible in one direction at a time; b) with full-duplex, point-to-point communication between two nodes is possible in both directions at once.

Half-duplex

Half-duplex allows communication in only one direction at a time. Each node can act either as sender or receiver, but not both simultaneously.

Handling of unexpected CAN packets during half-duplex communication:

Status

Single Frame

First Frame

Consecutive Frame

Flow Control

Unknown

Idle

Process the Single Frame

as the start of

a new message.

Process the First Frame

as the start of

a new message.

Ignore

Ignore

Ignore

Segmented

message

transmission

in progress

Ignore

Ignore

Ignore

Ignore

Ignore

Segmented

message

reception

in progress

Terminate the current

message reception

and process

the Single Frame

as the start of

a new message.

Terminate the current

message reception and

process the First Frame

as the start of

a new message.

If awaited,

then process

the Consecutive Frame

in the on-going

reception and perform

required checks

(e.g. Sequence Number

in order).

Otherwise, ignore it.

Ignore

Ignore

Full-duplex

Full-duplex allows simultaneous bidirectional communication. A node may act as sender for one message while simultaneously receiving another.

Handling of unexpected CAN packets during full-duplex communication:

Status

Single Frame

First Frame

Consecutive Frame

Flow Control

Unknown

Idle

Process the Single Frame

as the start of

a new message.

Process the First Frame

as the start of

a new message.

Ignore

Ignore

Ignore

Segmented

message

transmission

in progress

If a message reception

is in progress then see

the corresponding cell

in the row below.

Otherwise, process

the Single Frame as

the start of

a new message.

If a message reception

is in progress then see

the corresponding cell

in the row below.

Otherwise, process

the First Frame as

the start of

a new message.

If a message reception

is in progress then see

the corresponding cell

in the row below.

Otherwise, ignore it.

Ignore

Ignore

Segmented

message

reception

in progress

Terminate the current

message reception and

process the Single

Frame as the start

of a new message.

Terminate the current

message reception and

process the First Frame

as the start of

a new message.

If awaited, then

process the Consecutive

Frame in the on-going

reception and perform

required checks (e.g.

Sequence Number in

order).

Otherwise, ignore it.

Ignore

Ignore