richjhart
richjhart

Reputation: 356

Does a stuffing bit in CAN count towards the next stuffing group

If you have a sequence of bits in CAN data:

011111000001

There will need to be a stuffed 0 after the ones, and a stuffed 1 after the 0s. But I'm not sure where the 1 should go.

The standard seems ambiguous to me because sometimes it talks about "5 consecutive bits during normal operation", but sometimes it says "5 consecutive bits of data". Does a stuffing bit count as data?

i.e.

should it be:

01111100000011

Or

01111100000101

Upvotes: 3

Views: 885

Answers (2)

Lundin
Lundin

Reputation: 213892

From the old Bosch CAN2.0B spec, chapter 5:

The frame segments START OF FRAME, ARBITRATION FIELD, CONTROL FIELD, DATA FIELD and CRC SEQUENCE are coded by the method of bit stuffing.

Meaning everything from the start of the frame to the 15 bit CRC can have bit stuffing, but not the 1 bit CRC delimiter and the rest of the frame.

Whenever a transmitter detects five consecutive bits in the bit stream to be transmitted

This "bit stream" refers to all the fields mentioned in the previously quoted sentence.

...in the actual transmitted bit stream

The actual transmitted bit stream is the original data + appended stuffing bit(s).

Upvotes: 0

mspiller
mspiller

Reputation: 3839

Bit stuffing only applies to the CAN frame until the ACK-bit. In the End-Of-Frame and Intermission fields, no bit stuffing is applied.

It does not matter what is transmitted.

It is simply "after 5 consecutive bits of the same value" one complementary bit is inserted.

The second of your examples is correct. 6 consecutive bits make the message invalid.

Upvotes: 2

Related Questions