(19)
(11)EP 3 913 864 A1

(12)EUROPEAN PATENT APPLICATION

(43)Date of publication:
24.11.2021 Bulletin 2021/47

(21)Application number: 21172208.7

(22)Date of filing:  05.05.2021
(51)International Patent Classification (IPC): 
H04L 12/40(2006.01)
(52)Cooperative Patent Classification (CPC):
H04L 2012/40215; H04L 12/40032; H04L 2012/40273
(84)Designated Contracting States:
AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR
Designated Extension States:
BA ME
Designated Validation States:
KH MA MD TN

(30)Priority: 18.05.2020 IT 202000011479

(71)Applicants:
  • STMicroelectronics Application GmbH
    85609 Aschheim (DE)
  • STMicroelectronics Design and Application s.r.o.
    186 00 Praha 8 (CZ)

(72)Inventors:
  • RENNIG, Fred
    D-85405 Nandlstadt (DE)
  • DVORAK, Vaclav
    25063 Mratín (CZ)
  • BERAN, Ludek
    25163 Strancice (CZ)

(74)Representative: Bosotti, Luciano 
Buzzi, Notaro & Antonielli d'Oulx S.p.A. Corso Vittorio Emanuele ll, 6
10123 Torino
10123 Torino (IT)


(56)References cited: : 
  
      


    (54)A METHOD OF OPERATING A COMMUNICATION BUS, CORRESPONDING SYSTEM, DEVICES AND VEHICLE


    (57) A method of operating a CAN bus comprises coupling a first device (10) and second devices (201, ..., 20n) to the CAN bus (30) via respective CAN transceiver circuits. The method comprises configuring the first device as a communication master device to transmit first messages carrying operation data message portions indicative of operations for implementation by the second devices, and second messages addressed to the second devices, the second messages conveying identifiers identifying respective ones of the second devices to which the second messages are addressed requesting respective reactions towards the first device within respective expected reaction intervals. The method comprises configuring the second devices as communication slave devices to receive the first messages transmitted from the first device, read respective operation data message portions in said operation data message portions and implement respective operations as a function of the respective operation data message portions read, and to receive the second messages transmitted from the first device and react thereon within said respective expected reaction intervals by transmitting reaction messages towards the first device. The method comprises configuring said respective CAN transceiver circuits to set the CAN bus to a recessive level during transmission of said messages via the CAN bus by the respective first device or second device.




    Description

    Technical field



    [0001] The description relates to bus supported communication for use in automotive applications.

    [0002] For instance, one or more embodiments may be applied to communication between an electronic control unit (ECU) of a vehicle and one or more actuator devices and/or sensor devices of the vehicle. Driver circuits for LED lighting modules (e.g., front, rear, interior lights) are exemplary of such devices.

    Technological background



    [0003] Various applications in the automotive field involve exchange of data via a bus network. High data rate, robustness, fault detection, safety and low cost are desirable features for such bus networks.

    [0004] Existing high data rate (e.g., 1 Mb/s) standardized vehicle communication systems may involve complex and accurate protocol controllers, e.g., using external components. These may turn out to be expensive, especially when implemented as single chip analog/bipolar Application Specific Integrated Circuits (ASICs) or Application Specific Standard Products (ASSPs).

    [0005] Vehicle lights (e.g., front, rear, and interior lights) are becoming increasingly sophisticated and distributed (e.g., Matrix LED, ambient LED). Controlling such sophisticated and distributed lighting systems may rely on high data rate bus systems. Moreover, automotive-grade safety and robustness are desirable, especially for front and rear lighting systems.

    [0006] Therefore, solutions are known in the art which may rely on the use of a CAN (Controller Area Network) bus, optionally according to a CAN FD protocol, for managing the communication between one or more ECUs and driver circuits for lighting modules according to a master-slave communication scheme. Documents EP 3547620 A1 and US 2019/0294572 A1 are exemplary of such known solutions.

    Object and summary



    [0007] Despite the extensive activity in the area, further improved solutions are desirable.

    [0008] For instance, solutions are desirable which may provide improved immunity against electro-magnetic interference (EMI) in a bus communication system.

    [0009] An object of one or more embodiments is to contribute in providing such improved solutions.

    [0010] According to one or more embodiments, such an object can be achieved by means of a method having the features set forth in the claims that follow.

    [0011] One or more embodiments may relate to corresponding devices, e.g., master and slave (interfaces) intended to work together.

    [0012] One or more embodiments may relate to a corresponding system.

    [0013] One or more embodiments may relate to a corresponding vehicle, e.g., a motor vehicle such as a motor car.

    [0014] The claims are an integral part of the technical teaching provided herein in respect of the embodiments.

    [0015] According to one or more embodiments, it is provided a method comprising coupling a first device and a set of second devices to a CAN communication bus via respective CAN transceiver circuits to exchange messages over the CAN communication bus. The method may comprise configuring the first device as a communication master device to transmit via the CAN communication bus first messages carrying a set of operation data message portions indicative of operations for implementation by second devices in the set of second devices, and second messages addressed to second devices in the set of second devices. The second messages may convey identifiers identifying respective ones of the second devices to which the second messages are addressed, requesting respective reactions towards the first device within respective expected reaction intervals. The method may comprise configuring the second devices in the set of second devices as communication slave devices to receive via the CAN communication bus the first messages transmitted from the first device, read respective operation data message portions in said set of operation data message portions and implement respective operations as a function of the respective operation data message portions read, and to receive via the CAN communication bus the second messages transmitted from the first device and react thereon within said respective expected reaction intervals by transmitting via the CAN communication bus reaction messages towards the first device configured as communication master device. The method may comprise configuring said respective CAN transceiver circuits to (e.g., selectively) set the CAN communication bus to a recessive level (e.g., a logic 1) during transmission of said messages via the CAN communication bus by the respective first device or second device.

    [0016] Therefore, one or more embodiments may provide improved symmetry of the driven bit and increased immunity against electro-magnetic interference in a bus communication system for use, e.g., in the automotive sector.

    Brief description of the figures



    [0017] One or more embodiments will now be described, by way of example only, with reference to the annexed figures, wherein:

    Figure 1 is exemplary of a bus communication system according to one or more embodiments,

    Figure 2 is exemplary of the content of an end-to-end protected frame in one or more embodiments,

    Figure 3 is a flow diagram exemplary of a procedure for generating an end-to-end control field according to one or more embodiments,

    Figure 4 is a flow diagram exemplary of a procedure for verifying an end-to-end control field according to one or more embodiments, and

    Figures 5 to 16 are exemplary of the content of various types of frames in one or more embodiments.


    Detailed description of exemplary embodiments



    [0018] In the ensuing description, one or more specific details are illustrated, aimed at providing an in-depth understanding of examples of embodiments of this description. The embodiments may be obtained without one or more of the specific details, or with other methods, components, materials, etc. In other cases, known structures, materials, or operations are not illustrated or described in detail so that certain aspects of embodiments will not be obscured.

    [0019] Reference to "an embodiment" or "one embodiment" in the framework of the present description is intended to indicate that a particular configuration, structure, or characteristic described in relation to the embodiment is comprised in at least one embodiment. Hence, phrases such as "in an embodiment" or "in one embodiment" that may be present in one or more points of the present description do not necessarily refer to one and the same embodiment. Moreover, particular conformations, structures, or characteristics may be combined in any adequate way in one or more embodiments.

    [0020] Throughout the figures annexed herein, like parts or elements are indicated with like references/numerals and a corresponding description will not be repeated for brevity.

    [0021] The headings/references used herein are provided merely for convenience and hence do not define the extent of protection or the scope of the embodiments.

    [0022] The increasing computation power of automotive microcontrollers and the development of high data rate networks may provide for data processing and controlling being combined in single electronic control units (ECU). It is noted that such electronic control units configured to perform data processing and device control may be located close to the area where actuators and sensors are placed in the vehicle, e.g., to implement so-called "zone controllers". Such zone controllers may be placed in various areas (zones) of a vehicle and may be connected to one or more central ECUs by a high bandwidth network, e.g., an Ethernet network. The zone controllers may be capable of collecting sensor data and driving actuators, e.g., with a high time resolution. Processing of data collected from the sensors and/or addressed to the actuators can therefore be performed in the zone controllers, without the need of providing dedicated processing circuits arranged locally on the same circuit board(s) which hosts the sensor(s) and/or the actuator(s). The network connection between the actuators and/or sensors on one side and the (zone) controllers on the other side is not restricted to a dedicated component but can be routed through the vehicle, therefore a robust, reliable and trusted network may be desirable.

    [0023] An exemplary application in which the "zone controller architecture" may be implemented relates to controlling the lights of a vehicle, e.g., to implement an animated rear light. In addition to the conventional functions such as turn indicator, brake indicator and tail light, such an application may provide additional features such as the ability to inform and warn the traffic behind the vehicle, as well as animations for design and branding. Such functions and/or animations may be realized by controlling hundreds of individual light sources (e.g., LED light sources) which may be dynamically activated with a high resolution of individual intensity. Additionally, diagnosis data may be obtained cyclically from the LED drivers to provide short reaction times on failures.

    [0024] The above-exemplified application may rely, for instance, on the adaptation of a CAN protocol (e.g., a CAN FD protocol) to support one or more additional functions.

    [0025] For instance, a CAN protocol may be adapted to a master-slave communication architecture, as it is known from documents EP 3547620 A1 and US 2019/0294572 A1 previously cited, which are hereby incorporated by reference.

    [0026] Therefore, one or more embodiments may relate to a robust master-slave communication bus interface that can be used under automotive conditions, which in the following may be referred to with the designation "CAN FD Light". Such CAN FD Light protocol may use the CAN FD physical interface and protocol (therefore, a differential bus wiring) and may provide a defined edge density for synchronization. For safety reasons, cyclic redundancy check (CRC) and error checking may be implemented. The communication master may be implemented as a zone controller using the protocol controller in the microcontroller and a CAN FD transceiver. The communication slaves may be located in the LED satellites.

    [0027] It is noted that, while reference to a CAN FD protocol may be extensively made in the present description for the sake of example only, one or more embodiments may be applied to different types of CAN protocols such as, for instance, the CAN XL protocol.

    [0028] One or more embodiments may relate to a bus system as exemplified in Figure 1. The bus system may comprise a communication master device 10 and a set of communication slave devices 201, 202, ..., 20n coupled via a bus 30 and supplied with power from a power source 40, e.g., a battery provided in a vehicle V. The master device may be implemented in an electronic control unit (ECU) configured to control at least one lighting device (e.g., a LED lighting device) such as a front light, a rear light or an interior light of the vehicle V.

    [0029] It is noted again that reference to a lighting system in a vehicle is made by way of example only. A communication architecture as disclosed herein may generally be applied to any communication system in a vehicle, comprising a "zone controller" or "domain controller" which is configured to process data and control actuators, and a set of sensors/actuators coupled to the zone controller via a bus network. For instance, one or more embodiments may rely to a battery management system, or to an advanced driver assistance system.

    [0030] The master device 10 may comprise:
    • a main (e.g., buck) converter 101,
    • an optional (e.g., again buck) converter 102,
    • a low-dropout (LDO) linear voltage regulator, stand by, reset and window, and watchdog circuit block 103,
    • voltage supervisor, power good, oscillator and enable circuit blocks 104,
    • a microcontroller unit 106,
    • an optional transceiver circuit 105 for communication with other ECUs possibly comprised in the vehicle V (e.g., a LIN2.2/HS-CAN transceiver), and
    • an optional access point to an external communication bus 107 connected to the transceiver 105 for communication with other ECUs comprised in the vehicle V.


    [0031] The microcontroller unit 106 may comprise a protocol controller circuit. The master device 10 may further comprise a CAN FD transceiver (not visible in Figure 1) configured for coupling to the CAN bus 30.

    [0032] The slave devices may be implemented as "satellite" devices, e.g., as LED driver circuits.

    [0033] According to a master-slave communication scheme, in one or more embodiments the slave devices may send messages (or frames) only upon receiving a request from the master device. One or more embodiments may not involve a collision resolving method, since during normal operation collisions can be avoided. A collision can be treated as an error.

    [0034] In normal operation, the master device may send data messages to the slave devices in defined time intervals. Such data messages can be received by all the slave devices connected to the bus, and the data stream can be used by the slave devices as network heartbeat or watchdog. If a data message is not received at a slave device within a defined time interval, the slave device may enter a fail-safe (or limp-home) mode.

    [0035] In one or more embodiments, the master device may request diagnosis data from the slave devices using dedicated "unicast" command frames. For instance, only one addressed slave may answer to a diagnosis request frame within a defined time interval. This answer can be used by the master device to detect the availability of the slave devices.

    [0036] In one or more embodiments, the communication protocol may use CAN FD format frames without bit rate switching and with standard ID. In one or more embodiments, extensions (like supporting extended ID, classic CAN frames or bit rate switching) may be supported. Frames that are not supported by the implementation may be ignored.

    [0037] In one or more embodiments, during one data frame a master device may be able to send up to 64 data bytes (i.e., 512 bits, 1 byte = 8 bits), which can be received by all the devices coupled to the bus (e.g., the "bus participants"). Each slave device can pick from the data bytes (e.g., 512 bits) of a single data frame the information it needs for its operation. This kind of frame may be referred to as a "multicast" data frame. The number of bits that each slave device can pick from a single data frame may be implementation-specific, and the position of the data addressed to each slave device may be determined during an initialization sequence. For instance, if each slave device uses 8 bits of data, up to 64 slave devices can be provided with data per multicast data frame. More than 64 slave devices may be provided in the bus system by configuring them as belonging to different chains of slave devices. These chains can be addressed by respective dedicated IDs in the CAN FD ID field.

    [0038] In one or more embodiments, each slave device can also be addressed individually using a respective slave address, and the addressed slave device may answer to such an individual message received. The slave ID may be 9-bit long (e.g., SLAVE[8:0]), which may leave the first two bits of the 11-bit CAN FD ID field available to distinguish between multicast frames and unicast frames (e.g., as a function of the value of the most significant bit MSB of the CAN FD ID field), as well as between master requests and slave responses (e.g., as a function of the value of the second most significant bit of the CAN FD ID field, i.e., bit number 10 in the standard CAN ID field).

    [0039] In one or more embodiments, messages according to the ST SPI 4.1 protocol may be embedded into the data of the diagnosis request and diagnosis response frames in order to allow reading and/or writing specific data to specific addresses in the local memory of the slave devices. Therefore, in one or more embodiments the global status register may be sent back with every diagnosis request.

    [0040] One or more embodiments may take advantage of the master-slave communication architecture applied to a CAN protocol to operate the bus in absence of arbitration, as opposed to conventional CAN based protocols. Therefore, in one or more embodiments the bus may (e.g., always) be pulled to a recessive level (e.g., logical 1) actively, with an extension of functionality if compared to conventional CAN based protocols, where this is not possible due to arbitration. Between the frames, the bus may not be driven. Thus, one or more embodiments may provide improved symmetry of the driven bit and increase immunity against electro-magnetic interference (EMI).

    [0041] In conventional CAN/CAN FD transceivers, the bus is not driven actively to recessive while sending data. Therefore, the symmetry may rely significantly on the properties of the bus, such as the cable (e.g., capacitance, inductance, resistance of the cable) and the termination resistor of the wire. In one or more embodiments, by actively driving the bus in both directions (dominant and recessive) the symmetry and the slopes may be better controlled by the driving circuit. More accurate slopes and symmetry may improve the electro-magnetic emission which comes mainly from asymmetries of the driven signal.

    [0042] Therefore, in one or more embodiments a slave device can actively pull the bus to a recessive level during transmission of a frame, as a result of the absence of arbitration. In one or more embodiments, a slave device may thus not drive a differential voltage to signal a logical 1 (recessive) to be received by other nodes connected to the very same media while it is not transmitting data. As a result, the bus can be driven to recessive during this time with the same maximum current as applicable for the dominant level (e.g., 115 mA in the case of a CAN or CAN FD transceiver).

    [0043] In one or more embodiments, a mode for CAN transceivers used (only) during data phase (e.g., in CAN XL protocol) may be used for the entire frame as a result of arbitration not being performed. This may also provide increased EMI robustness and symmetry.

    [0044] In one or more embodiments, it may be possible to drive a differential voltage to signal a logical 1 (recessive level) while the driver is transmitting data.

    [0045] Additionally or alternatively, the transceiver may not even be restricted to be a differential driver (for both "0" and "1").

    [0046] For instance, instead of using CAN FD transceivers or CAN XL transceivers to drive an electrical voltage representing a logic signal, one or more embodiments may rely on the recognition that it may be possible to use any other output driver and input buffer with different characteristics to represent a logic value with an output voltage, e.g., using CMOS output buffers or CMOS input buffers at various voltage levels.

    [0047] It is noted that, in case arbitration is used without a master-slave communication scheme, the bus works as a "wired-and" connection. This may involve that a voltage representing a logic "0" always overwrites a voltage representing a logic "1" when transmitting data on the bus. In the case of a master-slave implementation, this may be dispensed with insofar as there might be no arbitration that involves a logic "0" driven by a sender device to override a logic "1" driven by another sender device on the bus.

    [0048] For instance, CMOS drivers may be used sometimes in the place of CAN transceivers for simplicity on very small distances due to the reduced cost. In the case of arbitration, the wired-and connection may be realized by open drain drivers, which may actively drive to 0 V only, while the logic "1" may be passively realized using a pull-up resistor. In the case of a master-slave implementation according to one or more embodiments, it may be possible to also actively drive the voltage representing logic "1".

    [0049] One or more embodiments may aim at providing end-to-end data protection in such a bus supported communication system, e.g., relying on a CAN protocol (e.g., CAN FD or CAN XL).

    [0050] To this aim, the devices (e.g., both master devices and slave devices) for use in one or more embodiments may support the AUTOSAR end-to-end (E2E) protection control profile 1C with E2E_P01_DATAID_NIBBLE. This profile is described in Chapter 6.3 of the AUTOSAR E2E Protocol Specification (version 1.5.0 of October 31, 2018), which is hereby incorporated by reference. The corresponding mechanisms are described in Table 6.1 of the AUTOSAR E2E Protocol Specification.

    [0051] One or more embodiments may implement deviations (e.g., simplifications) from the AUTOSAR E2E Protocol Specification. For instance, one or more embodiments may rely on: one message counter per frame ID, and/or one error counter to count all mismatches, and/or initializations of the message counter and the error counter as a result of initializing the communication interface (e.g., after power-up, and/or wake-up, and/or exit from a fail-safe mode).

    [0052] In one or more embodiments, each slave device may generate an outgoing message counter value for outgoing frames, e.g., only for unicast responses sent. End-to-end protection may be checked (only) on frames that are addressed to the slave device and are accepted by the slave device (e.g., having a correct CAN FD frame error check, such as CRC).

    [0053] In one or more embodiments, an individual E2E message counter may be checked for each CAN ID that is accepted by a slave device (e.g., a message counter for the unicast frames addressed to the slave device, a message counter for the multicast frames addressed to the chain of slaves that the slave device belongs to, a message counter for the broadcast command frames). A respective threshold may be set for each checked message counter. Each slave device may only belong to one multicast chain.

    [0054] In one or more embodiments, an error counter may count all message counter mismatches above the individual counter mismatch thresholds.

    [0055] In one or more embodiments, an implemented watchdog mechanism may perform a timeout detection insofar as the slave device does not poll for incoming messages as a function of a cyclic timer.

    [0056] As exemplified in Figure 2, which is exemplary of the structure of a CAN FD frame with an E2E protection control field, the E2E protection control field may be embedded in the first two data bytes of the CAN FD frame. A CAN FD frame may thus comprise: a standard ID field (SID) 200 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 202 (e.g., comprising 6 bits), a data length code field 203 (e.g., comprising 4 bits: DLC[3:0]), a first data byte 204 ("Data byte 1"), a second data byte comprising portions 206 and 208 ("Data byte 2"), a set of further data bytes 210 (e.g., 62 data bytes, "Data byte 3" to "Data byte 64"), a CRC field 212 and an ACK/EOF field 214. The first data byte 204 may contain an 8-bit CRC value (CRC[7:0]). The second data byte may comprise a first portion 206 including the low nibble of the high byte of the standard ID field with a leading "0" (i.e., "0", SID[10:8]) and a second portion 208 comprising the counter (e.g., a 4-bit counter COUNTER[3:0]). The first and second data bytes 204, 206, 208 may thus provide the E2E protection control field. The sequence-counter and the alive-counter are identical.

    [0057] In one or more embodiments, calculating an 8-bit CRC value (CRC[7:0]) may rely on using the polynomial "1D16" according CRC-8-SAE J1850, with a start value of 0016 and a XOR value of 0016. Information about the CRC calculation, the start and XOR values and ways to check the correctness of the calculation are described in Chapter 6.13 of the AUTOSAR E2E Protocol Specification. In one or more embodiments, the CRC value may be calculated in the following order: SID[7:0], "0", SID[10:8], COUNTER[3:0], remaining data bytes (i.e., "Data byte 3" to "Data byte 64"). The bit stream is calculated from left to right, i.e., in the order the bits are transmitted and received.

    [0058] Purely by way of example, Table I annexed to the present description illustrates standard parameters for CRC8 computation according to profile 1C of the AUTOSAR E2E Protocol Specification. One or more embodiments may rely on different parameters for the computation of the CRC.

    [0059] One or more embodiments may involve a message counter for each SID that is sent by the device (be it a master device or a slave device). Since the slave devices may answer only on unicast requests with a unicast SID, (only) one counter for transmitted messages may be provided in a slave device. According to the profile 1C of the AUTOSAR E2E Protocol Specification, the sequence-counter and the alive-counter are identical. Also according to the profile 1C of the AUTOSAR E2E Protocol Specification, the counter may be a 4-bit counter that counts from 0 to 14 and increments to 0 afterwards, i.e., the counter value 15 can be skipped. The counter may be incremented after each sent message and may be reset to 0 after power-up reset, wake-up and when leaving a fail-safe mode. Therefore, the first message sent by a device after reset may use the counter value 0.

    [0060] The data bytes in Figure 2 start with "Data byte 1" 204 counting to "Data byte 64", i.e., the E2E protection control field located in the "Data byte 1" 204 is the first byte of the transmitted data (i.e., no Byte 0).

    [0061] Since in one or more embodiments the SID may be only 11-bit long, the high nibble 206 of the SID may start with a leading "0". Unused data bytes may be filled with FF16 to reach a CAN FD block size (e.g., as determined by the DLC code).

    [0062] Figure 3 is a flow diagram exemplary of the generation procedure of an E2E protection control field at the sender side. The procedure may be implemented at the master (controller) side and/or at the slave side.

    [0063] The procedure of generating an E2E protection control field starts at a start step 300.

    [0064] Step 302 may comprise storing the value of the outgoing message counter by writing such value to the low nibble 208 of the "Data byte 2".

    [0065] Step 304 may comprise storing the value of the upper part of the SID by writing the value {0, SID[10:8]} to the first portion 206 of the "Data byte 2".

    [0066] Step 306 may comprise calculating the CRC value over the sequence SID[7:0], "0", SID[10:8], COUNTER[3:0] followed by the remaining data bytes up to the DLC value (e.g., "Data byte 3" to "Data byte 64").

    [0067] Step 308 may comprise storing the calculated CRC value in the first data byte 204 "Data byte 1".

    [0068] Step 310 may comprise increasing the outgoing message counter for the next message.

    [0069] The procedure of generating an E2E protection control field ends with an end step 312.

    [0070] In one or more embodiments, the E2E protection control field of received messages can be verified at the receiver side (e.g., at a master device and/or at a slave device, depending on which device is the sender). A frame may be dropped without further action if a non-matching CRC value is detected in the first data byte 204, or if a non-matching low nibble of the SID high byte is detected in the portion 206 of the second data byte.

    [0071] A respective counter may be used for each SID that is accepted by the device as valid identifier, possibly with some exceptions. The counter may be maintained by the sending device, while the receiving device may store received counter values and compare the newly arrived message values with the stored ones. Afterwards, the received counter value may be stored.

    [0072] Figure 4 is a flow diagram exemplary of the verification flow of an E2E protection control field at the receiver side. Such verification flow may be based on the AUTOSAR E2E Protocol Specification. The procedure of verifying an E2E protection control field starts at a start step 400.

    [0073] Step 402 may comprise calculating a CRC value over the sequence SID[7:0], "0", SID[10:8], COUNTER[3:0] followed by the remaining data bytes up to the DLC value (e.g., "Data byte 3" to "Data byte 64").

    [0074] Step 404 may comprise checking whether the CRC value computed at step 402 matches the CRC value stored in the first data byte 204 of the received CAN frame.

    [0075] In case of a negative outcome (N) of step 404, step 432 may comprise dropping the received message and terminating the procedure of verifying an E2E protection control field.

    [0076] In case of positive outcome (Y) of step 404, step 406 may comprise checking whether the value of SID[10:8] stored in portion 206 of the second data byte matches the value of SID[10:8] stored in the standard ID field of the received CAN frame, according to AUTOSAR E2E protection. Step 406 may facilitate cross-checking that the data belongs to the right frame. The E2E protection may thus provide a higher safety level than the protocol controller.

    [0077] In case of a negative outcome (N) of step 406, step 432 may comprise dropping the received message and terminating the procedure of verifying an E2E protection control field.

    [0078] In case of a positive outcome (Y) of step 406, step 408 may comprise checking whether a message counter value of the received frames RecCnt is equal to a threshold value, the threshold value being equal to the maximum value reachable by the counter as a function of its length in bits. For instance, in the case here exemplified of a 4-bit message counter, step 408 may comprise checking whether RecCnt is equal to 15.

    [0079] In case of a positive outcome (Y) of step 408, step 432 may comprise dropping the received message and terminating the procedure of verifying an E2E protection control field.

    [0080] In case of a negative outcome (N) of step 408, step 410 may comprise checking whether the current counter value RecCnt is higher than a last stored counter value LastCnt, i.e., step 410 may comprise checking whether overflow of the frame counter has occurred (negative outcome N of step 410) or not (positive outcome Y of step 410).

    [0081] In case of a positive outcome (Y) of step 410, step 412 may comprise computing a difference DeltaCnt between the current counter value RecCnt and the last stored counter value LastCnt according to the formula DeltaCnt = RecCnt - LastCnt.

    [0082] In case of a negative outcome (N) of step 410, step 414 may comprise computing a difference DeltaCnt between the current counter value RecCnt and the last stored counter value LastCnt according to the formula DeltaCnt = (2n - 1) + RecCnt - LastCnt, where n is the number of bits of the counter. For instance, in the case here exemplified of a 4-bit counter, the previous formula may read DeltaCnt = 15 + RecCnt - LastCnt.

    [0083] Step 416 may comprise storing the received counter value RecCnt into the last stored counter value LastCnt in order to allow processing of further received frames.

    [0084] Step 418 may comprise checking whether the value DeltaCnt computed at step 412 or step 414 is equal to zero, i.e., step 418 may comprise checking whether the received message is a repeated message.

    [0085] In case of a positive outcome (Y) of step 418, step 424 may comprise increasing an error counter ErrCnt.

    [0086] In case of a negative outcome (N) of step 418, step 420 may comprise checking whether the value DeltaCnt computed at step 412 or step 414 is equal to or lower then a threshold value MaxDeltaCnt corresponding to a maximum allowed counter difference. Thus, step 420 may comprise checking whether the number of frame losses is within an acceptable range defined by the threshold MaxDeltaCnt.

    [0087] In case of a negative outcome (N) of step 420, step 426 may comprise increasing the error counter ErrCnt.

    [0088] In case of a positive outcome (Y) of step 420, step 422 may comprise accepting the received message and terminating the procedure of verifying an E2E protection control field.

    [0089] Following step 424 or step 426, step 428 may comprise checking whether the value of the error counter ErrCnt is equal to or higher than a threshold value MaxErrCnt corresponding to a maximum allowed number of errors.

    [0090] In case of a negative outcome (N) of step 428, step 432 may comprise dropping the received message and terminating the procedure of verifying an E2E protection control field.

    [0091] In case of a positive outcome (Y) of step 428, step 430 may comprise dropping the received message, entering a fail-safe state and terminating the procedure of verifying an E2E protection control field.

    [0092] In one or more embodiments, the last counter value RecCnt may be stored separately at step 416 for each accepted SID. A single error counter (e.g., a 4-bit error counter) may be used for all accepted messages, i.e., errors detected for each SID may increment the same error counter ErrCnt. The error counter ErrCnt and the last counter value LastCnt may be readable by a unicast command (read-only) and may be resettable to 0 by write access.

    [0093] Therefore, in one or more embodiments, a sender device may be configured to increase an outgoing counter by a unitary value and adding the counter value to the outgoing message. On the receiving side, the received counter value may be compared to the stored one (e.g., the latest received counter value). If the newly received counter value is higher than the stored one, at least one new message has been sent and received. If the newly received counter value is equal to the stored one, the message has been repeated. If the difference between the newly received counter value and the stored one is higher than unity, some messages have been lost. If the difference between the newly received counter value and the stored one is higher than a certain message counter threshold, a relevant number of messages have been lost and an error counter is increased. If a number of errors exceeding a certain threshold have been counted, some action may be taken by the received device (e.g., entering a fail-safe mode).

    [0094] Table II annexed to the present description is exemplary of faults that may be detected by the E2E protection control here described, plus additional optional measures (for instance, timeout detection via implementation of a watchdog mechanism on both sides) and the assumption that all participants on the bus use the same CRC calculation for data protection. In case the implemented CRC is an 8-bit CRC as defined in AUTOSAR profile 1C, the maximum data length supported may be equal to 32 bytes.

    [0095] In one or more embodiments, unicast messages may be exchanged over the CAN bus. Unicast messages may comprise diagnosis request messages sent from the master device to a slave device, diagnosis response messages sent from a slave device to the master device, burst-read request messages and burst-write messages sent from the master device to a slave device, and burst-read response messages sent from a slave device to the master device.

    [0096] In one or more embodiments, a master device may request data from a particular slave device by sending a diagnosis request frame. A possible structure of said diagnosis request frame is exemplified in Figure 5.

    [0097] As exemplified in Figure 5, a diagnosis request frame may comprise: a standard CAN FD ID field 500 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 502 (e.g., comprising 6 bits), a first data byte 504 ("Data byte 1"), a second data byte 506 ("Data byte 2"), a third data byte 508 ("Data byte 3"), a set of further data bytes 510 (e.g., 61 data bytes, "Data byte 4" to "Data byte 64"), a CRC field 512 and an ACK/EOF field 514. The data bytes 504 and 506 may comprise the E2E protection control field. The third data byte 508 may comprise an OP code (operation code) and an address according to ST SPI 4.0. The OP code may allow read and write operations. For instance, the OP code may define whether data is read back from an address or written into the address.

    [0098] In particular, the standard ID field 500 may comprise the address of a slave device to which the diagnosis request message is addressed (e.g., a 9-bit address SLAVE[8:0]) preceded by a 2-bit code. The first bit of the 2-bit code (i.e., the MSB of the ID field 500) may be equal to "0" to identify a unicast message (as opposed to multicast messages, which may be identified by the value "1" of the MSB), and the second bit of the 2-bit code may be equal to "1" to identify a master request message (as opposed to a slave response message, which may be identified by the value "0" of the second bit of the 2-bit code).

    [0099] In case the unicast diagnosis request frame does not contain any data in the data bytes 510, the addressed slave may transmit default diagnosis data defined at implementation. In case the unicast diagnosis request frame contains data in the data bytes 510, such data may be an SPI command according to specification ST SPI 4.1, and the slave device may reply with the data requested by the diagnosis request frame also encoded by the ST SPI 4.1 protocol. With the ST SPI protocol, data can be written into and read from addressed memory locations. Therefore, actuator values can be set, and diagnosis or measurement data can be read back. Read or write mode and additional functions (e.g., access to reserved data) may be indicated by the OP code in the third data byte 508.

    [0100] In one or more embodiments, a watchdog may be implemented. The watchdog may comprise a timer with a duration of, e.g., 100 ms, 150 ms, 200 ms or 250 ms. These durations may be selected by writing to a dedicated memory address to program which one is selected. An initial value may be written in the non-volatile memory. The timer may be started after power-up reset and can be reset by writing to a memory trigger bit at a specified address. Upon expiration of the timer, the device may enter a fail-safe state. Therefore, during normal operation this dedicated bit can be written by a unicast diagnosis request message with memory write. Optionally, a second earlier time threshold may be defined (e.g., 50 ms). If a watchdog trigger occurs before the second time threshold, the device may enter a fail-safe state. This may facilitate the implementation of a window-watchdog that involves the timer to be reset within a specified time window (e.g., between 50 ms and 100 ms) for more supervision to sense too many watchdog resets. Such a watchdog may facilitate supervision of a correctly working communication interface and/or a correctly working master device.

    [0101] Figure 6 is exemplary of another possible structure of a diagnosis request frame, in case no data has to be written to the memory of the addressed slave device. Therefore, as exemplified in Figure 6, the memory content (corresponding to the data bytes 510) may not be sent, and the diagnosis request frame may comprise only a standard ID field 600, a control field CTRL 602, a first data byte 604 ("Data byte 1"), a second data byte 606 ("Data byte 2"), a third data byte 608 ("Data byte 3"), a CRC field 612 and an ACK/EOF field 614, whose content is the same as that of a message as exemplified in Figure 5.

    [0102] Unicast diagnosis request frames as exemplified in Figures 5 and 6 may be E2E protected by optionally incorporating an E2E protection control field in the data bytes 504, 506 (or 604, 606).

    [0103] Figure 7 is exemplary of a possible structure of a diagnosis response frame sent from a slave device to the master device in response to a diagnosis request message.

    [0104] As exemplified in Figure 7, a diagnosis response frame may comprise: a standard CAN FD ID field 700 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 702 (e.g., comprising 6 bits), a first data byte 704 ("Data byte 1"), a second data byte 706 ("Data byte 2"), a third data byte 708 ("Data byte 3"), a fourth data byte 709 ("Data byte 4"), a set of further data bytes 710 (e.g., 60 data bytes, "Data byte 5" to "Data byte 64"), a CRC field 712 and an ACK/EOF field 714. The data bytes 704 and 706 may comprise an E2E protection control field. The third data byte 708 may comprise an OP code (operation code) and an address. The fourth data byte 709 may comprise a Global-Status-Byte (GSB).

    [0105] In particular, the standard ID field 700 may comprise the address of the slave device which is sending the diagnosis response message (e.g., a 9-bit address SLAVE[8:0]) preceded by a 2-bit code. The first bit of the 2-bit code (i.e., the MSB of the ID field 700) may be equal to "0" to identify a unicast message, and the second bit of the 2-bit code may be equal to "0" to identify a slave response message (as opposed to a master request message, as discussed with reference to Figure 5).

    [0106] In one or more embodiments, a slave device may thus answer to a master diagnosis request frame with a diagnosis response frame as exemplified in Figure 7. In case the diagnosis request frame was sent with data (e.g., according to Figure 5), the data bytes 709, 710 of the diagnosis response frame may comprise an ST SPI SDO frame, including the Global-Status-Byte (GSB) in the byte 709.

    [0107] In case the diagnosis request frame was sent without data (e.g., according to Figure 6), the diagnosis response frame may include the Global-Status-Byte (GSB) 709 only, and the data bytes 710 may not be transmitted.

    [0108] In one or more embodiments, a master device may read data from a memory of a particular slave device by sending a burst-read request frame, which may have the same structure as a diagnosis request frame. The burst-read response frame sent by the slave device may have a structure similar to the structure of a diagnosis response frame as exemplified in Figure 7, where the data bytes following the GSB (i.e., the data bytes 710 in Figure 7) may contain the memory content of the following addresses.

    [0109] For instance, Figure 8 is exemplary of a case where the content of three memory addresses with 32 bit each are returned by a slave device in a burst-read response frame. The burst-read response frame may thus contain: a standard CAN FD ID field 800 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 802 (e.g., comprising 6 bits), a first data byte 804 ("Data byte 1"), a second data byte 806 ("Data byte 2"), a third data byte 808 ("Data byte 3"), a fourth data byte 809 ("Data byte 4"), a set of further data bytes 810a1 to 810c4 (e.g., 12 data bytes), padding bytes 811, a CRC field 812 and an ACK/EOF field 814.

    [0110] The standard ID field 800 may comprise the address of the slave device sending data, preceded by a 2-bit code "00". The data bytes 804 and 806 may comprise an E2E protection control field. The third data byte 808 may comprise an OP code (operation code) and an address. The fourth data byte 809 may comprise a Global-Status-Byte (GSB). The further data bytes 810a1 to 810c4 may comprise the retrieved memory content. The unused padding bytes 811 to be transmitted to fill the number of bytes according to the DLC field may be filled with value FF16 for correct CRC calculation.

    [0111] In one or more embodiments, a master device may write data to a memory of a particular slave device by sending a burst-write request frame, which may have a structure similar to that of a diagnosis request frame, as exemplified in Figure 9, where the data bytes following the optional E2E protection control field 906 may contain the content to be stored in the following addresses.

    [0112] For instance, Figure 9 is exemplary of a case where three memory addresses with 32 bit each are targeted for writing data therein. The burst-write request frame may thus contain: a standard CAN FD ID field 900 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 902 (e.g., comprising 6 bits), a first data byte 904 ("Data byte 1"), a second data byte 906 ("Data byte 2"), a set of further data bytes 908a to 910c4 (e.g., 15 data bytes), padding bytes 911, a CRC field 912 and an ACK/EOF field 914.

    [0113] The standard ID field 900 may comprise the address of the addressed slave device, preceded by a 2-bit code "01". The data bytes 904 and 906 may comprise an E2E protection control field.

    [0114] The data byte 908a (respectively, 908b, 908c) may comprise a first (respectively, second, third) OP code (operation code) and a first (respectively, second, third) address. The further data bytes 910a1 to 910a4 (respectively, 910b1 to 910b4, 910c1 to 910c4) may comprise the data to be stored at the respective memory addresses of the slave device. The unused padding bytes 911 to be transmitted to fill the number of bytes according to the DLC field may be filled with value FF16 for correct CRC calculation.

    [0115] In one or more embodiments, a slave device may answer to a burst-write request frame received by sending a burst-write response frame having a structure similar to that of a diagnosis response frame, as exemplified in Figure 10. By way of contrast with a diagnosis response frame, a burst-write response frame may not comprise data following the GSB byte. A burst-write response frame may thus comprise, as exemplified in Figure 10: a standard CAN FD ID field 1000, a control field CTRL 1002, a first data byte 1004 ("Data byte 1"), a second data byte 1006 ("Data byte 2"), a third data byte 1008 ("Data byte 3"), a fourth data byte 1009 ("Data byte 4"), a CRC field 1012 and an ACK/EOF field 1014.

    [0116] The standard ID field 1000 may comprise the address of the slave device which is sending the burst-write response message (e.g., a 9-bit address SLAVE[8:0]) preceded by a 2-bit code "00". The data bytes 1004 and 1006 may comprise an E2E protection control field. The third data byte 1008 may comprise an OP code (operation code) and an address. The fourth data byte 1009 may comprise a Global-Status-Byte (GSB).

    [0117] In one or more embodiments, multicast messages may be exchanged over the CAN bus. Multicast messages may comprise multicast data messages sent from the master device to a subset of slave devices (e.g., a particular chain) and broadcast command messages sent from the master device to all slave devices.

    [0118] A possible structure of a multicast data message is exemplified in Figure 11, and may comprise: a standard CAN FD ID field 1100 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 1102 (e.g., comprising 6 bits), a first data byte 1104 ("Data byte 1"), a second data byte 1106 ("Data byte 2"), a set of further data bytes 1110 (e.g., 62 data bytes, "Data byte 3" to "Data byte 64"), a CRC field 1112 and an ACK/EOF field 1114.

    [0119] The standard ID field 1100 may comprise an identification number of a chain of slaves to which the multicast data message is addressed (e.g., a 7-bit chain identifier CHAIN[6:0]) preceded by code "1111". Use of a 7-bit chain identifier allows the assignment of 128 chains with up to 62 members each. The data bytes 1104 and 1106 may comprise an E2E protection control field.

    [0120] In one or more embodiments, the MSB of the chain identifier CHAIN[6:0] may be used to identify different address spaces (e.g., different sets of memory locations) in the slaves to which the data belongs to. For example, a slave device may be assigned to chain b'000_0000. A multicast data message sent to chain b'000_0000 may assign data to one address space in the slave devices, while a multicast data message sent to chain b'100_0000 may assign data to a second address space in the same chain. Optionally, more than one MSB of the chain identifier CHAIN[6:0] may be used as address space indicator.

    [0121] In one or more embodiments, each slave device belonging to the addressed chain may pick its data from the data bytes 1110 transferred by the frame. The number of data bits addressed to each slave device may be defined by the implementation of the function. For instance, the chain a slave device belongs to and the position in a multicast message from which the slave device picks its data may be stored in a non-volatile memory of each slave device.

    [0122] Optionally, a multicast data message can be end-to-end protected.

    [0123] A possible structure of a broadcast command message is exemplified in Figure 12, and may comprise: a standard CAN FD ID field 1200 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 1202 (e.g., comprising 6 bits), a first data byte 1204 ("Data byte 1"), a second data byte 1206 ("Data byte 2"), a third data byte 1208 ("Data byte 3"), a set of further data bytes 1210 (e.g., 61 data bytes, "Data byte 4" to "Data byte 64"), a CRC field 1212 and an ACK/EOF field 1214.

    [0124] The standard ID field 1200 may comprise a dedicated identification code, e.g., "110_0110_0110". The data bytes 1204 and 1206 may comprise an E2E protection control field.

    [0125] A broadcast command message as exemplified in Figure 12 may send one or more commands to all slave devices, which may involve all devices to react on the same received message. For example, all slave devices may be commanded to enter a sleep mode after a go-to-sleep command. A next CAN FD frame may wake them up again. Another broadcast command message may be used to synchronize all slaves on the same CAN FD frame. The specific command may be encoded in the third data byte 1208 ("Data byte 3"), after the optional end-to-end protection bytes. The master device may not expect an answer from the slave devices upon sending broadcast command messages.

    [0126] Table III annexed to the present description is exemplary of possible commands transmitted by a broadcast command message.

    [0127] It is noted that data message handling functions as exemplified herein (e.g., end-to-end protection) may be used in any communication system. For instance, such functions may be used in CAN FD Light applications or in full CAN FD monolithic implementation. Alternatively, other communication protocols may be provided with such data message handling functions, e.g., a full monolithic integration of an Ethernet protocol (e.g., upcoming 10BASE-T1S).

    [0128] In one or more embodiments, a chain initialization broadcast frame may be sent to all slave devices to inform them about the chain they belong to and their position within this chain, so that each slave is able to pick the data intended for it from a multicast data message. The number of bits to pick may be the same for every slave, and defined at implementation.

    [0129] For instance, Figure 13 is exemplary of a structure of a chain initialization frame, comprising: a CAN FD ID field 1300 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 1302 (e.g., comprising 6 bits), a first data byte 1304 ("Data byte 1"), a second data byte 1306 ("Data byte 2"), a third data byte 1308 ("Data byte 3"), a set of further data bytes 1310 (e.g., 61 data bytes, "Data byte 4" to "Data byte 64"), a CRC field 1312 and an ACK/EOF field 1314. The ID field 1300 may comprise an ID identifying the chain initialization frame, such as "1_1110_000000". The first three data bytes 1304, 1306, 1308 may comprise the information addressed to a slave and useful to identify the chain it belongs to, its position in the chain and the addressed slave. For instance, the first data byte 1304 may comprise the identification number of a chain (e.g., a 7-bit number CHAIN[6:0]) followed by a "0". The second data byte 1306 may comprise the position of the slave in the chain (e.g., a 5-bit number POS[4:0]) followed by two zero values "00" and the MSB of the slave ID (e.g., SLAVE_ID[8]). The third data byte 1308 may comprise the remaining bits of the slave ID (e.g., SLAVE_ID[7:0]). The further data bytes 1310 may replicate, in groups of three, the structure of bytes 1304, 1306, 1308 for configuring other slaves in the chain. Therefore, with 64 data bytes in a chain initialization frame, twenty slave devices can be programmed in one CAN FD frame.

    [0130] Additionally or alternatively, in one or more embodiments the chain ID of a slave device may be stored in a non-volatile memory of the slave device at production.

    [0131] Optionally, a control bit may be provided in a slave device to switch between a first initialization mode, wherein the slave device is initialized upon receiving a chain initialization frame, and a second initialization mode, wherein the slave device is initialized based on data stored in the respective non-volatile memory at production.

    [0132] In certain cases, due to the frequency offset between a responding slave and the master, some other slaves may not be able to correctly receive frames sent by the master after a slave response issued on the bus. Thus, in one or more embodiments a synchronization frame may be sent to all slaves by the master, e.g., after each slave response message, to improve synchronization of all slave devices to the master device. The slave devices will synchronize on this frame and drop its content, insofar as the synchronization message may not contain an ID that the slave devices are able to recognize.

    [0133] For instance, Figure 14 is exemplary of a structure of a synchronization frame, comprising: a CAN FD ID field 1400 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 1402 (e.g., comprising 6 bits), a CRC field 1412 and an ACK/EOF field 1414. The ID field 1300 may comprise a corresponding ID such as "1_010_101_0101". The control field CTRL may be set to the value "001000". The DLC may be equal to 0000.

    [0134] In one or more embodiments, a sleep/wake-up feature may be implemented according to ISO 11898-2:2016 pattern wake-up.

    [0135] For instance, the slave devices may be all sent to a sleep mode by a broadcast command message as previously described with reference to Figure 12 and Table III.

    [0136] In one or more embodiments, all the slave devices in the network may be woken up by a wake-up pattern frame whose data in the payload satisfies the wake-up pattern requirements of ISO 11898-2 with TFilter(short) at 1 Mb/s. For lower bit rates, TFilter(long) may be used. The wake-up pattern may be repeated or enhanced in the optional additional data bytes of the wake-up pattern frame.

    [0137] For instance, Figure 15 is exemplary of a structure of a wake-up pattern frame, comprising: a CAN FD ID field 1500 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 1502 (e.g., comprising 6 bits), a first data byte 1504 ("Data byte 1"), a set of further optional data bytes 1510 (e.g., 7 data bytes, "Data byte 2" to "Data byte 8"), a CRC field 1512 and an ACK/EOF field 1314. The ID field 1500 may comprise a corresponding ID such as "1_000_011_1100". The control field CTRL may be set to the value "001000". The DLC may be equal to 1000. The slave devices may recognize a dominant-recessive-dominant pulse where the three individual frames are longer than a specified filter time. Thus, the data field of a wake-up pattern frame as exemplified in Figure 15 may be used to implement a bit pattern that satisfies this requirement. For instance, the first data byte 1504 may be equal to "1111_1110" and each of the remaining data bytes 1510 may be equal to "0000_1111".

    [0138] Optionally, selective wake-up/sleep frames may be implemented. A dedicated bit in the memory of each slave device may activate a selective sleep mode. Such dedicated bit may be programmed in the non-volatile memory of the slave device, fixed at production or configured by register access during operation. If selective sleep mode is activated, another bit in the memory may define if the slave enters sleep mode or stays awake upon receiving a "go to sleep" broadcast command message. Therefore, in one or more embodiments some slave devices may be set in a state in which they do not enter sleep mode. Possible applications of this feature may comprise, for instance, parking lights for a vehicle, which stay awake while the other drivers enter sleep mode.

    [0139] Therefore, in one or more embodiments, multicast wake-up frames may be configured to wake-up devices that are in selective sleep mode. Such selective wake-up frames may be implemented according to ISO 11898-2:2016 with the exception that a slave device wakes up only upon a SID equal to "10" followed by a wake-up frame ID (e.g., a 9-bit wake-up frame ID _WUFID[8:0]). Mask bits may not be supported and the selective wake-up frame may be a CAN FD frame. For each slave device supporting the selective wake-up functionality, a respective wake-up frame ID may be defined. In one or more embodiments, slave devices may be selectively woken up in groups by assigning the same wake-up frame ID to them. The wake-up frames may not be end-to-end protected.

    [0140] For instance, Figure 16 is exemplary of a structure of a selective wake-up frame, comprising: a CAN FD ID field 1600 (e.g., comprising 11 bits: SID[10:0]), a control field CTRL 1602 (e.g., comprising 6 bits), a CRC field 1612 and an ACK/EOF field 1614. The ID field 1600 may comprise a wake-up frame ID_WUFID[8:0] preceded by values "10".

    [0141] It is noted that data link layer functions as exemplified herein (e.g., synchronization frames, wake-up frames, selective sleep mode) may be used in any CAN or CAN FD system, e.g., in full CAN FD monolithic implementations. In general, the unicast request/response scheme is not restricted to a master-slave communication architecture. A unicast request may just request data from another device. Additionally, a unicast request may write data into a specific device. This may include, for instance, triggering a watchdog and/or expecting response data within a determined time interval.

    [0142] It is noted that, in one or more embodiments, one or more of the frames exemplified with reference to Figures 5 to 16 may comprise a data length code field (e.g., comprising 4 bits: DLC[3:0]). For instance, the data length code field may be located between a control field CTRL and the data bytes of the frame (e.g., a payload portion of the frame).

    [0143] Purely by way of example, Table IV annexed to the present description exemplifies possible messages exchanged in a bus communication network according to one or more embodiments.

    [0144] As exemplified herein, a method may comprise coupling a first device (e.g., 10) and a set of second devices (e.g., 201, ..., 20n) to a CAN communication bus (e.g., 30) via respective CAN transceiver circuits to exchange messages over the CAN communication bus. The method may comprise configuring the first device as a communication master device to transmit via the CAN communication bus first messages carrying a set of operation data message portions indicative of operations for implementation by second devices in the set of second devices, and second messages addressed to second devices in the set of second devices. The second messages may convey identifiers identifying respective ones of the second devices to which the second messages are addressed, requesting respective reactions towards the first device within respective expected reaction intervals. The method may comprise configuring the second devices in the set of second devices as communication slave devices to receive via the CAN communication bus the first messages transmitted from the first device configured as communication master device, read respective operation data message portions in said set of operation data message portions and implement respective operations as a function of the respective operation data message portions read, and to receive via the CAN communication bus the second messages transmitted from the first device configured as communication master device and react thereon within said respective expected reaction intervals by transmitting via the CAN communication bus reaction messages towards the first device configured as communication master device.

    [0145] As exemplified herein, a method may comprise configuring said respective CAN transceiver circuits to (e.g., selectively) set the CAN communication bus to a recessive level (e.g., a logic 1) during transmission of said messages via the CAN communication bus by the respective first device or second device.

    [0146] As exemplified herein, a method may comprise configuring said respective CAN transceiver circuits to operate in a data transmission operation mode (e.g., a mode used during the data phase of a CAN frame) during transmission of said messages via the CAN communication bus by the respective first device or second device.

    [0147] As exemplified herein, said first messages sent by the first device may comprise synchronization messages indicative of a clock synchronization operation for implementation by the second devices in the set of second devices. The synchronization messages may convey a respective synchronization identifier, and the method may comprise configuring the first device to transmit via the CAN communication bus a synchronization message in response to a reaction message transmitted by a second device in the set of second devices being received at the first device, and configuring the second devices in the set of second devices to synchronize respective clock signals in response to a synchronization message being received.

    [0148] As exemplified herein, a method may comprise:

    enabling the second devices in the set of second devices to selectively switch between an active state and an inactive state as a function of at least one respective sleep mode configuration bit stored in a respective memory of the second device,

    configuring said first device to transmit via the CAN communication bus de-activation messages for de-activating the second devices in the set of second devices,

    configuring the second devices in the set of second devices to switch to said inactive state in response to a de-activation message being received and as a function of said at least one respective sleep mode configuration bit,

    configuring said first device to transmit via the CAN communication bus activation messages for activating the second devices in the set of second devices, and

    configuring the second devices in the set of second devices to switch to said active state in response to an activation message being received.



    [0149] As exemplified herein, said activation messages may convey a payload portion comprising a dominant-recessive-dominant pulse (e.g., e.g., according to ISO11898-2).

    [0150] As exemplified herein, a method may comprise configuring said first device to transmit via the CAN communication bus selective wake-up messages waking-up respective subsets of second devices in the set of second devices. A selective wake-up message may convey a respective selective wake-up identifier (e.g., 1600) indicative of a subset of second devices in the set of second devices to which it is addressed. The method may comprise configuring said subsets of second devices in the set of second devices to switch to said active state in response to a respective selective wake-up message being received.

    [0151] As exemplified herein, a method may comprise configuring said first device to transmit via the CAN communication bus first messages including a synchronization command for implementation by the second devices in the set of second devices.

    [0152] As exemplified herein, a method may comprise including in said messages exchanged over the CAN communication bus respective identification fields carrying an identification string selected out of a set of identification strings, the identification string being indicative of an originator device which originates the message and at least one destination device to which the message is addressed. The method may comprise configuring the first device to count a respective number of messages sent by the first device having a respective identification string, and include said respective count number in the messages sent by the first device having said respective identification string. The method may comprise configuring the second devices in the set of second devices to process a subset of said messages exchanged via the communication bus as a function of the respective identification string, compare (e.g., 410, 412, 414) said respective count number included in a received message having a respective identification string to a previously stored count number included in a previously received message having said respective identification string, produce (e.g., 424, 426) a global error count as a function of said comparing, compare (e.g., 428) said global error count to a threshold error value, and enter (e.g., 430) a fail-safe mode in response to the global error count being higher than said threshold error value.

    [0153] As exemplified herein, a method may comprise configuring the second devices in the set of second devices to count a number of messages sent by the second device having a respective identification string, and include said respective count number in the messages sent by a second device in the set of second devices having said respective identification string. The method may comprise configuring the first device to process a subset of said messages exchanged via the communication bus as a function of the respective identification string, compare said respective count number included in a received message having a respective identification string to a previously stored count number included in a previously received message having said respective identification string, produce a global error count as a function of said comparing, compare said global error count to a threshold error value, and react in response to the global error count being higher than said threshold error value.

    [0154] As exemplified herein, said global error count may comprise a respective difference computed, for each identification string in a subset of identification strings, between the count number included in a received message having said respective identification string and the previously stored count number included in a previously received message having said respective identification string. The global error count may comprise an increase in said global count number as a result of said computed difference being equal to zero, and/or said computed difference being higher than a threshold difference value.

    [0155] As exemplified herein, a method may comprise configuring the first device and the second devices in the set of second devices to transmit end-to-end protected messages. An end-to-end protected message may comprise a control field (e.g., 204, 206, 208) having a control value stored therein, the control value comprising said respective message count number (e.g., 208), a portion of the identification string of the end-to-end protected message (e.g., 206), and a respective CRC value (e.g., 204).

    [0156] As exemplified herein, a method may comprise computing said respective CRC value as a function of said identification string, said message count number and data carried in a payload section of said end-to-end protected message.

    [0157] As exemplified herein, a method may comprise configuring said second devices in the set of second devices to ignore a received message as a result of the CRC value stored in the control value of the received message being different from a CRC value computed by the at least one second device, and/or the portion of the identification string of the received message stored in the control field of the received message being different from the corresponding portion of the identification string of the received message stored in the identification field of the received message.

    [0158] As exemplified herein, said second messages addressed to second devices in the set of second devices may comprise burst-write request messages. A burst-write request message may comprise a set of memory addresses (e.g., 908a, ..., 908c) indicative of memory locations in a memory of said respective second device to which the burst-write request message is addressed, and a respective set of data bytes (e.g., 910a1, ..., 910c4) to be stored at said memory locations. A method may comprise configuring said respective second device to which the burst-write request message is addressed to store said data bytes at said memory locations and transmit a burst-write response message as a result of receiving a burst-write request message.

    [0159] As exemplified herein, said second messages addressed to second devices in the set of second devices may comprise burst-read request messages. A burst-read request message may comprise a set of memory addresses indicative of memory locations in a memory of a respective second device to which the burst-read request message is addressed. A method may comprise configuring said second devices in the set of second devices to transmit a burst-read response message as a result of receiving a burst-read request message. A burst-read response message may comprise a respective set of data bytes (e.g., 810a1, ..., 810c4) retrieved from said memory locations.

    [0160] As exemplified herein, a system may comprise a first device and a set of second devices coupled via respective CAN transceiver circuits to a CAN communication bus. The first device and the second devices may be configured as master device and slave devices, respectively, the master device and the slave devices configured to operate with the method of one or more embodiments.

    [0161] As exemplified herein, a device (e.g., 10) may comprise a CAN transceiver circuit configured for coupling the device as a first device to a set of second devices via a CAN communication bus. The device may be configured to transmit via the CAN communication bus first messages carrying a set of operation data message portions indicative of operations for implementation by second devices in the set of second devices, and second messages addressed to second devices in the set of second devices, the second messages conveying identifiers identifying respective ones of the second devices to which the second messages are addressed requesting respective reactions towards the first device within respective expected reaction intervals. Said CAN transceiver circuit may be configured to (e.g., selectively) set the CAN communication bus to a recessive level during transmission of said messages via the CAN communication bus by the device.

    [0162] As exemplified herein, a device (e.g., 20) may comprise a CAN transceiver circuit configured for coupling the device as a second device to a first device via a CAN communication bus. The device may be configured to receive via the CAN communication bus the first messages transmitted from the first device configured as communication master device, read respective operation data message portions in said set of operation data message portions and implement respective operations as a function of the respective operation data message portions read, and receive via the CAN communication bus the second messages transmitted from the first device configured as communication master device and react thereon within said respective expected reaction intervals by transmitting via the CAN communication bus reaction messages towards the first device configured as communication master device. Said CAN transceiver circuit may be configured to (e.g., selectively) set the CAN communication bus to a recessive level during transmission of said messages via the CAN communication bus by the device.

    [0163] As exemplified herein, a vehicle (e.g., V) may be equipped with a system according to one or more embodiments.

    [0164] Without prejudice to the underlying principles, the details and embodiments may vary, even significantly, with respect to what has been described by way of example only, without departing from the extent of protection.

    [0165] The extent of protection is determined by the annexed claims.
    Table I
    PropertyValue
    CRC result width 8 bits
    Polynomial 1D16
    Initial value 0016
    Input data reflected No
    Result data reflected No
    XOR value 0016
    Check 3716
    Magic Check 0016
    Table II
    E2E MechanismDetected communication faults
    Counter Repetition
    Loss
    Insertion
    Incorrect sequence
    Blocking
    Transmission on a regular basis and timeout monitoring using E2E-Supervision (including watchdog) Loss
    Delay
    Blocking
    Data ID + CRC Masquerade and incorrect addressing Insertion
    CRC Corruption
    Asymmetric information
    Table III
    CommandCommand byte valueRemark
    Go to sleep 01H Sends all devices on the bus to sleep
    Synchronize PWM 02H Resets all PWM counters in all devices
    Table IV
    SIDFrame TypeE2E Protection (Optional)PurposeRemark
    {"01", Slave ID[8:0]} Unicast Frame Yes Master: Diagnosis Request ST SPI Protocol in data field
    {"00", Slave ID[8:0]} Unicast Frame Yes Slave: Diagnosis Response ST SPI Protocol in data field
    {"1111", chain#[6:0]} Multicast Frame Yes Send multicast data to a specific chain of devices Chain members pick their data from the data field
    "110_0110_0110" DLC = "xxxx" Broadcast Frame Yes Sends a command to all devices on the bus Broadcast frame to send defined commands to all devices on the bus (e.g., PWM synchronization or go-to-sleep)
    "001_1100_0111" DLC = "xxxx" Broadcast Frame No Wake-Up Pattern Reserved SID. Frames with this SID are ignored.
    {"10", WUF ID [8:0]} DLC = "0000" Multicast Frame No Wake-up Frame (WUF) Dedicated SID. Can be the same for a plurality of devices.



    Claims

    1. A method, comprising:

    coupling a first device (10) and a set of second devices (201, ..., 20n) to a CAN communication bus (30) via respective CAN transceiver circuits to exchange messages over the CAN communication bus (30),

    configuring the first device (10) as a communication master device to transmit via the CAN communication bus (30):

    a) first messages carrying a set of operation data message portions indicative of operations for implementation by second devices in the set of second devices (201, ..., 20n), and

    b) second messages addressed to second devices in the set of second devices (201, ..., 20n), the second messages conveying identifiers identifying respective ones of the second devices (201, ..., 20n) to which the second messages are addressed requesting respective reactions towards the first device (10) within respective expected reaction intervals, and

    configuring the second devices in the set of second devices (201, ..., 20n) as communication slave devices:

    c) to receive via the CAN communication bus (30) the first messages transmitted from the first device (10) configured as communication master device, read respective operation data message portions in said set of operation data message portions and implement respective operations as a function of the respective operation data message portions read,

    d) to receive via the CAN communication bus (30) the second messages transmitted from the first device (10) configured as communication master device and react thereon within said respective expected reaction intervals by transmitting via the CAN communication bus (30) reaction messages towards the first device (10) configured as communication master device,

    the method comprising configuring said respective CAN transceiver circuits to set the CAN communication bus (30) to a recessive level during transmission of said messages via the CAN communication bus (30) by the respective first device (10) or second device (201, ..., 20n).


     
    2. The method of claim 1, comprising configuring said respective CAN transceiver circuits to operate in a data transmission operation mode during transmission of said messages via the CAN communication bus (30) by the respective first device (10) or second device (201, ..., 20n).
     
    3. The method of claim 1 or claim 2, wherein said first messages sent by the first device (10) comprise synchronization messages indicative of a clock synchronization operation for implementation by the second devices in the set of second devices (201, ..., 20n), wherein the synchronization messages convey a respective synchronization identifier (1400), the method comprising:

    configuring the first device (10) to transmit via the CAN communication bus (30) a synchronization message in response to a reaction message transmitted by a second device in the set of second devices (201, ..., 20n) being received at the first device (10), and

    configuring the second devices in the set of second devices (201, ..., 20n) to synchronize respective clock signals in response to a synchronization message being received.


     
    4. The method of any of the previous claims, comprising:

    enabling the second devices in the set of second devices (201, ..., 20n) to selectively switch between an active state and an inactive state as a function of at least one respective sleep mode configuration bit stored in a respective memory of the second device,

    configuring said first device (10) to transmit via the CAN communication bus (30) de-activation messages for de-activating the second devices in the set of second devices (201, ..., 20n),

    configuring the second devices in the set of second devices (201, ..., 20n) to switch to said inactive state in response to a de-activation message being received and as a function of said at least one respective sleep mode configuration bit,

    configuring said first device (10) to transmit via the CAN communication bus (30) activation messages for activating the second devices in the set of second devices (201, ..., 20n),

    configuring the second devices in the set of second devices (201, ..., 20n) to switch to said active state in response to an activation message being received,

    wherein said activation messages convey a payload portion comprising a dominant-recessive-dominant pulse.


     
    5. The method of claim 4, comprising:

    configuring said first device (10) to transmit via the CAN communication bus (30) selective wake-up messages waking-up respective subsets of second devices in the set of second devices (201, ..., 20n), wherein a selective wake-up message conveys a respective selective wake-up identifier (1600) indicative of a subset of second devices in the set of second devices (201, ..., 20n) to which it is addressed, and

    configuring said subsets of second devices in the set of second devices (201, ..., 20n) to switch to said active state in response to a respective selective wake-up message being received.


     
    6. The method of any of the previous claims, comprising configuring said first device (10) to transmit via the CAN communication bus (30) first messages including a synchronization command for implementation by the second devices in the set of second devices (201, ..., 20n).
     
    7. The method of any of the previous claims, comprising:

    including in said messages exchanged over the CAN communication bus (30) respective identification fields carrying an identification string selected out of a set of identification strings, the identification string being indicative of an originator device which originates the message and at least one destination device to which the message is addressed,

    configuring the first device (10) to count a respective number of messages sent by the first device (10) having a respective identification string, and include said respective count number in the messages sent by the first device (10) having said respective identification string, and

    configuring the second devices in the set of second devices (201, ..., 20n) to:

    process a subset of said messages exchanged via the CAN communication bus (30) as a function of the respective identification string,

    compare (410, 412, 414) said respective count number included in a received message having a respective identification string to a previously stored count number included in a previously received message having said respective identification string,

    produce (424, 426) a global error count as a function of said comparing (410, 412, 414),

    compare (428) said global error count to a threshold error value, and

    enter (430) a fail-safe mode in response to the global error count being higher than said threshold error value.


     
    8. The method of claim 7, comprising:

    configuring the second devices in the set of second devices (201, ..., 20n) to count a number of messages sent by the second device (201, ..., 20n) having a respective identification string, and include said respective count number in the messages sent by a second device in the set of second devices (201, ..., 20n) having said respective identification string, and

    configuring the first device (10) to:

    process a subset of said messages exchanged via the CAN communication bus (30) as a function of the respective identification string,

    compare (410, 412, 414) said respective count number included in a received message having a respective identification string to a previously stored count number included in a previously received message having said respective identification string,

    produce (424, 426) a global error count as a function of said comparing (410, 412, 414),

    compare (428) said global error count to a threshold error value, and

    react in response to the global error count being higher than said threshold error value.


     
    9. The method of claim 7 or claim 8, wherein said global error count comprises:

    a respective difference computed (412, 414), for each identification string in a subset of identification strings, between the count number included in a received message having said respective identification string and the previously stored count number included in a previously received message having said respective identification string,

    an increase in said global count number as a result of said computed difference being equal to zero, and/or said computed difference being higher than a threshold difference value.


     
    10. The method of any of claims 7 to 9, comprising configuring the first device (10) and the second devices in the set of second devices (201, ..., 20n) to transmit end-to-end protected messages, wherein an end-to-end protected message comprises a control field (204, 206, 208) having a control value stored therein, the control value comprising said respective message count number (208), a portion of the identification string of the end-to-end protected message (206), and a respective CRC value (204).
     
    11. The method of claim 10, comprising computing said respective CRC value (204) as a function (306) of said identification string, said message count number and data carried in a payload section (210) of said end-to-end protected message.
     
    12. The method of claim 10 or claim 11, comprising configuring said second devices in the set of second devices (201, ..., 20n) to ignore a received message as a result of:

    the CRC value (204) stored in the control value of the received message being different from a CRC value computed by the at least one second device (201, ..., 20n), and/or

    the portion (206) of the identification string of the received message stored in the control field of the received message being different from the corresponding portion (200) of the identification string of the received message stored in the identification field of the received message.


     
    13. The method of any of the previous claims, wherein said second messages addressed to second devices in the set of second devices (201, ..., 20n) comprise burst-write request messages, wherein a burst-write request message comprises:

    a set of memory addresses (908a, ..., 908c) indicative of memory locations in a memory of said respective second device to which the burst-write request message is addressed, and

    a respective set of data bytes (910a1, ..., 910c4) to be stored at said memory locations,

    the method comprising configuring said respective second device to which the burst-write request message is addressed to store said data bytes at said memory locations and transmit a burst-write response message as a result of receiving a burst-write request message.


     
    14. The method of any of the previous claims, wherein said second messages addressed to second devices in the set of second devices (201, ..., 20n) comprise burst-read request messages, wherein a burst-read request message comprises a set of memory addresses indicative of memory locations in a memory of a respective second device to which the burst-read request message is addressed,
    the method comprising configuring said second devices in the set of second devices (201, ..., 20n) to transmit a burst-read response message as a result of receiving a burst-read request message, wherein a burst-read response message comprises a respective set of data bytes (810ai, ..., 810c4) retrieved from said memory locations.
     
    15. A system comprising a first device (10) and a set of second devices (201, ..., 20n) coupled via respective CAN transceiver circuits to a CAN communication bus (30), wherein the first device (10) and the second devices (201, ..., 20n) are configured as master device and slave devices, respectively, the master device and the slave devices configured to operate with the method of any of claims 1 to 14.
     
    16. A device (10) comprising a CAN transceiver circuit configured for coupling the device (10) as a first device to a set of second devices (201, ..., 20n) via a CAN communication bus (30), the device (10) configured to transmit via the CAN communication bus (30):

    first messages carrying a set of operation data message portions indicative of operations for implementation by second devices in the set of second devices (201, ..., 20n), and

    second messages addressed to second devices in the set of second devices (201, ..., 20n), the second messages conveying identifiers identifying respective ones of the second devices (201, ..., 20n) to which the second messages are addressed requesting respective reactions towards the first device (10) within respective expected reaction intervals,

    wherein said CAN transceiver circuit is configured to set the CAN communication bus (30) to a recessive level during transmission of said messages via the CAN communication bus (30) by the device (10).


     
    17. A device comprising a CAN transceiver circuit configured for coupling the device as a second device to a first device (10) via a CAN communication bus (30), the device configured to:

    receive via the CAN communication bus (30) the first messages transmitted from the first device (10) configured as communication master device, read respective operation data message portions in said set of operation data message portions and implement respective operations as a function of the respective operation data message portions read,

    receive via the CAN communication bus (30) the second messages transmitted from the first device (10) configured as communication master device and react thereon within said respective expected reaction intervals by transmitting via the CAN communication bus (30) reaction messages towards the first device (10) configured as communication master device,

    wherein said CAN transceiver circuit is configured to set the CAN communication bus (30) to a recessive level during transmission of said messages via the CAN communication bus (30) by the device.


     
    18. A vehicle (V) equipped with a system according to claim 15.
     




    Drawing
















    Search report









    Search report




    Cited references

    REFERENCES CITED IN THE DESCRIPTION



    This list of references cited by the applicant is for the reader's convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard.

    Patent documents cited in the description




    Non-patent literature cited in the description