Every ECU connected on CAN network can broadcast 4 types of frames on Bus –
1. Data Frame
2. Remote Frame
3. Error Frame
4. Overload Frame
Data frames are the actual frames which used by a node for data transmission either in extended frame format or in the standard format, it all depends on the CAN network configuration.
In Above Table ,RTR bit must be 0 for DATA frame transmission.
DATA Frame Example
Suppose an ECU wants to send 1-byte data 0x02 in standard CAN format with Identifier 0x02F on CAN Bus then how will Data Frame look on CAN Bus-
Note: Data frame format in extended CAN will be same as standard except for Arbitration field. Data frame Identifier field in Standard CAN is of 11-bit length while for Extended it is a 29-bit identifier.
Any Node can broadcast its information any time or periodically at CAN line but sometimes an ECU can also request to another ECU present on CAN Bus for data frame if required. This request for Data Frame is done through Remote Frame.
`1. For Remote Frame, Data field will not be the part of remote frame.
2. For Remote Frame ,RTR field must be recessive(1).
3. In Remote Frame, no data field But DLC field will exist as it shows the requested data size.
Now how will look a remote Frame if an ECU request for 1-byte data with Identifier 0x02F –
According to CAN standard, only 5 consecutive bits of the same polarity between SOF and CRC field of a message allowed on CAN Bus but if any ECU wants to send more than 5 Consecutive then they must follow the bit stuffing Concept otherwise receiving nodes detects it as a faulty or corrupted message and transmit an error message.
An error frame has two fields according to CAN standard-
1. Error Flag(6-12 dominant/recessive bits)
2. Error Delimiter(8 recessive bits)
Error Flag may be dominant or recessive, it all depends on the error type. We will see in detail in the Error Detection and Fault Confinement chapter.
It is very similar to Error Frame in format and it is transmitted by any node to buy some time if it is too busy so that it can complete its pending task. It is not used in today’s controller because it’s handling is done through H/W.
Because of very much similarities between Error And Overload Frame, it would be tough to differentiate sometime. Keep in mind that overload frame always starts after inter-frame space(Message Completion) while the error frame doesn’t wait for message completion, Any Node which detects error first starts transmission of error frame in the next bit cycle.