Defining the Data
The first thing to come through at the new bit rate is the DLC. In CAN or CAN FD, the DLC was limited to 4 bits. CAN CC supports DLC values of 0 to 15. Values of 8 and above still represent 8 data bytes allowing for a range of 0 to 8 data bytes. CAN FD supports values of 0 to 8 as well as the fixed values listed allowing for a range of 0 to 8, 12, 16, 20, 24, 32, 48, and 64 bytes of data. Unlike these previous versions of the protocol, CAN XL has an 11-bit DLC. This 11-bit value can represent 0 to 2047, allowing for a range of 1 to 2048 bytes of data.
Bigger data loads demand a bigger Cyclic Redundancy Check (CRC). And since we are relying on the DLC to inform how many bits the CRC will need, we must ensure the DLC is correct. To protect the DLC, we have a Stuffed Bit Counter (SBC) and a CRC, the Preface Cyclic Redundancy Check (PCRC), for the first part of the message to ensure there is no error in the DLC.
With the size of the data established, it is time to define some other characteristics. The following six bytes, while usable as any data and can be redefined for other purposes, the standard does offer definitions of the purpose of these bytes for some higher layer protocols. SDT represents the type of information in the data bytes such as J1939, CANopen, or perhaps Ethernet information.
The next byte is the Virtual CAN Network ID. The VCID can act as a domain, allowing you to have up to 256 logical networks on the same physical bus. This can be for messages of different higher layer protocols for example.
The remaining four bytes make up the 32-bit Acceptance Field. This can be used for content-based addressing and node-based addressing. For example, in J1939, instead of having the destination address in the extended 29-bit CAN ID, in a CAN XL message, the destination address would go here, in the Acceptance Field.
And after all of this, we are ready to receive our data.