0
\$\begingroup\$

The end-of-frame consists of 7 recessive bits. It is often written that it is used to detect stuffing errors by a receiver. I also read that if the 7th bit is driven to dominant level, the transmitter is detecting this as an error? However, it was not written who puts the 7th bit to the dominant level.

I have two questions:

  1. Why can I detect stuffing errors with the end-of-frame?
  2. Is the 7th bit a NACK send by the receivers if a stuffing error happend?
\$\endgroup\$

1 Answer 1

0
\$\begingroup\$

The question is... the 7th bit in time (LSB) or first bit in time (MSB)?

If the sender sends several 1's without stuffing bits, this looks like a premature EOF. Since the receivers know how many bytes to expect, they will notice this error on the 6th bit, and can drive the line to 0 on the 7th bit. This then looks like a EOF with a 0 in the LSB.

If any receiver receives a message correctly, it will drive the first ACKN bit to dominant 0. So, this 0 means that at least one receiver received the message correctly. But receivers which did not, are not heard. They will wait for the second ACKN bit, which is always 1, and then send a 0. This bit is the MSB of the EOF.

\$\endgroup\$
1
  • \$\begingroup\$ "Another overload condition is the detection of a dominant bit-level in the 7th bit of the EOF (end of frame) by a receiving node. A transmitting node interprets a dominant bit at the last bit of the EOF as an error condition and retransmits it. Because the receiving nodes have already accepted the message as correct with the 6th bit of the EOF, they receive it twice. " Source: can-cia.org/can-knowledge/can/can-data-link-layers \$\endgroup\$
    – user674907
    Commented Aug 11, 2021 at 9:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.