FlexRay serial protocol decoding

FlexRay was developed by a consortium of manufacturers to provide a deterministic, fault-tolerant and high-speed alternative to CAN. Now standardized as ISO 17458, FlexRay supports data rates up to 10 Mbit/s on two independent channels for improved fault-tolerance. FlexRay uses a combination of event triggered and time triggered communication, ensuring that network nodes cannot gain uncontrolled network access to signal events, and instead must access the network using a pre-determined time slot to transmit each message using TDMA in what is known as the Communication Cycle.

PicoScope software can decode and display many cycles of FlexRay data in both a table format and a color-keyed trace, time-aligned with the data signal. 

Decoded FlexRay signal in PicoScope 7 with the packet data below the trace

Decoded FlexRay signal

A FlexRay bus consists of differential twisted pairs of shielded or unshielded cable connecting a transmitting node and one or more receiving nodes. Each differential pair must be terminated at each node with a resistance between 80 and 110 ohms. The bus is bidirectional, so each node requires both a transmitter and receiver combined in what is known as a bus driver. The two signal wires are denoted Bus Plus (BP) and Bus Minus (BM) and physical signal transmission is based on the voltage difference between these two wires, where Vdiff = BP–BM.

FlexRay differential voltage bus

The FlexRay Electrical Physical Layer Specification defines four bus states, two of which are recessive and two dominant. The recessive bus state has a differential voltage of 0 volts and the dominant state has a differential voltage not equal to 0 volts. The four bus states are: Idle; Idle Low Power; Data_0 and Data_1.

In the Idle bus state, both BP and BM are driven to a nominal 2.5 V, giving a 0 V differential voltage. If a node is in its low power state (Standby, Sleep, Go-To-Sleep), the Idle Low Power bus state is used, which also has a 0 V differential voltage, but the two bus wires are in this case at a nominal 0 V level. The Idle state is a defined length of time used by each node to maintain clock synchronization. The smallest unit of FlexRay time is a “macrotick” and the FlexRay controllers use the idle time to synchronize themselves by adjusting their local clock so that the macrotick occurs at the same point in time on every node in the network.

In the dominant Data_0 bus state (which represents logical state 0 or LOW), BP is driven to 1.5 V and BM is driven to 3.5 V, giving a differential voltage of –2.0 V. In the Data_1 bus state (which represents logical state 1 or HIGH), BP is 3.5 V and BM is 1.5 V, giving a differential voltage of +2.0 V.

FlexRay bus states

FlexRay uses non-return to zero (NRZ) bit coding, in which  the voltage level changes only when there is a change in the corresponding logic level, so there can only be two data states on the bus, LOW (0) or HIGH (1).

How to decode a FlexRay serial protocol bus

To get started, make sure you have captured a quality trace of a FlexRay signal. This is done by correctly adjusting the voltage range and timebase for maximum resolution and sampling rate. 

Once the signal has been captured, open Serial decoding from the left hand menu, if it's not there, it will be under More...

Captured, undecoded FlexRay trace in PicoScope 7

Captured FlexRay trace

Once you're in the Serial decoding wizard (left), select the FlexRay decoder from the list of serial protocol decoders, and click next. 

In the configuration window (middle), select your channel and the other options will be generated based on the signal. Adjust these settings if needed, and click next again.

Lastly in the Display window (right), select how you want your data to be displayed in the graph and the table from the options [Binary/Decimal/Hexidecimal/ASCII] or turn it off. In this window you can also decide the amount of data to be decoded using the Table contents selection and Decode between times rulers, if the rulers are active.

A selection of available serial decoders with FlexRay selected

Display Window

Serial protocol decoder configuration window for FlexRay decoding

Configuration window

Display configuration window for serial protocol decoding

Display window

Click finish and a coloured decoded line will appear on your graph, and a decoded table will appear below the graph.
For more information on these areas, click here to go to serial protocol decoding overview.

Decoded FlexRay signal in PicoScope 7 with the packet data below the trace

Decoded FlexRay signal